Как проверить роль пользователя в Laravel 5.8s Встроенная аутентификация? - PullRequest
0 голосов
/ 16 июня 2019

У меня есть столбец «Роль пользователя» в таблице моего пользователя.

  • обозначает Super Admin,
  • обозначает других пользователей

Я проверил много учебников Laravel, и ни одно из них не помогло мнерешить эту проблему.

Я нашел способы, например, заменить целую Login Controller Laravel и заменить черту Authenticate Users на нашу собственную.Я хочу решить мою проблему с минимальным изменением кода.Является ли это возможным?

Как реализовать это с минимальными изменениями кода в этом методе Trait?

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


    if (method_exists($this, 'hasTooManyLoginAttempts') &&
        $this->hasTooManyLoginAttempts($request)) {
        $this->fireLockoutEvent($request);

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

    if ($this->attemptLogin($request)) {
        return $this->sendLoginResponse($request);
    }


    $this->incrementLoginAttempts($request);

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

Ответы [ 2 ]

1 голос
/ 16 июня 2019

Вы можете сделать что-то настолько простое, как добавление функции isSuperAdmin в модель User.После входа в систему вы просто вызываете эту функцию у пользователя всякий раз, когда вам нужно проверить.

В модели User.php

  public function isSuperAdmin()
  {
      return $this->user_role == 1;
  }

Тогда вы также можетесоздайте промежуточное ПО, использующее эту функцию.

php artisan make:middleware SuperAdmin

В функции дескриптора этого промежуточного ПО ( app / http / middleware / SuperAdmin.php ):

public function handle($request, Closure $next)
{
    if (Auth::check() && Auth::user()->isSuperAdmin()) {
        return $next($request);
    }
    return redirect('some-route-for-unauthorized-users');

}

Затем в ваших маршрутах (возможно, web.php) вы можете использовать это промежуточное ПО для защиты маршрутов:

Route::group(['middleware' => ['auth', 'superadmin']], function () {
    ... put protected routes here ...
});
0 голосов
/ 16 июня 2019

Раствор

        /**
         * Create a new controller instance.
         *
         * @return void
         */
        public function __construct() {
            $this->middleware('guest')->except('logout');
        }

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