password reset
This commit is contained in:
@@ -36,6 +36,8 @@ class EmailService {
|
||||
"conditionCheckReminder.html",
|
||||
"rentalConfirmation.html",
|
||||
"emailVerification.html",
|
||||
"passwordReset.html",
|
||||
"passwordChanged.html",
|
||||
"lateReturnCS.html",
|
||||
"damageReportCS.html",
|
||||
"lostItemCS.html",
|
||||
@@ -244,6 +246,31 @@ class EmailService {
|
||||
<p><strong>This link will expire in 24 hours.</strong></p>
|
||||
`
|
||||
),
|
||||
|
||||
passwordReset: baseTemplate.replace(
|
||||
"{{content}}",
|
||||
`
|
||||
<p>Hi {{recipientName}},</p>
|
||||
<h2>Reset Your Password</h2>
|
||||
<p>We received a request to reset the password for your RentAll account. Click the button below to choose a new password.</p>
|
||||
<p><a href="{{resetUrl}}" class="button">Reset Password</a></p>
|
||||
<p>If the button doesn't work, copy and paste this link into your browser: {{resetUrl}}</p>
|
||||
<p><strong>This link will expire in 1 hour.</strong></p>
|
||||
<p>If you didn't request this, you can safely ignore this email.</p>
|
||||
`
|
||||
),
|
||||
|
||||
passwordChanged: baseTemplate.replace(
|
||||
"{{content}}",
|
||||
`
|
||||
<p>Hi {{recipientName}},</p>
|
||||
<h2>Your Password Has Been Changed</h2>
|
||||
<p>This is a confirmation that the password for your RentAll account ({{email}}) has been successfully changed.</p>
|
||||
<p><strong>Changed on:</strong> {{timestamp}}</p>
|
||||
<p>For your security, all existing sessions have been logged out.</p>
|
||||
<p><strong>Didn't change your password?</strong> If you did not make this change, please contact our support team immediately.</p>
|
||||
`
|
||||
),
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -326,6 +353,45 @@ class EmailService {
|
||||
);
|
||||
}
|
||||
|
||||
async sendPasswordResetEmail(user, resetToken) {
|
||||
const frontendUrl = process.env.FRONTEND_URL || "http://localhost:3000";
|
||||
const resetUrl = `${frontendUrl}/reset-password?token=${resetToken}`;
|
||||
|
||||
const variables = {
|
||||
recipientName: user.firstName || "there",
|
||||
resetUrl: resetUrl,
|
||||
};
|
||||
|
||||
const htmlContent = this.renderTemplate("passwordReset", variables);
|
||||
|
||||
return await this.sendEmail(
|
||||
user.email,
|
||||
"Reset Your Password - RentAll",
|
||||
htmlContent
|
||||
);
|
||||
}
|
||||
|
||||
async sendPasswordChangedEmail(user) {
|
||||
const timestamp = new Date().toLocaleString("en-US", {
|
||||
dateStyle: "long",
|
||||
timeStyle: "short",
|
||||
});
|
||||
|
||||
const variables = {
|
||||
recipientName: user.firstName || "there",
|
||||
email: user.email,
|
||||
timestamp: timestamp,
|
||||
};
|
||||
|
||||
const htmlContent = this.renderTemplate("passwordChanged", variables);
|
||||
|
||||
return await this.sendEmail(
|
||||
user.email,
|
||||
"Password Changed Successfully - RentAll",
|
||||
htmlContent
|
||||
);
|
||||
}
|
||||
|
||||
async sendTemplateEmail(toEmail, subject, templateName, variables = {}) {
|
||||
const htmlContent = this.renderTemplate(templateName, variables);
|
||||
return await this.sendEmail(toEmail, subject, htmlContent);
|
||||
|
||||
Reference in New Issue
Block a user