add server to monorepo.

This commit is contained in:
a.bouhuolia
2023-02-03 11:57:50 +02:00
parent 28e309981b
commit 80b97b5fdc
1303 changed files with 137049 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
import { Container, Service } from 'typedi';
import events from '@/subscribers/events';
@Service()
export default class ResetLoginThrottleSubscriber {
/**
* Attaches events with handlers.
* @param bus
*/
public attach(bus) {
bus.subscribe(events.auth.login, this.resetLoginThrottleOnceSuccessLogin);
}
/**
* Resets the login throttle once the login success.
*/
private async resetLoginThrottleOnceSuccessLogin(payload) {
const { emailOrPhone, password, user } = payload;
const loginThrottler = Container.get('rateLimiter.login');
// Reset the login throttle by the given email and phone number.
await loginThrottler.reset(user.email);
await loginThrottler.reset(user.phoneNumber);
await loginThrottler.reset(emailOrPhone);
}
}

View File

@@ -0,0 +1,25 @@
import { Service, Inject } from 'typedi';
import events from '@/subscribers/events';
@Service()
export default class AuthenticationSubscriber {
@Inject('agenda')
agenda: any;
/**
* Attaches events with handlers.
*/
public attach(bus) {
bus.subscribe(events.auth.sendResetPassword, this.sendPasswordMail);
}
/**
* Sends reset password mail once the reset password success.
*/
public sendPasswordMail = (payload) => {
const { user, token } = payload;
// Send reset password mail.
this.agenda.now('reset-password-mail', { user, token });
};
}

View File

@@ -0,0 +1,28 @@
import { Service, Inject } from 'typedi';
import events from '@/subscribers/events';
@Service()
export default class AuthSendWelcomeMailSubscriber {
@Inject('agenda')
agenda: any;
/**
* Attaches events with handlers.
*/
public attach(bus) {
bus.subscribe(events.auth.register, this.sendWelcomeEmailOnceUserRegister);
}
/**
* Sends welcome email once the user register.
*/
private sendWelcomeEmailOnceUserRegister = async (payload) => {
const { registerDTO, tenant, user } = payload;
// Send welcome mail to the user.
await this.agenda.now('welcome-email', {
organizationId: tenant.organizationId,
user,
});
};
}