какая логика в RedirectIfAuthenticated в Laravel 5.6? - PullRequest
0 голосов
/ 16 мая 2019

У меня есть 3 пользователя: «admin», «mahasiswa» и «dosen» (разные таблицы).Я хочу, если, например, пользователь "admin" вошел в систему, получает доступ к главной ссылке (например, localhost), а затем перенаправить на localhost / admin / home.Теперь в случае, когда пользователь вошел в систему и получил доступ к главной странице (localhost), форма входа будет отображаться снова.спасибо

Это RedirectIfAuthenticated:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RedirectIfAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            return redirect('/home');
        }

        return $next($request);
    }
}

и это Auth.PHP

'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
        'mahasiswa' => [
            'driver' => 'session',
            'provider' => 'mahasiswa',
        ],
        'dosen' => [
            'driver' => 'session',
            'provider' => 'dosen',
        ],
    ],

    

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        'mahasiswa' => [
            'driver' => 'eloquent',
            'model' => App\Mahasiswa::class,
        ],
        'dosen' => [
            'driver' => 'eloquent',
            'model' => App\Dosen::class,
        ],
    ],

1 Ответ

0 голосов
/ 16 мая 2019

Вы можете применить проверку в своем промежуточном программном обеспечении, в зависимости от того, какой $guard это, вы можете сделать что-то вроде этого:

    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            if($guard == 'mahasiswa')
                return redirect('/mahasiswa/home');
            elseif($guard == 'dosen')
                return redirect('/dosen/home');
            elseif($guard == 'web')
                return redirect('/admin/home');
            else
                return redirect('/home');
        }

        return $next($request);
    }
...