我需要检查用户是否已通过电子邮件注册和确认。
现在,我知道Laravel已经检查用户是否已经存在。
我需要的是做这样的事情:
if($found_user->exists && $found_user->confirmed == 1)
{
//do this
}else if($found_user->exists && $found_user->confirmed == 0)
{
//do that
}
我可以轻松地在RegisterController
中,在函数create(array $data)
中做到这一点,但我觉得它不是放置函数的正确位置,因为它在被验证后被调用
是否有适当的地方可以放置它还是应该留在创作中?
答案 0 :(得分:0)
您需要了解Protecting Routes
您可以将auth
中间件附加到要保护的路由,或直接在控制器的__construct
中
Laravel附带一个auth中间件,在Illuminate \ Auth \ Middleware \ Authenticate中定义
如果您需要own Auth middleware,可以输入以下内容
php artisan make:middleware MyOwnAuth
通过这种方式,您可以检查用户是否在您需要的页面上确认
答案 1 :(得分:0)
我决定把它放在函数中。
create(array $data){
$this->check_user_confirmation($data["email"])
...
}
虽然我知道某个地方有一个功能来检查用户是否已经存在,并且在那里进行检查是最佳的,但它可能是我不喜欢在任何框架中修改的应用程序核心的一部分
如果其他人有更好的想法,我仍然是开放的。
答案 2 :(得分:0)
你的更好的版本Laravel有中间件设施,中间件的基本概念是做限制而不将请求传递给服务器,就像过滤器一样。
<?php
namespace App\Http\Middleware;
use Closure;
class CheckConfirmedUser {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
*
* @return mixed
*/
public function handle( $request, Closure $next ) {
if ( $found_user->exists && $found_user->confirmed == 1 ) {
//do this
} else if ( $found_user->exists && $found_user->confirmed == 0 ) {
//do that
}
return $next( $request );
}
}
您需要查询$found_user