Laravel Spatie / laravel-permissions命名约定

时间:2018-08-12 17:17:54

标签: laravel naming-conventions laravel-5.6 user-permissions spatie

在命名权限方面,我应该遵循一些命名准则吗?现在,我发现的所有内容都与“添加Foo”,“编辑Foo”,“删除Foo”,“添加FooBar”,“编辑FooBar”,“删除FooBar”等类似,依此类推。 / p>

请记住,没有分组(这是很可惜的),并且当您拥有所有所述权限的管理屏幕时,上述方法似乎很草率。

您所有的“添加项”都在一起,“编辑”项都在一起,依此类推。 例如:

 - Add Foo
 - Add FooBar
 - Add FooBarBez
 - Edit Foo
 - Edit FooBar
 - Edit FooBarBez
 - Delete Foo
 - Delete FooBar
 - Delete FooBarBez

现在,我倾向于按照路线名称的样子进行操作,例如:

 - foo.add
 - foo.edit
 - foo.delete
 - foobar.add
 - foobar.edit
 - foobar.delete
 - foobarbez.add
 - foobarbez.edit
 - foobarbez.delete

在将所有“父”权限保持在一起(即:所有Foo在一起,所有FooBar在一起等)方面,它更有条理。当然,如果有实际的指导方针,请告诉我或者您是否还有其他宝贵的意见/建议?

//编辑清晰度更新

具体地说,

- __Are__ any naming conventions? 
- Are there any preferences in terms of use of singular/plural when it comes to parents (eg: "User Create", "Users Create")
- If parents and action should be separated with a space, a dot, something else? (eg: "users.create"; "users create"; "users->create")
- What about nested resources (Parent.Child)? eg: "users.banking_details.create"
- Captilisation? Lowercase? Camel Case?

如前所述,倾向于以laravel命名的路线为准则,因此是:复数,小写字母,由点分隔,包括完整路径(父子关系)。仅仅因为那是我所追求的,但这并不意味着它是对的,因此我要求社区提供意见:)

4 个答案:

答案 0 :(得分:1)

我会使用the same names that Laravel uses when authorizing resources

  • view
  • create
  • update
  • delete

您可以在此处了解更多信息:Gate and authorization improvements in Laravel

答案 1 :(得分:1)

在文档中,他们列出了一个样本播种机,并提供了其他示例。 https://github.com/spatie/laravel-permission

'edit articles'
'delete articles'
'publish articles'
'unpublish articles'

我认为这不是一个很好的约定,所以我最终在PostController中做到了这一点:

function __construct()
{
  $this->middleware('auth', ['except' => ['index', 'show']]);
  $this->middleware(['permission:post create'], ['only' => ['create', 'store']]);
  $this->middleware(['permission:post edit'],   ['only' => ['edit', 'update']]);
  $this->middleware(['permission:post delete'], ['only' => ['delete']]);
}

我每次必须使用$ this,因为看来您不能链接中间件。

答案 2 :(得分:1)

<块引用>

有任何命名约定吗?

我不知道。正如您所指出的,这些示例使用“创建帖子”等,这是一种可怕的处理方式。

<块引用>

当涉及到父母时,在单数/复数使用方面是否有任何偏好(例如:“用户创建”、“用户创建”)

这真的取决于您的使用情况。下面是一个在不同情况下使用单数和复数的例子。

返回单个用户的路由可以受 user.read 保护,返回多个用户的路由可以受 users.read 保护。我认为最好的方法是使用对您和/或您的团队有意义的东西。

<块引用>

如果父母和动作应该用空格、点或其他东西分开? (例如:“users.create”;“users create”;“users->create”)

点是首选方法,尤其是当您要使用通配符时。

<块引用>

嵌套资源(Parent.Child)呢?例如:“users.banking_details.create”

完全可以使用,但是,在涉及通配符权限时要小心。 wildcard 权限将授予使用 ALL 子权限的权限。

如果您向某人授予 usersusers.* 权限(它们被视为相同),则他们将能够在此父项下执行所有权限。

<块引用>

字幕化?小写?骆驼套?

选择一致的风格并坚持下去。

我个人使用 Web 操作常用的命名约定 (CRUD)。

task.create
task.read
task.update
task.delete

答案 3 :(得分:0)

不用foo或其他东西,只需使用

  • 创建
  • 编辑
  • 视图
  • 更新
  • 破坏 当您开始进行身份验证时,它将帮助您并使步骤更容易。