finished all services

This commit is contained in:
counterweight 2025-03-07 12:31:07 +01:00
parent f8a185e879
commit b680ede093
Signed by: counterweight
GPG key ID: 883EDBAA726BD96C
2 changed files with 70 additions and 47 deletions

View file

@ -2,7 +2,11 @@ class ServicesProvider {
constructor() {} constructor() {}
provide() { provide() {
const loginService = require('../services/loginService'); /*
Up next:
- start passing all service stuff from outside
- also remember to get CLi fixed and working
*/
const NostrServiceProvider = require('../services/nostrService'); const NostrServiceProvider = require('../services/nostrService');
const nostrService = new NostrServiceProvider().provide(); const nostrService = new NostrServiceProvider().provide();
@ -11,6 +15,12 @@ class ServicesProvider {
nostrService, nostrService,
}).provide(); }).provide();
const LoginServiceProvider = require('../services/loginService');
const loginService = new LoginServiceProvider({
nostrService,
invitesService,
}).provide();
const SessionServiceProvider = require('../services/sessionService'); const SessionServiceProvider = require('../services/sessionService');
const sessionService = new SessionServiceProvider({ const sessionService = new SessionServiceProvider({
invitesService, invitesService,

View file

@ -1,34 +1,43 @@
const uuid = require('uuid'); const uuid = require('uuid');
const nostrService = require('./nostrService');
const invitesService = require('./invitesService');
const models = require('../models'); const models = require('../models');
const errors = require('../errors'); const errors = require('../errors');
async function createLoginChallenge() { class LoginServiceProvider {
const nostrChallenge = await nostrService.createNostrChallenge(); constructor({ nostrService, invitesService }) {
this.nostrService = nostrService;
this.invitesService = invitesService;
}
provide() {
const createLoginChallenge = async () => {
const nostrChallenge = await this.nostrService.createNostrChallenge();
return await models.LoginChallengeCreated.create({ return await models.LoginChallengeCreated.create({
uuid: uuid.v7(), uuid: uuid.v7(),
nostr_challenge_uuid: nostrChallenge.uuid, nostr_challenge_uuid: nostrChallenge.uuid,
created_at: new Date().toISOString(), created_at: new Date().toISOString(),
}); });
} };
async function verifyLoginChallenge(signedEvent) { const verifyLoginChallenge = async (signedEvent) => {
const challengeTag = signedEvent.tags.find((tag) => tag[0] === 'challenge'); const challengeTag = signedEvent.tags.find(
(tag) => tag[0] === 'challenge'
);
const challenge = challengeTag[1]; const challenge = challengeTag[1];
if (await nostrService.hasNostrChallengeBeenCompleted(challenge)) { if (await this.nostrService.hasNostrChallengeBeenCompleted(challenge)) {
throw new errors.AlreadyUsedError('This challenge has already been used.'); throw new errors.AlreadyUsedError(
'This challenge has already been used.'
);
} }
const completedNostrChallenge = const completedNostrChallenge =
await nostrService.verifyNostrChallenge(signedEvent); await this.nostrService.verifyNostrChallenge(signedEvent);
if ( if (
!(await invitesService.isPublicKeySignedUp( !(await this.invitesService.isPublicKeySignedUp(
completedNostrChallenge.public_key completedNostrChallenge.public_key
)) ))
) { ) {
@ -38,7 +47,8 @@ async function verifyLoginChallenge(signedEvent) {
); );
} }
const completedLoginChallenge = await models.LoginChallengeCompleted.create({ const completedLoginChallenge =
await models.LoginChallengeCompleted.create({
uuid: uuid.v7(), uuid: uuid.v7(),
nostr_challenge_completed_uuid: completedNostrChallenge.uuid, nostr_challenge_completed_uuid: completedNostrChallenge.uuid,
public_key: completedNostrChallenge.public_key, public_key: completedNostrChallenge.public_key,
@ -49,9 +59,12 @@ async function verifyLoginChallenge(signedEvent) {
console.log(completedLoginChallenge); console.log(completedLoginChallenge);
return completedLoginChallenge; return completedLoginChallenge;
} };
module.exports = { return {
createLoginChallenge, createLoginChallenge,
verifyLoginChallenge, verifyLoginChallenge,
}; };
}
}
module.exports = LoginServiceProvider;