Files
chatroom/app/Notifications/ResetUserPasswordNotification.php
T

63 lines
1.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* 文件功能:前台用户邮箱找回密码通知
*
* 自定义找回密码邮件标题与正文文案,统一跳转到前台独立重置页。
*/
namespace App\Notifications;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
/**
* 类功能:向用户发送邮箱重置密码邮件。
*/
class ResetUserPasswordNotification extends Notification
{
/**
* 创建通知实例时保存本次重置令牌。
*/
public function __construct(
#[\SensitiveParameter]
public string $token
) {}
/**
* 指定该通知只通过邮件渠道发送。
*
* @return array<int, string>
*/
public function via(mixed $notifiable): array
{
return ['mail'];
}
/**
* 构建找回密码邮件内容。
*/
public function toMail(mixed $notifiable): MailMessage
{
return (new MailMessage)
->subject('和平聊吧 - 邮箱找回密码')
->greeting('您好,'.$notifiable->username.'')
->line('系统收到了这次密码找回申请,请点击下方按钮重新设置登录密码。')
->line('该链接仅适用于当前绑定邮箱的账号,请勿转发给他人。')
->action('立即重置密码', $this->buildResetUrl($notifiable))
->line('重置链接将在 '.config('auth.passwords.'.config('auth.defaults.passwords').'.expire').' 分钟后失效。')
->line('如果这不是您本人发起的操作,直接忽略本邮件即可。');
}
/**
* 生成前台独立重置密码页面地址。
*/
private function buildResetUrl(mixed $notifiable): string
{
return url(route('password.reset', [
'token' => $this->token,
'email' => $notifiable->getEmailForPasswordReset(),
], false));
}
}