如何使用 laravel 管理中间件以将不同的用户留在自己的仪表板/配置文件中



当哪种类型的用户登录时,我该怎么做 它保持自己的仪表板/配置文件。用户和超级管理员还可以,但是当我使用 branchAdmin 帐户登录并在浏览器中写入其他用户 url 时,它会在其仪表板上停留,它不会保留在自己的帐户中。

路线:

Route::group(['middleware'  =>  [ 'auth', 'isAdmin']], function(){
        Route::get('/profile','ProfileController@getIndex');
    });
    Route::group(['middleware'  =>  [ 'auth', 'isBranchAdmin']], function(){
        Route::get('/branch','BranchController@gettIndex');
    });
    Route::group(['middleware'  =>  [ 'auth', 'isNotAdmin']], function(){
    Route::get('/Super/admin', 'AdminController@getIndex');
        });

视图:

 <div class="col-xs-12 col-sm-12 col-md-3 col-lg-3">
        @if(Auth::check() && Auth::user()->type === 'User')
            <ul class="nav nav-pills nav-stacked">
                <li role="presentation" class="active">
                    <a id="bootstrap-overrides" href="/home">
                        Home
                    </a>
                </li>
                <li role="presentation">
                    <a id="bootstrap-overrides" href="/contact">
                        Contact
                    </a>
                </li>
                <li role="presentation">
                    <a id="bootstrap-overrides" href="/about">
                        About
                    </a>
                </li>
                <li role="presentation">
                    <a id="bootstrap-overrides" href="/blog">
                        Blog
                    </a>
                </li>
                <li role="presentation">
                    <a id="bootstrap-overrides" href="/faqs">
                        FAQs
                    </a>
                </li>
            </ul>
        @elseif(Auth::check() && Auth::user()->type === 'Admin')
            <ul class="nav nav-pills nav-stacked">
                <li role="presentation" @if(Request::path() === 'companies') class="active" @endif>
                    <a href="/companies">
                        Companies
                    </a>
                </li>
                <li role="presentation" @if(Request::path() === 'branchies') class="active" @endif>
                    <a href="/branchies">
                        Branchies
                    </a>
                </li>
            </ul>

中间件:

用户是管理员:

class UserIsAdmin
{
    public function handle($request, Closure $next)
    {
        if(Auth::user()->type === 'Admin'){
            return redirect('/Super/admin');
        }
        return $next($request);
    }
}

UserIsNotAdmin:

class UserIsNotAdmin
{
    public function handle($request, Closure $next)
    {
        if(Auth::user()->type === 'User'){
            return redirect('/profile');
        }
        return $next($request);
    }
}

分行管理员:

class BranchAdmin 
{                note-> (" This middleware is not working ")
    public function handle($request, Closure $next){
        if(Auth::user()->type === 'BranchAdmin'){
            return redirect('/branch');
        }
        return $next($request);
    }
}

内核.php:

protected $routeMiddleware = [
        'auth' => IlluminateAuthMiddlewareAuthenticate::class,
        'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
        'bindings' => IlluminateRoutingMiddlewareSubstituteBindings::class,
        'can' => IlluminateAuthMiddlewareAuthorize::class,
        'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
        'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
        'check_auth' => AppHttpMiddlewareCheckIfUserIsAuthenticated::class,
        'isAdmin' => AppHttpMiddlewareUserIsAdmin::class,
        'isNotAdmin' => AppHttpMiddlewareUserIsNotAdmin::class,
        'isBranchAdmin' => AppHttpMiddlewareBranchAdmin::class
    ];

在句柄方法中的BranchAdmin类中,您将用户重定向到branch您应该检查URL的路径是否不是这样/branch

 public function handle($request, Closure $next){
    if(Auth::user()->type === 'BranchAdmin' && $request->path() != 'branch'){
        return redirect('/branch');
    }
    return $next($request);
 }

希望这对:)有所帮助

最新更新