Как перенаправить на разные панели мониторинга после входа в Laravel's Spatie laravel / permissions package - PullRequest
0 голосов
/ 11 октября 2019

Я новичок в Laravel и использую Laravel 5.8 для создания приложения. Я использую пакет spatie / laravel / permissions для управления ролями и разрешениями приложения.

Все работает хорошо, но мне нужна помощь с перенаправлением разных пользователей на разные панели мониторинга при входе в систему.

У меня есть четыре типа пользователей: ADMIN, FACULTY, REGISTRAR и STUDENT. Когда они входят в приложение, я бы хотел, чтобы каждый из них перенаправлялся на свою собственную панель мониторинга. Вместо того, чтобы иметь одну унифицированную панель мониторинга.

Пожалуйста, помогите!

Ответы [ 3 ]

0 голосов
/ 11 октября 2019

https://laravel.com/docs/6.x/authentication#included-authenticating

Настройка пути

После успешной аутентификации пользователя они будут перенаправлены на URI / home. Вы можете настроить местоположение перенаправления после аутентификации, определив свойство redirectTo для LoginController, RegisterController, ResetPasswordController и VerificationController.

Если для пути перенаправления требуется пользовательская логика генерации, выможет определять метод redirectTo вместо свойства redirectTo:

protected function redirectTo()
{
    return '/path';
}

Именно в этой функции redirectTo вы можете определить, в какой путь отправлять пользователя, основываясь на его ролях.

0 голосов
/ 11 октября 2019

Вы можете изменить маршруты, чтобы использовать разные контроллеры для разных ролей:

Route::middleware("auth")->get("/home", function(){
    $user = \Auth::user();
    if ($user->hasRole("admin")) {
        return app()
            ->make(\App\Http\Controllers\AdminDashboardController::class)
            ->callAction("index", []);
    } else {
        return app()
            ->make(\App\Http\Controllers\UserDashboardController::class)
            ->callAction("index", []);
    }
});

Примечание : предыдущий ответ, который я написал, не работал, потому что Laravel сохраняет маршруты поих URL и не заботятся о промежуточном программном обеспечении или группе, поэтому последний всегда перезаписывает предыдущий.

0 голосов
/ 11 октября 2019

Привет, вам нужно создать разрешения для каждой панели мониторинга, а затем в индексном файле спросить, для какого подпредставления есть разрешение, если вы используете шаблон блейда, вы можете сделать это следующим образом

<div class='container'>

@if (Auth::user()->can('Admin'))
 @include('dashboards.admin')
@endif

@if (Auth::user()->can('FACULTY'))
 @include('dashboards.faculty')
@endif

@if (Auth::user()->can('REGISTRAR'))
 @include('dashboards.registrar')
@endif

</div>
...