Laravel 5.3 Eloquent 关系 - 用户、角色、页面和权限

Posted

技术标签:

【中文标题】Laravel 5.3 Eloquent 关系 - 用户、角色、页面和权限【英文标题】:Laravel 5.3 Eloquent Relationship - User, Role, Pages and Permissions 【发布时间】:2017-03-17 11:38:31 【问题描述】:

我正在为我的应用程序开发一种 ACL,使用 4 个表:

all tables and relationships

我可以得到关系

    用户和角色:

    $user = App\Models\User::find( Auth::user()->id );
    //
    foreach( $user->roles as $user_role )
    ...
    

    角色和页面:

    $roles = App\Models\Role::find( $user_role->id );
    //
    foreach( $roles->pages as $role_page )
    ...
    

但我被困在最后一部分,即获得用户有权访问的页面的权限。我不知道怎么做。


我觉得我没有说清楚……

我真正需要的是,获取用户可以访问的页面的权限。

例子:

用户 1 - 具有角色 1 - 管理员的 Mike,可以访问页面 1 - 主页、2 - 发布和 3 - 仪表板,现在我需要列出每个页面的权限..

你能帮我编码吗?

感谢和抱歉我的英语不好

【问题讨论】:

你需要从 Laravel 5.3 授权页面获得帮助。 laravel.com/docs/5.3/authorization 【参考方案1】:

您可以为此使用 spatie/laravel-permission

【讨论】:

【参考方案2】:

如果我理解得很好,您正在列出用户可以访问的页面

如何获得该页面的权限?

你看到桌子的图片了吗?

谢谢!

【讨论】:

【参考方案3】:

感谢您可以尝试这样的方式从用户那里获取页面:

$user = App\Models\User::find( Auth::user()->id );
//
foreach( $user->roles as $user_role ) 
  $user_pages = $user_role->pages;
  //...

看看这部分文档,也许会对你有所帮助:https://laravel.com/docs/5.3/eloquent-relationships#has-many-through

【讨论】:

以上是关于Laravel 5.3 Eloquent 关系 - 用户、角色、页面和权限的主要内容,如果未能解决你的问题,请参考以下文章

laravel 5.3 关系模型使用非默认键

从 5.1 迁移到 5.3 时急切加载关系的 Laravel 错误

Vue 2 Laravel 5.3 Eloquent 无法从对象中检索数据

Laravel 5.3 Eloquent 交易和外键限制

如何处理带有斜线的 Laravel Eloquent “WHERE”查询? (Laravel 5.3)

Laravel 关系上的枢轴关系 (Eloquent)