From 37948c4682bacbb6f5af8d216dd190473cbff326 Mon Sep 17 00:00:00 2001 From: dyzulk <66510723+dyzulk@users.noreply.github.com> Date: Wed, 31 Dec 2025 10:19:43 +0700 Subject: [PATCH] feat: Add new email templates for password reset, email verification, test, certificate notifications, and inquiry replies, along with a new application logo. --- public/images/logo/logo-outlined.png | Bin 0 -> 5513 bytes .../emails/certificate-expired.blade.php | 110 ++++++++++++--- .../emails/certificate-expiring.blade.php | 126 +++++++++++++++--- .../views/emails/inquiry_reply.blade.php | 44 +++--- .../views/emails/password-reset.blade.php | 65 +++++---- resources/views/emails/test.blade.php | 2 +- resources/views/emails/verify-email.blade.php | 56 +++++--- 7 files changed, 298 insertions(+), 105 deletions(-) create mode 100644 public/images/logo/logo-outlined.png diff --git a/public/images/logo/logo-outlined.png b/public/images/logo/logo-outlined.png new file mode 100644 index 0000000000000000000000000000000000000000..bceeee5aa086d0e1e1069caa30a9d4f103e1fd08 GIT binary patch literal 5513 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 + + Certificate Expired Alert + - -
-

URGENT: Certificate Has Expired

- -

Hello {{ $certificate->user->first_name ?? 'User' }},

- -

This is a critical notification that your SSL certificate has ALREADY EXPIRED.

- -
-

Common Name: {{ $certificate->common_name }}

-

Organization: {{ $certificate->organization }}

-

Key Strength: {{ $certificate->key_bits }}-bit

-

Expired On: {{ $certificate->valid_to->format('d M Y H:i:s') }}

+ +
+
+ TrustLab Logo +
+
+

URGENT: Certificate Has Expired

+ +

Hello {{ $certificate->user->first_name ?? 'User' }},

+ +

This is a critical notification that your SSL certificate has ALREADY EXPIRED.

+ +
+

Common Name: {{ $certificate->common_name }}

+

Organization: {{ $certificate->organization }}

+

Key Strength: {{ $certificate->key_bits }}-bit

+

Expired On: {{ $certificate->valid_to->format('d M Y H:i:s') }}

+
+ +

Your services using this certificate may be inaccessible or showing security warnings. Please renew immediately.

+ + Renew Now +
+ - -

Your services using this certificate may be inaccessible or showing security warnings. Please renew immediately.

- - Renew Now
diff --git a/resources/views/emails/certificate-expiring.blade.php b/resources/views/emails/certificate-expiring.blade.php index 1a77bbd..bd4326b 100644 --- a/resources/views/emails/certificate-expiring.blade.php +++ b/resources/views/emails/certificate-expiring.blade.php @@ -1,31 +1,113 @@ + + Certificate Expiration Alert + - -
-

Action Required: Certificate Expiring Soon

- -

Hello {{ $certificate->user->first_name ?? 'User' }},

- -

This is a notification that one of your SSL certificates is expiring in {{ $daysRemaining }} days.

- -
-

Common Name: {{ $certificate->common_name }}

-

Organization: {{ $certificate->organization }}

-

Key Strength: {{ $certificate->key_bits }}-bit

-

Expiration Date: {{ $certificate->valid_to->format('d M Y H:i:s') }}

+ +
+
+ TrustLab Logo +
+
+

Action Required: Certificate Expiring Soon

+ +

Hello {{ $certificate->user->first_name ?? 'User' }},

+ +

This is a notification that one of your SSL certificates is expiring in {{ $daysRemaining }} days.

+ +
+

Common Name: {{ $certificate->common_name }}

+

Organization: {{ $certificate->organization }}

+

Key Strength: {{ $certificate->key_bits }}-bit

+

Expiration Date: {{ $certificate->valid_to->format('d M Y H:i:s') }}

+
+ +

Please log in to your dashboard to renew this certificate before it expires to ensure uninterrupted service.

+ + Go to Dashboard + +

+ If you have already renewed this certificate, please ignore this message.
+ You are receiving this email because you have enabled certificate renewal alerts in your account settings. +

+
+ - -

Please log in to your dashboard to renew this certificate before it expires to ensure uninterrupted service.

- - Go to Dashboard - -

- If you have already renewed this certificate, please ignore this message.
- You are receiving this email because you have enabled certificate renewal alerts in your account settings. -

diff --git a/resources/views/emails/inquiry_reply.blade.php b/resources/views/emails/inquiry_reply.blade.php index d4bb4c4..a8e7269 100644 --- a/resources/views/emails/inquiry_reply.blade.php +++ b/resources/views/emails/inquiry_reply.blade.php @@ -2,10 +2,12 @@ + + TrustLab Support Inquiry Reply
-

Reset Your Password

+ TrustLab Logo
+

Reset Your Password

+

Hello {{ $name }},

You are receiving this email because we received a password reset request for your TrustLab account.

- Reset Password + Reset Password

This password reset link will expire in 60 minutes.

If you did not request a password reset, no further action is required.

@@ -83,7 +91,8 @@
diff --git a/resources/views/emails/test.blade.php b/resources/views/emails/test.blade.php index 5437710..25de5df 100644 --- a/resources/views/emails/test.blade.php +++ b/resources/views/emails/test.blade.php @@ -83,7 +83,7 @@
- TrustLab Logo + TrustLab Logo

SMTP Connection Test

diff --git a/resources/views/emails/verify-email.blade.php b/resources/views/emails/verify-email.blade.php index 848f486..955434e 100644 --- a/resources/views/emails/verify-email.blade.php +++ b/resources/views/emails/verify-email.blade.php @@ -2,10 +2,12 @@ + + TrustLab Email Verification
-

TrustLab Verification

+ TrustLab Logo +

Email Verification

Hello {{ $name }},

Thank you for joining TrustLab! Before you can start managing your certificates and API keys, we need you to verify your email address.

- Verify Email Address + Verify Email Address

If you did not create an account, no further action is required.

@@ -82,7 +95,8 @@