我想查看中间件中的帐户状态。状态由tinyint表示。如果它是1那么它被激活,否则为0.
在App \ Http \ Middleware \ Authenticate中,我有:
;[].forEach.apply(arguments, iterator)
;(function(){})()
$ request-> input('status')== 0可能是错误的。我该怎么做?
答案 0 :(得分:1)
首先,我建议您在检查状态之前检查用户是否是来宾。否则,您正试图抓住客人的状态,这是不可能的。
其次,您可以使用user
方法访问该用户,这样您就可以像这样抓住用户的状态:
public function handle($request, Closure $next)
{
if ($this->auth->guest()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('auth/login');
}
}
if ($this->auth->user()->status === 0) {
Session::flash('message', 'Your account hasn\'t been activated, please try again later.');
return redirect('/');
}
return $next($request);
}
额外花絮:Laravel有$casts
属性,您可以添加到模型中。因此,如果您将此添加到您的用户模型:
protected $casts = [
'status' => 'boolean'
];
它会自动转换" cast" status
为一个布尔值,所以你可以这样做:
if (!$this->auth->user()->status) {
// User's status is false
}