77 lines
2.3 KiB
JavaScript
77 lines
2.3 KiB
JavaScript
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;
|