diff --git a/src/middlewares/authMiddleware.js b/src/middlewares/authMiddleware.js deleted file mode 100644 index b894b68..0000000 --- a/src/middlewares/authMiddleware.js +++ /dev/null @@ -1,10 +0,0 @@ -const sessionService = require('../services/sessionService'); - -async function rejectIfNotAuthorizedMiddleware(req, res, next) { - if (!await sessionService.isSessionAuthorized(req.cookies.sessionUuid)) { - res.redirect('/'); - } - next(); -} - -module.exports = rejectIfNotAuthorizedMiddleware; diff --git a/src/middlewares/redirectIfNotAuthorizedMiddleware.js b/src/middlewares/redirectIfNotAuthorizedMiddleware.js new file mode 100644 index 0000000..04715c9 --- /dev/null +++ b/src/middlewares/redirectIfNotAuthorizedMiddleware.js @@ -0,0 +1,10 @@ +const sessionService = require('../services/sessionService'); + +async function redirectIfNotAuthorizedMiddleware(req, res, next) { + if (!(await sessionService.isSessionAuthorized(req.cookies.sessionUuid))) { + res.redirect('/'); + } + next(); +} + +module.exports = redirectIfNotAuthorizedMiddleware; diff --git a/src/middlewares/sessionMiddleware.js b/src/middlewares/sessionMiddleware.js index 0fe3d32..a6813a6 100644 --- a/src/middlewares/sessionMiddleware.js +++ b/src/middlewares/sessionMiddleware.js @@ -6,7 +6,7 @@ const constants = require('../constants'); async function setAndPersistNewSession(res) { const sessionUuid = uuid.v7(); res.cookie('sessionUuid', sessionUuid, { httpOnly: true, maxAge: constants.DEFAULT_SESSION_DURATION_SECONDS * 1000 }); - await sessionService.createSession(sessionUuid); + return await sessionService.createSession(sessionUuid); } async function createSessionMiddleware(req, res, next) { @@ -17,14 +17,17 @@ async function createSessionMiddleware(req, res, next) { if (!sessionUuid) { console.log("Found no cookie") - await setAndPersistNewSession(res); + const newSession = await setAndPersistNewSession(res); + req.cookies.sessionUuid = newSession.uuid; + } if (sessionUuid) { console.log(`Found a cookie ${sessionUuid}`) if (!(await sessionService.isSessionValid(sessionUuid))) { console.log("But it's not valid") - await setAndPersistNewSession(res); + const newSession = await setAndPersistNewSession(res); + req.cookies.sessionUuid = newSession.uuid; } } diff --git a/src/public/javascript/createProfile.js b/src/public/javascript/createProfile.js new file mode 100644 index 0000000..e69de29 diff --git a/src/public/javascript/invite.js b/src/public/javascript/invite.js index ca21bda..5fcd4d8 100644 --- a/src/public/javascript/invite.js +++ b/src/public/javascript/invite.js @@ -62,5 +62,8 @@ async function acceptInvite() { if (verifyResponse.ok) { document.querySelector('#sign-up-success').style.display = 'block'; + setTimeout(() => { + window.location.href = "/createProfile"; + }, 1000); } } \ No newline at end of file diff --git a/src/routes/webRoutes.js b/src/routes/webRoutes.js index 4fa5ecd..3598708 100644 --- a/src/routes/webRoutes.js +++ b/src/routes/webRoutes.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const authMiddleware = require('../middlewares/authMiddleware'); +const redirectIfNotAuthorizedMiddleware = require('../middlewares/redirectIfNotAuthorizedMiddleware'); const invitesService = require('../services/invitesService') router.get('/', (req, res) => { @@ -56,7 +56,11 @@ router.get('/invite/:inviteUuid', async (req, res) => { return res.render('invite', { invite }); }); -router.get('/private', authMiddleware, (req, res) => { +router.get('/createProfile', redirectIfNotAuthorizedMiddleware, async (req, res) => { + return res.status(200).render('createProfile'); +}) + +router.get('/private', redirectIfNotAuthorizedMiddleware, (req, res) => { res.render('private', {}); }); diff --git a/src/services/sessionService.js b/src/services/sessionService.js index bdd601d..4542630 100644 --- a/src/services/sessionService.js +++ b/src/services/sessionService.js @@ -12,7 +12,7 @@ async function createSession(sessionUuid) { const expiryTimestamp = new Date(currentTimestamp.getTime()); expiryTimestamp.setSeconds(expiryTimestamp.getSeconds() + constants.DEFAULT_SESSION_DURATION_SECONDS); - await SessionCreated.create({ + return await SessionCreated.create({ uuid: sessionUuid, created_at: currentTimestamp.toISOString(), expires_at: expiryTimestamp.toISOString() @@ -55,8 +55,25 @@ async function relateSessionToPublicKey(sessionUuid, publicKey) { }); } +async function isSessionAuthorized(sessionUuid) { + const isSessionRelatedToPublicKey = await SessionRelatedToPublickey.findOne( + { + where: { + session_uuid: sessionUuid + } + } + ); + + if (isSessionRelatedToPublicKey) { + return true; + } + + return false; +} + module.exports = { createSession, isSessionValid, - relateSessionToPublicKey + relateSessionToPublicKey, + isSessionAuthorized } \ No newline at end of file diff --git a/src/views/createProfile.ejs b/src/views/createProfile.ejs new file mode 100644 index 0000000..8d1cbef --- /dev/null +++ b/src/views/createProfile.ejs @@ -0,0 +1,18 @@ + + + +
+Tu clave de Nostr ya es parte de la seca.
+AƱade detalles a tu perfil para poder empezar a comerciar.
+ + + + \ No newline at end of file