0

使用 Entrust,我通过在Authcontroller.php

protected function authenticated()
{

    if(\Auth::user()->hasRole(['super_admin',]) ) {
        return redirect('/dashboard');
    } else if(\Auth::user()->hasRole(['staff_admin']) ) {
        return redirect('/staff/dashboard');
    } else if(\Auth::user()->hasRole(['subadmin_admin']) ) {
        return redirect('/subadmin/dashboard');
    }
}

我现在面临的挑战是,例如。如果员工已登录并重定向到他的仪表板

domain.com/staff/dashboard

但是如果他从 url 手动删除员工并尝试访问超级管理员仪表板,则 Entrust 会抛出 403 错误,但我想将他重定向到他的仪表板,并显示“您未获得授权”的消息。

我尝试在 RedirectIfAuthenticated 中间件中实现相同的代码,但它给出了错误,因为 hasRole 在 Null 上调用。

4

1 回答 1

0

您的 DashboardController 添加构造函数。

示例代码

class UserController extends Controller
{
        public function __construct()
        {
            $this->middleware(['role:super_admin']);
        }

        public function index()
        {
        return view('dashboard');
        }
}

然后,错误文件夹添加 403.blade.php,如下所示:

<!DOCTYPE html>
<html>
    <head>
        <title>Be right back.</title>

        <link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css">

        <style>
            html, body {
                height: 100%;
            }

            body {
                margin: 0;
                padding: 0;
                width: 100%;
                color: #B0BEC5;
                display: table;
                font-weight: 100;
                font-family: 'Lato', sans-serif;
            }

            .container {
                text-align: center;
                display: table-cell;
                vertical-align: middle;
            }

            .content {
                text-align: center;
                display: inline-block;
            }

            .title {
                font-size: 72px;
                margin-bottom: 40px;
            }
        </style>
    </head>
    <body>
        <div class="container">
            <div class="content">
                <div class="title">You are not authorized.</div>
            </div>
        </div>
    </body>
</html>
于 2016-08-24T19:45:46.427 回答