diff --git a/src/middlewares/redirectIfMissingProfileDetailsMiddleware.js b/src/middlewares/redirectIfMissingProfileDetailsMiddleware.js new file mode 100644 index 0000000..934048d --- /dev/null +++ b/src/middlewares/redirectIfMissingProfileDetailsMiddleware.js @@ -0,0 +1,12 @@ +const profileService = require('../services/profileService'); + +async function redirectIfMissingProfileDetailsMiddleware(req, res, next) { + const publicKey = req.cookies.publicKey; + if (!(await profileService.areProfileDetailsComplete(publicKey))) { + res.redirect('/createProfile'); + } + + next(); +} + +module.exports = redirectIfMissingProfileDetailsMiddleware; diff --git a/src/routes/webRoutes.js b/src/routes/webRoutes.js index 070dbfe..911995e 100644 --- a/src/routes/webRoutes.js +++ b/src/routes/webRoutes.js @@ -4,6 +4,7 @@ const router = express.Router(); const redirectIfNotAuthorizedMiddleware = require('../middlewares/redirectIfNotAuthorizedMiddleware'); const invitesService = require('../services/invitesService'); const attachPublicKeyMiddleware = require('../middlewares/attachPublicKeyMiddleware'); +const redirectIfMissingProfileDetailsMiddleware = require('../middlewares/redirectIfMissingProfileDetailsMiddleware'); router.get('/', (req, res) => { res.render('index', { uuid: req.cookies.sessionUuid }); @@ -32,29 +33,6 @@ router.get('/invite/:inviteUuid', async (req, res) => { return res.render('invite', { invite }); }); -router.get('/invite/:inviteUuid', async (req, res) => { - const { inviteUuid } = req.params; - - res.cookie('inviteUuid', inviteUuid, { httpOnly: true, maxAge: 86400000 }); - - let invite; - try { - invite = await invitesService.getAppInvite(inviteUuid); - if (!invite) { - return res.status(404).render('error', { message: 'Invite not found.' }); - } - - if (await invitesService.isAppInviteSpent(inviteUuid)) { - return res.status(410).render('invite_spent', { invite }); - } - } catch (error) { - console.error('Error fetching invite:', error); - return res.status(500).render('error', { message: 'An error occurred' }); - } - - return res.render('invite', { invite }); -}); - router.get( '/createProfile', redirectIfNotAuthorizedMiddleware, @@ -67,6 +45,7 @@ router.get( '/home', redirectIfNotAuthorizedMiddleware, attachPublicKeyMiddleware, + redirectIfMissingProfileDetailsMiddleware, (req, res) => { res.render('home', {}); } diff --git a/src/services/profileService.js b/src/services/profileService.js index 7e6b4a1..5db0c24 100644 --- a/src/services/profileService.js +++ b/src/services/profileService.js @@ -20,7 +20,19 @@ async function setNym(publicKey, nym) { }); } +async function areProfileDetailsComplete(publicKey) { + const isNymSet = await NymSet.findOne({ where: { public_key: publicKey } }); + const areContactDetailsSet = await ContactDetailsSet.findOne({ + where: { + public_key: publicKey, + }, + }); + + return isNymSet && areContactDetailsSet; +} + module.exports = { setContactDetails, setNym, + areProfileDetailsComplete, };