diff --git a/src/routes/apiRoutes.js b/src/routes/apiRoutes.js index 1559124..346572b 100644 --- a/src/routes/apiRoutes.js +++ b/src/routes/apiRoutes.js @@ -3,6 +3,7 @@ const uuid = require("uuid"); const SessionNpubbed = require('../models/SessionNpubbed'); const InvitedNpub = require('../models/InvitedNpub'); +const AppInvite = require('../models/AppInvite'); const router = express.Router(); @@ -47,6 +48,22 @@ router.post('/invited-npub', async (req, res) => { const inviteUuid = req.cookies.inviteUuid; const npub = req.body.npub; + const invite = await AppInvite.findOne({ where: { uuid: inviteUuid } }); + + if (!invite) { + return res.status(404).render('error', { message: 'Invite not found' }); + } + + const isInviteSpent = await InvitedNpub.findOne({ + where: { + app_invite_uuid: inviteUuid + } + }) + + if (isInviteSpent) { + return res.render('invite_spent', { invite }) + } + await InvitedNpub.create({ uuid: uuid.v7(), app_invite_uuid: inviteUuid, diff --git a/src/routes/webRoutes.js b/src/routes/webRoutes.js index be63cfc..4fd2d91 100644 --- a/src/routes/webRoutes.js +++ b/src/routes/webRoutes.js @@ -2,6 +2,7 @@ const express = require('express'); const router = express.Router(); const AppInvite = require('../models/AppInvite'); +const InvitedNpub = require('../models/InvitedNpub'); router.get('/', (req, res) => { res.render('index', { uuid: req.cookies.sessionUuid }); @@ -19,6 +20,16 @@ router.get('/invite/:inviteUuid', async (req, res) => { return res.status(404).render('error', { message: 'Invite not found' }); } + const isInviteSpent = await InvitedNpub.findOne({ + where: { + app_invite_uuid: inviteUuid + } + }) + + if (isInviteSpent) { + return res.render('invite_spent', { invite }) + } + return res.render('invite', { invite }); } catch (error) { diff --git a/src/views/invite_spent.ejs b/src/views/invite_spent.ejs new file mode 100644 index 0000000..e5d704e --- /dev/null +++ b/src/views/invite_spent.ejs @@ -0,0 +1,20 @@ + + + +
+Invite UUID: <%= invite.uuid %> +
+