selfhostable, read-only reddit client
at main 827 B view raw
1const { db } = require("./db"); 2 3const validateInviteToken = async (req, res, next) => { 4 const isFirstUser = db.query("SELECT 1 FROM users LIMIT 1").get() === null; 5 6 if (isFirstUser) { 7 req.isFirstUser = true; 8 next(); 9 return; 10 } 11 12 const token = req.query.token; 13 14 if (!token) { 15 return res.render("register", { 16 message: "this instance requires an invite", 17 isDisabled: true, 18 }); 19 } 20 21 const invite = db 22 .query("SELECT * FROM invites WHERE token = $token") 23 .get({ token }); 24 25 if (!invite) { 26 return res.render("register", { 27 message: "this invite token is invalid", 28 isDisabled: true, 29 }); 30 } 31 32 if (invite.usedAt) { 33 return res.render("register", { 34 message: "this invite has been claimed", 35 isDisabled: true, 36 }); 37 } 38 39 req.invite = invite; 40 next(); 41}; 42 43module.exports = { 44 validateInviteToken, 45};