需要在单个资源控制器中使用Entrust角色的建议-Laravel5

法罗姆

我正在使用控制面板应用程序,其中我具有多个用户角色,例如globaladmin,编辑器等。现在,我想将这些角色与单个UserController资源一起使用。

例如,globaladmins应该能够执行所有Restful方法,而编辑者只能查看和更新​​用户。

我知道委托与中间件一起提供,非常适合我的需求。但是它仅在路由上起作用(在这种情况下,我需要为每个角色使用单独的控制器)

我的UserController看起来像这样。

Class UserController extends BaseController
{
     $protected $viewfolder;
     public function __construct
     {
        // Checking for role and then assigning the folder name of the views
        $role = User::getRole();
        switch($role)
        case 'globaladmin':
              $this->viewfolder = 'globaladmin';
              break;
        case 'editor':
              $this->viewfolder = 'editor';
              break;
        default:
              abort(401, 'Access Denied');
              break;
     }

     public function index(){
        if( Entrust::can('view-all-users') ){
            $users = User:all();
        }
        return view( $this->viewfolder.'.users.viewuser', compact('users'));
     }
     public function create()
     public function update()
     public function delete()
}

我在构造函数中需要一个中间件,该中间件将检查用户角色,然后仅在角色具有使用权限的情况下才允许使用该方法。但这应该以一种体面的方式完成,不要有任何黑客,因为我也将在其他控制器上使用它。

svrnm

我假设您在路由文件中使用以下内容:

Route::resource('users', 'UserController');

在这种情况下,我建议您使用Entrust提供的一种中间件作为基础并检索被调用的方法,例如,如果使用EntrustRole:

public function handle($request, Closure $next)
{
    $controllerMethod = Route::segment(3);
    $roles = $this->retrieveRequiredRolesForMethod($method);
    if ($this->auth->guest() || !$request->user()->hasRole(explode('|', $roles))) {
        abort(403);
    }
    return $next($request);
}

当然,这只是一个提示,您应该找到一种更好的方法来提取被调用的方法,并且仍然需要实现 retrieveRequiredRolesForMethod

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在laravel5中使用memcached

来自分类Dev

在laravel5中使用memcached

来自分类Dev

laravel5用户角色和权限

来自分类Dev

如何使用laravel5 Ajax发布

来自分类Dev

Laravel5不能使用包

来自分类Dev

如何使用laravel5 Ajax发布

来自分类Dev

Laravel5 CSRF筛选器:返回HTTP 422错误

来自分类Dev

laravel5 Eloquent 和查询构建器

来自分类Dev

Laravel5使用参数重定向到外部URL

来自分类Dev

使用 Laravel5 的 facebook 应用程序的 TokenMismatchException

来自分类Dev

使用 Laravel5 连接表格和打印数据

来自分类Dev

如何在Laravel5的另一个控制器中使用一个控制器作为服务

来自分类Dev

路由到Laravel5中控制器中的方法

来自分类Dev

laravel5控制器问题。未定义的变量:文件名

来自分类Dev

如何将输入类型的隐藏值从视图传递到laravel5中的控制器

来自分类Dev

在Laravel5中使用雄辩模型获取表值

来自分类Dev

如何在我的自定义登录Laravel5中使用哈希

来自分类Dev

Laravel5:如何在迁移中使用时间戳字段

来自分类Dev

Laravel5:找不到[app]。资源/视图/auth/login.blade.php

来自分类Dev

Laravel5:为什么我的模型“媒体”需要名为“媒体”的表而不是“媒体”?

来自分类Dev

我正在使用laravel5。我正在使用Flash消息传递,但无法正常工作

来自分类Dev

使用传入应用名称作为参数的bash函数创建Laravel5应用

来自分类Dev

没有使用Response在Laravel5上下载文件

来自分类Dev

如何在Laravel5上使用单元测试检查路线

来自分类Dev

使用传入应用名称作为参数的bash函数创建Laravel5应用

来自分类Dev

使用不带domain.com/language/的Laravel5进行本地化

来自分类Dev

无法使用 Windows10 打开文件“/tests/ExampleTest.php”Laravel5

来自分类Dev

如何使用laravel5从数据mysql中提取json数据作为对象?

来自分类Dev

我无法为用户 'homestead'@'localhost' 创建迁移 Laravel5 Access denied(使用密码:YES)

Related 相关文章

  1. 1

    在laravel5中使用memcached

  2. 2

    在laravel5中使用memcached

  3. 3

    laravel5用户角色和权限

  4. 4

    如何使用laravel5 Ajax发布

  5. 5

    Laravel5不能使用包

  6. 6

    如何使用laravel5 Ajax发布

  7. 7

    Laravel5 CSRF筛选器:返回HTTP 422错误

  8. 8

    laravel5 Eloquent 和查询构建器

  9. 9

    Laravel5使用参数重定向到外部URL

  10. 10

    使用 Laravel5 的 facebook 应用程序的 TokenMismatchException

  11. 11

    使用 Laravel5 连接表格和打印数据

  12. 12

    如何在Laravel5的另一个控制器中使用一个控制器作为服务

  13. 13

    路由到Laravel5中控制器中的方法

  14. 14

    laravel5控制器问题。未定义的变量:文件名

  15. 15

    如何将输入类型的隐藏值从视图传递到laravel5中的控制器

  16. 16

    在Laravel5中使用雄辩模型获取表值

  17. 17

    如何在我的自定义登录Laravel5中使用哈希

  18. 18

    Laravel5:如何在迁移中使用时间戳字段

  19. 19

    Laravel5:找不到[app]。资源/视图/auth/login.blade.php

  20. 20

    Laravel5:为什么我的模型“媒体”需要名为“媒体”的表而不是“媒体”?

  21. 21

    我正在使用laravel5。我正在使用Flash消息传递,但无法正常工作

  22. 22

    使用传入应用名称作为参数的bash函数创建Laravel5应用

  23. 23

    没有使用Response在Laravel5上下载文件

  24. 24

    如何在Laravel5上使用单元测试检查路线

  25. 25

    使用传入应用名称作为参数的bash函数创建Laravel5应用

  26. 26

    使用不带domain.com/language/的Laravel5进行本地化

  27. 27

    无法使用 Windows10 打开文件“/tests/ExampleTest.php”Laravel5

  28. 28

    如何使用laravel5从数据mysql中提取json数据作为对象?

  29. 29

    我无法为用户 'homestead'@'localhost' 创建迁移 Laravel5 Access denied(使用密码:YES)

热门标签

归档