创建'重新激活' Laravel中的选项

时间:2017-05-16 17:08:56

标签: php laravel middleware

我有一个问题,我想为用户创建一个重新激活选项,但经过多次尝试后,它无法正常工作,我很困惑。

这是中间件(原始版本):

    $user = Auth::user();
    $user->enabled = 1;
    $user->save();

我想用这种方式更新我的数据库:

{{1}}

应该可以正常工作。

我是Laravel的新手。起初,我在中间件中添加了这些代码(这是一个错误)。

尝试了一下后,我知道它不可能工作(当用户点击两次登录时,他们将在停用他们的帐户后登录)。现在,我只是想知道如何实现这一点,因为我不断收到来自各地的错误消息。谢谢你的帮助!

1 个答案:

答案 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');