如何在拉拉维尔中重新发送电子邮件链接功能



我有这个功能,几乎默认地从laravel auth注册用户,我添加了这个发送电子邮件功能。但是现在我想知道我如何制作一个功能,如果他们单击"重新发送链接",例如如果他们第一次没有收到,我将再次发送电子邮件。

发送电子邮件的注册功能

protected function create(array $data)
{
$user = Account::create([
'login' => $data['login'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'verifyToken'=> Str::random(40),
'active' => (env('CONFIRM_EMAIL', true)) ? 0 : 1
]);
$thisUser = Account::findOrFail($user->id);
$this->sendEmail($thisUser);
return $user;
}

这是发送电子邮件功能

public function sendEmail($thisUser){
Mail::to($thisUser['email'])->send(new verifyEmail($thisUser));
}

这两个功能都运行良好,但有时当我注册新用户时,我没有得到链接,我需要从数据库中删除它并重新注册它。

在用户身上设置新的验证令牌,甚至重复使用旧的验证令牌。然后再次发送电子邮件。通过电子邮件加载用户,这样他们就不必登录。

Route::post('users/verify', 'UserController@resend')
protected function resend(Request $request)
{
$user = User::where('email', $request->input('email'))->first();
$user->verifyToken = Str::random(40);
$user->save();
$this->sendEmail($user);
return $user;
}

调用控制器的一个非常基本的示例窗体。他们需要提供电子邮件,因为您也不知道要重新发送哪个用户。

<form action=" {!! route('resendEmail') !!}" method="POST">
<label for="email">Your email</label>
<input type="text" id="email" name="email" value="example@email.com">
<input type="submit" value="Submit">
</form>

最新更新