const express = require('express'); const invitesService = require('../services/invitesService'); const nostrService = require('../services/nostrService'); const { TimeoutError } = require('sequelize'); const errors = require('../errors'); const router = express.Router(); router.get('/signup/nostr-challenge', async (req, res) => { console.log("I'm heeeere") const inviteUuid = req.cookies.inviteUuid; let signUpChallenge; try { signUpChallenge = await invitesService.createSignUpChallenge( inviteUuid ) } catch (error) { if (error instanceof errors.NotFoundError) { return res.status(404).json({ success: false, message: 'Could not find invite with that id.' }) } if (error instanceof errors.AlreadyUsedError) { return res.status(410).json({ success: false, message: 'That invite has already been used.' }) } return res.status(500).json({ success: false, message: 'Unexpected error.' }) } let relatedNostrChallenge; try { relatedNostrChallenge = await nostrService.getNostrChallenge( signUpChallenge.nostr_challenge_uuid ) } catch (error) { return res.status(500).json({ success: false, message: 'Unexpected error.' }) } return res.status(200).json({ 'challenge': relatedNostrChallenge.challenge }); }); router.post("/signup/nostr-verify", async (req, res) => { const signedEvent = req.body; try { console.log(`Starting nostr-verify with event: ${signedEvent}`); const completedSignUpChallenge = await invitesService.verifySignUpChallenge(signedEvent); console.log(`Finished nostr-verify`); } catch (error) { if (error instanceof TimeoutError) { console.error('The challenge is outdated.'); } if (error instanceof errors.AlreadyUsedError) { console.error('The challenge was already used, request a new one.'); } if (error instanceof errors.InvalidSignatureError) { console.error('Signature is not valid.') } } return res.status(200).json({ success: true }); }); module.exports = router;