Skip to content

Commit

Permalink
Merge pull request #167 from bigcapitalhq/abouhuolia/big-33-sending-e…
Browse files Browse the repository at this point in the history
…mails-on-reset-password-and-registration

fix(server): sending emails on reset password and registration
  • Loading branch information
abouolia authored Jun 19, 2023
2 parents db83388 + b993fad commit 3e36146
Show file tree
Hide file tree
Showing 16 changed files with 29 additions and 1,053 deletions.
3 changes: 2 additions & 1 deletion packages/server/src/api/controllers/Authentication.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ export default class AuthenticationController extends BaseController {
check('password')
.exists()
.isString()
.isLength({ min: 6 })
.trim()
.escape()
.isLength({ max: DATATYPES_LENGTH.STRING }),
Expand All @@ -106,7 +107,7 @@ export default class AuthenticationController extends BaseController {
return [
check('password')
.exists()
.isLength({ min: 5 })
.isLength({ min: 6 })
.custom((value, { req }) => {
if (value !== req.body.confirm_password) {
throw new Error("Passwords don't match");
Expand Down
23 changes: 5 additions & 18 deletions packages/server/src/config/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,16 +95,15 @@ module.exports = {
* JWT secret.
*/
jwtSecret: process.env.JWT_SECRET,
resetPasswordSeconds: 600,

/**
*
*
*/
customerSuccess: {
email: '[email protected]',
phoneNumber: '(218) 92 791 8381',
},
resetPasswordSeconds: 600,

/**
* Application base URL.
*/
baseURL: process.env.BASE_URL,

/**
Expand Down Expand Up @@ -137,16 +136,6 @@ module.exports = {
},
},

/**
* Users registeration configuration.
*/
registration: {
countries: {
whitelist: ['LY'],
blacklist: [],
},
},

/**
* Sign-up restrictions
*/
Expand All @@ -167,8 +156,6 @@ module.exports = {
browserWSEndpoint: process.env.BROWSER_WS_ENDPOINT,
},

protocol: '',
hostname: '',
scheduleComputeItemCost: 'in 5 seconds',

/**
Expand Down
26 changes: 11 additions & 15 deletions packages/server/src/jobs/ResetPasswordMail.ts
Original file line number Diff line number Diff line change
@@ -1,38 +1,34 @@
import { Container, Inject } from 'typedi';
import AuthenticationService from '@/services/Authentication/AuthApplication';
import { Container } from 'typedi';
import AuthenticationMailMesssages from '@/services/Authentication/AuthenticationMailMessages';

export default class WelcomeEmailJob {
export default class ResetPasswordEmailJob {
/**
* Constructor method.
* @param {Agenda} agenda
* @param {Agenda} agenda
*/
constructor(agenda) {
agenda.define(
'reset-password-mail',
{ priority: 'high' },
this.handler.bind(this),
this.handler.bind(this)
);
}

/**
* Handle send welcome mail job.
* @param {Job} job
* @param {Function} done
* @param {Job} job
* @param {Function} done
*/
public async handler(job, done: Function): Promise<void> {
const { data } = job.attrs;
const { user, token } = data;
const Logger = Container.get('logger');
const authService = Container.get(AuthenticationService);
const authService = Container.get(AuthenticationMailMesssages);

Logger.info(`[send_reset_password] started.`, { data });

try {
await authService.mailMessages.sendResetPasswordMessage(user, token);
Logger.info(`[send_reset_password] finished.`, { data });
done()
await authService.sendResetPasswordMessage(user, token);
done();
} catch (error) {
Logger.error(`[send_reset_password] error.`, { data, error });
console.log(error);
done(error);
}
}
Expand Down
22 changes: 0 additions & 22 deletions packages/server/src/jobs/SmsNotification.ts

This file was deleted.

35 changes: 0 additions & 35 deletions packages/server/src/jobs/WelcomeSMS.ts

This file was deleted.

39 changes: 0 additions & 39 deletions packages/server/src/jobs/welcomeEmail.ts

This file was deleted.

2 changes: 0 additions & 2 deletions packages/server/src/loaders/eventEmitter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ import OrgBuildSmsNotificationSubscriber from '@/subscribers/Organization/BuildS
import PurgeUserAbilityCache from '@/services/Users/PurgeUserAbilityCache';
import ResetLoginThrottleSubscriber from '@/subscribers/Authentication/ResetLoginThrottle';
import AuthenticationSubscriber from '@/subscribers/Authentication/SendResetPasswordMail';
import AuthSendWelcomeMailSubscriber from '@/subscribers/Authentication/SendWelcomeMail';
import PurgeAuthorizedUserOnceRoleMutate from '@/services/Roles/PurgeAuthorizedUser';
import SendSmsNotificationToCustomer from '@/subscribers/SaleInvoices/SendSmsNotificationToCustomer';
import SendSmsNotificationSaleReceipt from '@/subscribers/SaleReceipt/SendSmsNotificationToCustomer';
Expand Down Expand Up @@ -120,7 +119,6 @@ export const susbcribers = () => {
PurgeUserAbilityCache,
ResetLoginThrottleSubscriber,
AuthenticationSubscriber,
AuthSendWelcomeMailSubscriber,
PurgeAuthorizedUserOnceRoleMutate,
SendSmsNotificationToCustomer,
SendSmsNotificationSaleReceipt,
Expand Down
8 changes: 1 addition & 7 deletions packages/server/src/loaders/jobs.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,18 @@
import Agenda from 'agenda';
import WelcomeEmailJob from 'jobs/welcomeEmail';
import WelcomeSMSJob from 'jobs/WelcomeSMS';
import ResetPasswordMailJob from 'jobs/ResetPasswordMail';
import ComputeItemCost from 'jobs/ComputeItemCost';
import RewriteInvoicesJournalEntries from 'jobs/writeInvoicesJEntries';
import RewriteInvoicesJournalEntries from 'jobs/WriteInvoicesJEntries';
import UserInviteMailJob from 'jobs/UserInviteMail';
import OrganizationSetupJob from 'jobs/OrganizationSetup';
import OrganizationUpgrade from 'jobs/OrganizationUpgrade';
import SmsNotification from 'jobs/SmsNotification';

export default ({ agenda }: { agenda: Agenda }) => {
new WelcomeEmailJob(agenda);
new ResetPasswordMailJob(agenda);
new WelcomeSMSJob(agenda);
new UserInviteMailJob(agenda);
new ComputeItemCost(agenda);
new RewriteInvoicesJournalEntries(agenda);
new OrganizationSetupJob(agenda);
new OrganizationUpgrade(agenda);
new SmsNotification(agenda);

agenda.start();
};
Original file line number Diff line number Diff line change
Expand Up @@ -5,69 +5,32 @@ import Mail from '@/lib/Mail';

@Service()
export default class AuthenticationMailMesssages {
/**
* Sends welcome message.
* @param {ISystemUser} user - The system user.
* @param {string} organizationName -
* @return {Promise<void>}
*/
async sendWelcomeMessage(
user: ISystemUser,
organizationId: string
): Promise<void> {
const root = __dirname + '/../../../views/images/bigcapital.png';

const mail = new Mail()
.setView('mail/Welcome.html')
.setSubject('Welcome to Bigcapital')
.setTo(user.email)
.setAttachments([
{
filename: 'bigcapital.png',
path: root,
cid: 'bigcapital_logo',
},
])
.setData({
firstName: user.firstName,
organizationId,
successPhoneNumber: config.customerSuccess.phoneNumber,
successEmail: config.customerSuccess.email,
});

await mail.send();
}

/**
* Sends reset password message.
* @param {ISystemUser} user - The system user.
* @param {string} token - Reset password token.
* @return {Promise<void>}
*/
async sendResetPasswordMessage(
public async sendResetPasswordMessage(
user: ISystemUser,
token: string
): Promise<void> {
const root = __dirname + '/../../../views/images/bigcapital.png';

const mail = new Mail()
await new Mail()
.setSubject('Bigcapital - Password Reset')
.setView('mail/ResetPassword.html')
.setTo(user.email)
.setAttachments([
{
filename: 'bigcapital.png',
path: root,
path: `${global.__views_dir}/images/bigcapital.png`,
cid: 'bigcapital_logo',
},
])
.setData({
resetPasswordUrl: `${config.baseURL}/auth/reset_password/${token}`,
first_name: user.firstName,
last_name: user.lastName,
contact_us_email: config.contactUsMail,
});

await mail.send();
})
.send();
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import events from '@/subscribers/events';
@Service()
export default class AuthenticationSubscriber {
@Inject('agenda')
agenda: any;
private agenda: any;

/**
* Attaches events with handlers.
Expand Down
28 changes: 0 additions & 28 deletions packages/server/src/subscribers/Authentication/SendWelcomeMail.ts

This file was deleted.

Loading

0 comments on commit 3e36146

Please sign in to comment.