首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拉勒维尔-如何清理记录与所有权?

拉勒维尔-如何清理记录与所有权?
EN

Stack Overflow用户
提问于 2017-06-07 08:25:25
回答 2查看 375关注 0票数 0

假设我有多个用户-管理员,经理,用户。用户可以使用他拥有的CRUD记录。经理可以查看他和他的用户拥有的记录。管理员可以CRUD所有的记录。如何在Laravel实现这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-07 09:07:25

如果您只有一个角色,请使用中间件。

如果您有多个角色,就像您说的那样,您可以使用Laravel提供的门/策略。

若要处理管理,请在筛选之前使用

代码语言:javascript
复制
public function before($user, $ability)
{
    return ($user->is_admin) ? true : null; //return null so we continue authorising further
}

要处理管理器\用户,您将使用以下内容(最棘手的一个):

代码语言:javascript
复制
public someCRUDaction(User $current, Item $item) {
    return $item->created_by == $current->id || $current->users->contains('id', $item->created_by); // you need to handle logic if item belongs to manager
}

注意事项:如果当前用户是项的所有者,则$item->created_by == $current->id是不言自明的。

如何使用策略(我将与策略一起使用)和大门:

https://laravel.com/docs/5.4/authorization#writing-policies

请记住,您不想验证任何东西--仅仅是$current用户可以执行操作X吗?

使用策略时,您需要检查用户是否至少可以执行两次操作X(在视图和控制器/路由/自定义表单请求中-在这里处理验证)。

票数 0
EN

Stack Overflow用户

发布于 2017-06-07 08:35:56

您可以创建一个中间件,用于验证当前用户的角色和操作所选用户的角色。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44407356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档