MFA
This commit is contained in:
@@ -255,7 +255,7 @@
|
||||
<p>
|
||||
<strong>Security reminder:</strong> Keep your password secure and
|
||||
never share it with anyone. We recommend using a strong, unique
|
||||
password and enabling two-factor authentication when available.
|
||||
password and enabling multi-factor authentication when available.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
232
backend/templates/emails/recoveryCodeUsedToUser.html
Normal file
232
backend/templates/emails/recoveryCodeUsedToUser.html
Normal file
@@ -0,0 +1,232 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>Recovery Code Used</title>
|
||||
<style>
|
||||
body,
|
||||
table,
|
||||
td,
|
||||
p,
|
||||
a,
|
||||
li,
|
||||
blockquote {
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
table,
|
||||
td {
|
||||
mso-table-lspace: 0pt;
|
||||
mso-table-rspace: 0pt;
|
||||
}
|
||||
img {
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100% !important;
|
||||
min-width: 100%;
|
||||
height: 100%;
|
||||
background-color: #f8f9fa;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||
Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #212529;
|
||||
}
|
||||
.email-container {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background-color: #ffffff;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.header {
|
||||
background: linear-gradient(135deg, #fd7e14 0%, #e55300 100%);
|
||||
padding: 40px 30px;
|
||||
text-align: center;
|
||||
}
|
||||
.logo {
|
||||
font-size: 32px;
|
||||
font-weight: 700;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
.tagline {
|
||||
color: #ffecd2;
|
||||
font-size: 14px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
.content {
|
||||
padding: 40px 30px;
|
||||
}
|
||||
.content h1 {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
margin: 0 0 20px 0;
|
||||
color: #212529;
|
||||
}
|
||||
.content p {
|
||||
margin: 0 0 16px 0;
|
||||
color: #6c757d;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.content strong {
|
||||
color: #495057;
|
||||
}
|
||||
.info-box {
|
||||
background-color: #e7f3ff;
|
||||
border-left: 4px solid #0066cc;
|
||||
padding: 20px;
|
||||
margin: 20px 0;
|
||||
border-radius: 0 6px 6px 0;
|
||||
}
|
||||
.info-box p {
|
||||
margin: 0;
|
||||
color: #004085;
|
||||
font-size: 14px;
|
||||
}
|
||||
.warning-box {
|
||||
background-color: #fff3cd;
|
||||
border-left: 4px solid #ffc107;
|
||||
padding: 20px;
|
||||
margin: 20px 0;
|
||||
border-radius: 0 6px 6px 0;
|
||||
}
|
||||
.warning-box p {
|
||||
margin: 0;
|
||||
color: #856404;
|
||||
font-size: 14px;
|
||||
}
|
||||
.alert-box {
|
||||
background-color: #f8d7da;
|
||||
border-left: 4px solid #dc3545;
|
||||
padding: 20px;
|
||||
margin: 20px 0;
|
||||
border-radius: 0 6px 6px 0;
|
||||
}
|
||||
.alert-box p {
|
||||
margin: 0;
|
||||
color: #721c24;
|
||||
font-size: 14px;
|
||||
}
|
||||
.footer {
|
||||
background-color: #f8f9fa;
|
||||
padding: 30px;
|
||||
text-align: center;
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
.footer p {
|
||||
margin: 0 0 10px 0;
|
||||
font-size: 14px;
|
||||
color: #6c757d;
|
||||
}
|
||||
@media only screen and (max-width: 600px) {
|
||||
.email-container {
|
||||
margin: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
.header,
|
||||
.content,
|
||||
.footer {
|
||||
padding: 20px;
|
||||
}
|
||||
.logo {
|
||||
font-size: 28px;
|
||||
}
|
||||
.content h1 {
|
||||
font-size: 22px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="email-container">
|
||||
<div class="header">
|
||||
<div class="logo">Village Share</div>
|
||||
<div class="tagline">Security Notice</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<p>Hi {{recipientName}},</p>
|
||||
|
||||
<h1>Recovery Code Used</h1>
|
||||
|
||||
<div class="info-box">
|
||||
<p>
|
||||
A recovery code was just used to verify your identity on your
|
||||
Village Share account.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Recovery codes are one-time use codes that allow you to access your
|
||||
account when you don't have access to your authenticator app.
|
||||
</p>
|
||||
|
||||
<div
|
||||
style="
|
||||
text-align: center;
|
||||
margin: 30px 0;
|
||||
padding: 20px;
|
||||
background-color: #f8f9fa;
|
||||
border-radius: 8px;
|
||||
"
|
||||
>
|
||||
<p style="margin: 0 0 10px 0; color: #6c757d; font-size: 14px">
|
||||
Remaining recovery codes:
|
||||
</p>
|
||||
<span
|
||||
style="
|
||||
font-size: 48px;
|
||||
font-weight: 700;
|
||||
color: {{remainingCodesColor}};
|
||||
"
|
||||
>{{remainingCodes}}</span
|
||||
>
|
||||
<span style="font-size: 24px; color: #6c757d"> / 10</span>
|
||||
</div>
|
||||
|
||||
{{#if lowCodesWarning}}
|
||||
<div class="alert-box">
|
||||
<p>
|
||||
<strong>Warning:</strong> You're running low on recovery codes! We
|
||||
strongly recommend generating new recovery codes from your account
|
||||
settings to avoid being locked out.
|
||||
</p>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="warning-box">
|
||||
<p>
|
||||
<strong>Didn't use a recovery code?</strong> If you didn't initiate
|
||||
this action, someone may have access to your recovery codes. Please
|
||||
secure your account immediately by:
|
||||
</p>
|
||||
<ul style="margin: 10px 0 0 0; padding-left: 20px">
|
||||
<li>Changing your password</li>
|
||||
<li>Generating new recovery codes</li>
|
||||
<li>Contacting our support team</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<strong>Timestamp:</strong> {{timestamp}}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p><strong>Village Share</strong></p>
|
||||
<p>
|
||||
This is a security notification. You received this message because a
|
||||
recovery code was used on your account.
|
||||
</p>
|
||||
<p>© 2025 Village Share. All rights reserved.</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
195
backend/templates/emails/twoFactorDisabledToUser.html
Normal file
195
backend/templates/emails/twoFactorDisabledToUser.html
Normal file
@@ -0,0 +1,195 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>Multi-Factor Authentication Disabled</title>
|
||||
<style>
|
||||
body,
|
||||
table,
|
||||
td,
|
||||
p,
|
||||
a,
|
||||
li,
|
||||
blockquote {
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
table,
|
||||
td {
|
||||
mso-table-lspace: 0pt;
|
||||
mso-table-rspace: 0pt;
|
||||
}
|
||||
img {
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100% !important;
|
||||
min-width: 100%;
|
||||
height: 100%;
|
||||
background-color: #f8f9fa;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||
Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #212529;
|
||||
}
|
||||
.email-container {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background-color: #ffffff;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.header {
|
||||
background: linear-gradient(135deg, #dc3545 0%, #c82333 100%);
|
||||
padding: 40px 30px;
|
||||
text-align: center;
|
||||
}
|
||||
.logo {
|
||||
font-size: 32px;
|
||||
font-weight: 700;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
.tagline {
|
||||
color: #f8d7da;
|
||||
font-size: 14px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
.content {
|
||||
padding: 40px 30px;
|
||||
}
|
||||
.content h1 {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
margin: 0 0 20px 0;
|
||||
color: #212529;
|
||||
}
|
||||
.content p {
|
||||
margin: 0 0 16px 0;
|
||||
color: #6c757d;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.content strong {
|
||||
color: #495057;
|
||||
}
|
||||
.warning-box {
|
||||
background-color: #fff3cd;
|
||||
border-left: 4px solid #ffc107;
|
||||
padding: 20px;
|
||||
margin: 20px 0;
|
||||
border-radius: 0 6px 6px 0;
|
||||
}
|
||||
.warning-box p {
|
||||
margin: 0;
|
||||
color: #856404;
|
||||
font-size: 14px;
|
||||
}
|
||||
.alert-box {
|
||||
background-color: #f8d7da;
|
||||
border-left: 4px solid #dc3545;
|
||||
padding: 20px;
|
||||
margin: 20px 0;
|
||||
border-radius: 0 6px 6px 0;
|
||||
}
|
||||
.alert-box p {
|
||||
margin: 0;
|
||||
color: #721c24;
|
||||
font-size: 14px;
|
||||
}
|
||||
.footer {
|
||||
background-color: #f8f9fa;
|
||||
padding: 30px;
|
||||
text-align: center;
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
.footer p {
|
||||
margin: 0 0 10px 0;
|
||||
font-size: 14px;
|
||||
color: #6c757d;
|
||||
}
|
||||
@media only screen and (max-width: 600px) {
|
||||
.email-container {
|
||||
margin: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
.header,
|
||||
.content,
|
||||
.footer {
|
||||
padding: 20px;
|
||||
}
|
||||
.logo {
|
||||
font-size: 28px;
|
||||
}
|
||||
.content h1 {
|
||||
font-size: 22px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="email-container">
|
||||
<div class="header">
|
||||
<div class="logo">Village Share</div>
|
||||
<div class="tagline">Security Alert</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<p>Hi {{recipientName}},</p>
|
||||
|
||||
<h1>Multi-Factor Authentication Disabled</h1>
|
||||
|
||||
<div class="alert-box">
|
||||
<p>
|
||||
<strong>Important:</strong> Multi-factor authentication has been
|
||||
disabled on your Village Share account.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Your account no longer requires multi-factor verification for sensitive
|
||||
actions. While this may be more convenient, your account is now less
|
||||
protected against unauthorized access.
|
||||
</p>
|
||||
|
||||
<div class="warning-box">
|
||||
<p>
|
||||
<strong>We recommend keeping 2FA enabled</strong> to protect your
|
||||
account, especially if you have payment methods saved or are
|
||||
receiving payouts from rentals.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<strong>Didn't disable this?</strong> If you didn't make this change,
|
||||
your account may have been compromised. Please take the following
|
||||
steps immediately:
|
||||
</p>
|
||||
|
||||
<ol style="color: #6c757d; margin: 16px 0; padding-left: 20px">
|
||||
<li>Change your password</li>
|
||||
<li>Re-enable multi-factor authentication</li>
|
||||
<li>Contact our support team</li>
|
||||
</ol>
|
||||
|
||||
<p>
|
||||
<strong>Timestamp:</strong> {{timestamp}}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p><strong>Village Share</strong></p>
|
||||
<p>
|
||||
This is a security notification. You received this message because
|
||||
multi-factor authentication was disabled on your account.
|
||||
</p>
|
||||
<p>© 2025 Village Share. All rights reserved.</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
195
backend/templates/emails/twoFactorEnabledToUser.html
Normal file
195
backend/templates/emails/twoFactorEnabledToUser.html
Normal file
@@ -0,0 +1,195 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>Multi-Factor Authentication Enabled</title>
|
||||
<style>
|
||||
body,
|
||||
table,
|
||||
td,
|
||||
p,
|
||||
a,
|
||||
li,
|
||||
blockquote {
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
table,
|
||||
td {
|
||||
mso-table-lspace: 0pt;
|
||||
mso-table-rspace: 0pt;
|
||||
}
|
||||
img {
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100% !important;
|
||||
min-width: 100%;
|
||||
height: 100%;
|
||||
background-color: #f8f9fa;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||
Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #212529;
|
||||
}
|
||||
.email-container {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background-color: #ffffff;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.header {
|
||||
background: linear-gradient(135deg, #28a745 0%, #20c997 100%);
|
||||
padding: 40px 30px;
|
||||
text-align: center;
|
||||
}
|
||||
.logo {
|
||||
font-size: 32px;
|
||||
font-weight: 700;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
.tagline {
|
||||
color: #d4edda;
|
||||
font-size: 14px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
.content {
|
||||
padding: 40px 30px;
|
||||
}
|
||||
.content h1 {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
margin: 0 0 20px 0;
|
||||
color: #212529;
|
||||
}
|
||||
.content p {
|
||||
margin: 0 0 16px 0;
|
||||
color: #6c757d;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.content strong {
|
||||
color: #495057;
|
||||
}
|
||||
.success-box {
|
||||
background-color: #d4edda;
|
||||
border-left: 4px solid #28a745;
|
||||
padding: 20px;
|
||||
margin: 20px 0;
|
||||
border-radius: 0 6px 6px 0;
|
||||
}
|
||||
.success-box p {
|
||||
margin: 0;
|
||||
color: #155724;
|
||||
font-size: 14px;
|
||||
}
|
||||
.info-box {
|
||||
background-color: #e7f3ff;
|
||||
border-left: 4px solid #0066cc;
|
||||
padding: 20px;
|
||||
margin: 20px 0;
|
||||
border-radius: 0 6px 6px 0;
|
||||
}
|
||||
.info-box p {
|
||||
margin: 0;
|
||||
color: #004085;
|
||||
font-size: 14px;
|
||||
}
|
||||
.footer {
|
||||
background-color: #f8f9fa;
|
||||
padding: 30px;
|
||||
text-align: center;
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
.footer p {
|
||||
margin: 0 0 10px 0;
|
||||
font-size: 14px;
|
||||
color: #6c757d;
|
||||
}
|
||||
@media only screen and (max-width: 600px) {
|
||||
.email-container {
|
||||
margin: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
.header,
|
||||
.content,
|
||||
.footer {
|
||||
padding: 20px;
|
||||
}
|
||||
.logo {
|
||||
font-size: 28px;
|
||||
}
|
||||
.content h1 {
|
||||
font-size: 22px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="email-container">
|
||||
<div class="header">
|
||||
<div class="logo">Village Share</div>
|
||||
<div class="tagline">Security Update</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<p>Hi {{recipientName}},</p>
|
||||
|
||||
<h1>Multi-Factor Authentication Enabled</h1>
|
||||
|
||||
<div class="success-box">
|
||||
<p>
|
||||
<strong>Great news!</strong> Multi-factor authentication has been
|
||||
successfully enabled on your Village Share account.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Your account is now more secure. From now on, you'll need to verify
|
||||
your identity using your authenticator app or email when performing
|
||||
sensitive actions like:
|
||||
</p>
|
||||
|
||||
<ul style="color: #6c757d; margin: 16px 0; padding-left: 20px">
|
||||
<li>Changing your password</li>
|
||||
<li>Updating your email address</li>
|
||||
<li>Requesting payouts</li>
|
||||
<li>Disabling multi-factor authentication</li>
|
||||
</ul>
|
||||
|
||||
<div class="info-box">
|
||||
<p>
|
||||
<strong>Recovery Codes:</strong> Make sure you've saved your
|
||||
recovery codes in a secure location. These codes can be used to
|
||||
access your account if you lose access to your authenticator app.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<strong>Didn't enable this?</strong> If you didn't make this change,
|
||||
please contact our support team immediately and secure your account.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Timestamp:</strong> {{timestamp}}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p><strong>Village Share</strong></p>
|
||||
<p>
|
||||
This is a security notification. You received this message because
|
||||
multi-factor authentication was enabled on your account.
|
||||
</p>
|
||||
<p>© 2025 Village Share. All rights reserved.</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
193
backend/templates/emails/twoFactorOtpToUser.html
Normal file
193
backend/templates/emails/twoFactorOtpToUser.html
Normal file
@@ -0,0 +1,193 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>Your Verification Code</title>
|
||||
<style>
|
||||
body,
|
||||
table,
|
||||
td,
|
||||
p,
|
||||
a,
|
||||
li,
|
||||
blockquote {
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
table,
|
||||
td {
|
||||
mso-table-lspace: 0pt;
|
||||
mso-table-rspace: 0pt;
|
||||
}
|
||||
img {
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100% !important;
|
||||
min-width: 100%;
|
||||
height: 100%;
|
||||
background-color: #f8f9fa;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||
Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #212529;
|
||||
}
|
||||
.email-container {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background-color: #ffffff;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.header {
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
padding: 40px 30px;
|
||||
text-align: center;
|
||||
}
|
||||
.logo {
|
||||
font-size: 32px;
|
||||
font-weight: 700;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
.tagline {
|
||||
color: #e0d4f7;
|
||||
font-size: 14px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
.content {
|
||||
padding: 40px 30px;
|
||||
}
|
||||
.content h1 {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
margin: 0 0 20px 0;
|
||||
color: #212529;
|
||||
}
|
||||
.content p {
|
||||
margin: 0 0 16px 0;
|
||||
color: #6c757d;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.content strong {
|
||||
color: #495057;
|
||||
}
|
||||
.warning-box {
|
||||
background-color: #fff3cd;
|
||||
border-left: 4px solid #ffc107;
|
||||
padding: 15px;
|
||||
margin: 20px 0;
|
||||
border-radius: 0 6px 6px 0;
|
||||
}
|
||||
.warning-box p {
|
||||
margin: 0;
|
||||
color: #856404;
|
||||
font-size: 14px;
|
||||
}
|
||||
.footer {
|
||||
background-color: #f8f9fa;
|
||||
padding: 30px;
|
||||
text-align: center;
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
.footer p {
|
||||
margin: 0 0 10px 0;
|
||||
font-size: 14px;
|
||||
color: #6c757d;
|
||||
}
|
||||
@media only screen and (max-width: 600px) {
|
||||
.email-container {
|
||||
margin: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
.header,
|
||||
.content,
|
||||
.footer {
|
||||
padding: 20px;
|
||||
}
|
||||
.logo {
|
||||
font-size: 28px;
|
||||
}
|
||||
.content h1 {
|
||||
font-size: 22px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="email-container">
|
||||
<div class="header">
|
||||
<div class="logo">Village Share</div>
|
||||
<div class="tagline">Security Verification</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<p>Hi {{recipientName}},</p>
|
||||
|
||||
<h1>Your Verification Code</h1>
|
||||
|
||||
<p>
|
||||
You requested a verification code to complete a secure action on your
|
||||
Village Share account.
|
||||
</p>
|
||||
|
||||
<div style="text-align: center; margin: 30px 0">
|
||||
<p style="margin-bottom: 10px; color: #6c757d; font-size: 14px">
|
||||
Your verification code is:
|
||||
</p>
|
||||
<div
|
||||
style="
|
||||
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
|
||||
border-radius: 12px;
|
||||
padding: 20px 40px;
|
||||
display: inline-block;
|
||||
border: 2px dashed #667eea;
|
||||
"
|
||||
>
|
||||
<span
|
||||
style="
|
||||
font-size: 36px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 8px;
|
||||
color: #667eea;
|
||||
font-family: 'Courier New', monospace;
|
||||
"
|
||||
>{{otpCode}}</span
|
||||
>
|
||||
</div>
|
||||
<p style="margin-top: 10px; font-size: 14px; color: #6c757d">
|
||||
Enter this code to verify your identity
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="warning-box">
|
||||
<p>
|
||||
<strong>This code will expire in 10 minutes.</strong> If you didn't
|
||||
request this code, please secure your account immediately.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<strong>Didn't request this code?</strong> If you didn't initiate this
|
||||
request, someone may be trying to access your account. We recommend
|
||||
changing your password immediately.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p><strong>Village Share</strong></p>
|
||||
<p>
|
||||
This is a security email sent to protect your account. Never share
|
||||
this code with anyone.
|
||||
</p>
|
||||
<p>© 2025 Village Share. All rights reserved.</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user