根据角色

时间:2016-07-14 18:00:31

标签: laravel

我需要根据应用程序中的角色重定向用户。在MySQL中,我添加了" isAdmin" Users表中的列,用于检查用户是否为admin。我想出的唯一解决方案是根据用户的类型在同一刀片上呈现html。 例如。

@if(Auth::user()->isAdmin == 1)
<p>Hello, Admin</p>
//other html for admin

@else
//other html for users

有没有更好的方法来实现更美观和更有效的代码,因为这看起来很混乱? 我使用的是使用Laravel默认身份验证系统的软件包(https://github.com/acacha/adminlte-laravel)。

我想在用户登录过程中将用户重定向到两个不同的刀片,比如homeUsers.blade.php和admin.blade.php。

2 个答案:

答案 0 :(得分:2)

逻辑就在这里:最好的方法是创建两个表users和另一个roles,并将role_id作为外键放在users表中。然后创建一个角色belongsTo用户的关系。

但是,在您的情况下,如果您有两个视图,并且您希望为其他用户显示一个视图,请按照以下方法显示。

创建两个您想要在案例中使用的视图1)admin 2)homeUsers

@if(Auth::user()->isAdmin == 1)
  @include('admin') //admin.blade.php
@else
 @include('homeUsers') //homeUsers.blade.php

答案 1 :(得分:1)

我不确定您使用的是什么版本的Laravel,但这似乎应该在您的中间件中。

在中间件中查看RedirectIfAuthenticated.php。然后,您可以执行以下操作。

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

    return $next($request);
}