Files
bigcapital/server/src/subscribers/authentication.ts
2020-12-17 01:16:08 +02:00

50 lines
1.4 KiB
TypeScript

import { Container } from 'typedi';
import { pick } from 'lodash';
import { EventSubscriber, On } from 'event-dispatch';
import events from 'subscribers/events';
@EventSubscriber()
export class AuthenticationSubscriber {
/**
* Resets the login throttle once the login success.
*/
@On(events.auth.login)
public 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);
}
/**
* Sends welcome email once the user register.
*/
@On(events.auth.register)
public async sendWelcomeEmail(payload) {
const { registerDTO, tenant, user } = payload;
const agenda = Container.get('agenda');
// Send welcome mail to the user.
await agenda.now('welcome-email', {
organizationId: tenant.organizationId,
user,
});
}
/**
* Sends reset password mail once the reset password success.
*/
@On(events.auth.sendResetPassword)
public onSendResetPassword (payload) {
const { user, token } = payload;
const agenda = Container.get('agenda');
// Send reset password mail.
agenda.now('reset-password-mail', { user, token })
}
}