Laravel仅允许具有超级管理员角色的用户通过Auth

时间:2017-06-09 03:58:44

标签: php authentication laravel-5.4 entrust

我已经为角色和权限实施了entrust。我有3个角色,超级管理员,管理员和客户。

超级管理员可以访问网络应用程序(例如www.myurl.com)

管理员只能通过api.php路径访问api即移动应用(例如www.myurl.com/api/login)

客户可通过api即移动应用访问

现在,我发现了一个错误,当管理员尝试使用他的凭据通过www.myurl.com.login登录时,他可以登录!!!

在进一步调查中,我发现我需要更改login方法并在登录时提供角色检查,但我无法通过。我改变了登录功能如下,但仍然管理员和客户能够登录!

public function login(Request $request)
{
    $this->validateLogin($request);


    if ($this->hasTooManyLoginAttempts($request)) {
        $this->fireLockoutEvent($request);

        return $this->sendLockoutResponse($request);
    }

//I updated the following code of default login function.
    $checkAdmin = $this->attemptLogin($request);
    $isAdmin = Auth::user();

    if ( $checkAdmin  && $isAdmin->hasRole('super')) {
        //With super-admin if I do dd('hi') here, I am getting control
        return $this->sendLoginResponse($request);
    }
    //But for other roles, it is directly taking them to the super-admin (home) page!!
    .
    . //Rest of the login function...

我试图让dd(1)知道流程,但是对于超级用户我获得了dd响应,而对于其他用户,它没有进入该块并重定向非超级管理员角色到主页!!

我正在使用Laravel 5.4entrust package作为角色。

0 个答案:

没有答案