finished all services
This commit is contained in:
parent
f8a185e879
commit
b680ede093
2 changed files with 70 additions and 47 deletions
|
|
@ -2,7 +2,11 @@ class ServicesProvider {
|
|||
constructor() {}
|
||||
|
||||
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 nostrService = new NostrServiceProvider().provide();
|
||||
|
|
@ -11,6 +15,12 @@ class ServicesProvider {
|
|||
nostrService,
|
||||
}).provide();
|
||||
|
||||
const LoginServiceProvider = require('../services/loginService');
|
||||
const loginService = new LoginServiceProvider({
|
||||
nostrService,
|
||||
invitesService,
|
||||
}).provide();
|
||||
|
||||
const SessionServiceProvider = require('../services/sessionService');
|
||||
const sessionService = new SessionServiceProvider({
|
||||
invitesService,
|
||||
|
|
|
|||
|
|
@ -1,34 +1,43 @@
|
|||
const uuid = require('uuid');
|
||||
|
||||
const nostrService = require('./nostrService');
|
||||
const invitesService = require('./invitesService');
|
||||
const models = require('../models');
|
||||
|
||||
const errors = require('../errors');
|
||||
|
||||
async function createLoginChallenge() {
|
||||
const nostrChallenge = await nostrService.createNostrChallenge();
|
||||
class LoginServiceProvider {
|
||||
constructor({ nostrService, invitesService }) {
|
||||
this.nostrService = nostrService;
|
||||
this.invitesService = invitesService;
|
||||
}
|
||||
|
||||
provide() {
|
||||
const createLoginChallenge = async () => {
|
||||
const nostrChallenge = await this.nostrService.createNostrChallenge();
|
||||
|
||||
return await models.LoginChallengeCreated.create({
|
||||
uuid: uuid.v7(),
|
||||
nostr_challenge_uuid: nostrChallenge.uuid,
|
||||
created_at: new Date().toISOString(),
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
async function verifyLoginChallenge(signedEvent) {
|
||||
const challengeTag = signedEvent.tags.find((tag) => tag[0] === 'challenge');
|
||||
const verifyLoginChallenge = async (signedEvent) => {
|
||||
const challengeTag = signedEvent.tags.find(
|
||||
(tag) => tag[0] === 'challenge'
|
||||
);
|
||||
const challenge = challengeTag[1];
|
||||
|
||||
if (await nostrService.hasNostrChallengeBeenCompleted(challenge)) {
|
||||
throw new errors.AlreadyUsedError('This challenge has already been used.');
|
||||
if (await this.nostrService.hasNostrChallengeBeenCompleted(challenge)) {
|
||||
throw new errors.AlreadyUsedError(
|
||||
'This challenge has already been used.'
|
||||
);
|
||||
}
|
||||
|
||||
const completedNostrChallenge =
|
||||
await nostrService.verifyNostrChallenge(signedEvent);
|
||||
await this.nostrService.verifyNostrChallenge(signedEvent);
|
||||
|
||||
if (
|
||||
!(await invitesService.isPublicKeySignedUp(
|
||||
!(await this.invitesService.isPublicKeySignedUp(
|
||||
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(),
|
||||
nostr_challenge_completed_uuid: completedNostrChallenge.uuid,
|
||||
public_key: completedNostrChallenge.public_key,
|
||||
|
|
@ -49,9 +59,12 @@ async function verifyLoginChallenge(signedEvent) {
|
|||
console.log(completedLoginChallenge);
|
||||
|
||||
return completedLoginChallenge;
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
return {
|
||||
createLoginChallenge,
|
||||
verifyLoginChallenge,
|
||||
};
|
||||
}
|
||||
}
|
||||
module.exports = LoginServiceProvider;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue