我有一个问题,我想为用户创建一个重新激活选项,但经过多次尝试后,它无法正常工作,我很困惑。
这是中间件(原始版本):
$user = Auth::user();
$user->enabled = 1;
$user->save();
我想用这种方式更新我的数据库:
{{1}}
应该可以正常工作。
我是Laravel的新手。起初,我在中间件中添加了这些代码(这是一个错误)。
尝试了一下后,我知道它不可能工作(当用户点击两次登录时,他们将在停用他们的帐户后登录)。现在,我只是想知道如何实现这一点,因为我不断收到来自各地的错误消息。谢谢你的帮助!
答案 0 :(得分:0)
我已经在我的一个旧项目中完成了电子邮件确认和重新发送确认。我已经在LoginController中的登录后检查中完成了电子邮件确认验证。让我给你发一些可能对你有所帮助的片段。
// Overwrite the authenticated method in LoginController
protected function authenticated(Request $request, $user)
{
if ($user->isBanned()) {
$this->logout($request);
flashError('Your account has been banned.');
return back();
}
if (!$user->isEmailConfirmed()) {
$this->logout($request);
flashWarning('Email confirmation pending. <a href="'. route('confirm.resend', $user->id) .'">Click here</a> to resend confirmation email.');
return back();
}
return redirect()->route($this->redirectRoute);
}
public function resendConfirmationEmail(Request $request, User $user)
{
//resend confirmation email
}
public function confirmEmail(Request $request, $token)
{
// Validate the token and update the user email confirmation status
}
模型
public function isBanned()
{
return (bool) $this->banned;
}
public function isEmailConfirmed()
{
return (bool) $this->confirmed;
}
路线
Route::get('confirm/resend/{user}', 'Auth\RegisterController@resendConfirmationEmail')->name('confirm.resend');
Route::get('confirm/email/{token}', 'Auth\RegisterController@confirmEmail')->name('confirm.email');