diff options
author | Raphael <mail@raphaelkabo.com> | 2024-02-25 21:27:13 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-25 21:27:13 +0000 |
commit | 7ff0bebd9fbdf1c982d7cc42a7057d36a3e2486a (patch) | |
tree | 05b1d8b1d63baed174883cc96807051e530969a2 /src/routes/frontend.ts | |
parent | b17238eb2840553c69fc2dae168be557afbcee9c (diff) | |
parent | cd0f291eb1a608589fcc2c1875fa7099ed8e2c51 (diff) |
Merge pull request #133 from lowercasename/rk/restricted-event-creation
Optionally restrict event creation to specific email addresses
Diffstat (limited to 'src/routes/frontend.ts')
-rw-r--r-- | src/routes/frontend.ts | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/routes/frontend.ts b/src/routes/frontend.ts index 8ddfbf6..0d8793a 100644 --- a/src/routes/frontend.ts +++ b/src/routes/frontend.ts @@ -10,6 +10,7 @@ import { acceptsActivityPub, activityPubContentType, } from "../lib/activitypub.js"; +import MagicLink from "../models/MagicLink.js"; const config = getConfig(); @@ -19,9 +20,40 @@ router.get("/", (_: Request, res: Response) => { }); router.get("/new", (_: Request, res: Response) => { + if (config.general.creator_email_addresses?.length) { + return res.render("createEventMagicLink", frontendConfig()); + } + return res.render("newevent", { + title: "New event", + ...frontendConfig(), + }); +}); + +router.get("/new/:magicLinkToken", async (req: Request, res: Response) => { + // If we don't have any creator email addresses, we don't need to check the magic link + // so we can just redirect to the new event page + if (!config.general.creator_email_addresses?.length) { + return res.redirect("/new"); + } + const magicLink = await MagicLink.findOne({ + token: req.params.magicLinkToken, + expiryTime: { $gt: new Date() }, + permittedActions: "createEvent", + }); + if (!magicLink) { + return res.render("createEventMagicLink", { + ...frontendConfig(), + message: { + type: "danger", + text: "This magic link is invalid or has expired. Please request a new one here.", + }, + }); + } res.render("newevent", { title: "New event", ...frontendConfig(), + magicLinkToken: req.params.magicLinkToken, + creatorEmail: magicLink.email, }); }); |