Как проверить роль пользователя перед входом в систему пользователя с разрешением Sparae Laravel-Permission? - PullRequest
0 голосов
/ 24 июня 2019

Я использую пакет Spatie "Laravel Permission" для ACL.Все работает отлично.Теперь я хочу разрешить только Пользователям роли 2 и 3 для входа в систему.

Ранее, до использования пакета «Laravel Permission», в моей таблице был только этот столбец «роли», и я мог легко войти в систему с помощью этой строки кода в методе учетных данных контроллера входа.

protected function credentials(Request $request)
{
$credentials = $request->only($this->username(), 'password');
//$credentials['role'] = '1';
return $credentials;
}
$credentials = $request->only($this->username(), 'password');
$credentials['role'] = '1';

Как разрешить вход в систему только для 2 и 3 пользовательских ролей?

1 Ответ

0 голосов
/ 24 июня 2019

Вы можете использовать обходной путь следующим образом:

Если вы используете LoginController по умолчанию из папки App \ Http \ Controllers \ Auth , тогдапереопределить его tryLogin () метод, который исходит от используемой Черты.

    protected function attemptLogin(Request $request)
    {
        if( $this->guard()->attempt(
            $this->credentials($request), $request->filled('remember')
        ) ) { // Credential auth was successful
            // Get user model
            $user = Auth::user();
            return $user->hasRole([2, 3]); // Check if user has role ids 2 or 3
        }

        return false;
    }

hasRoles () метод происходит от используемой черты HasRoles для модели Пользователь .

Надеюсь, это поможет.

...