2014-01-20 52 views

回答

2

我不会看到Sentry被用于此,因为它是当前用户ID与文章作者ID的简单比较。要为此使用默认的Sentry权限,您需要为用户添加的每篇文章的用户权限添加一个新的权限,就我所知 - 或者以其他方式扩展Sentry包以使用自定义函数来处理此问题。

另一种方法是使用Sentry检查用户是否被允许首先添加文章,向用户添加作者权限或创建作者组,然后检查他们是否是所有者只是比较用户和作者ID。您还可以为编辑任何文章的用户提供编辑权限或群组。然后检查会是这样的:

//see if user can add article via sentry permissions 
if ($current_user->hasAccess('author')) 

//see if user can edit current article if they are author, or have edit permissions 
if (($current_user->id == article->author_id) || $current_user->hasAccess('edit')) 

与hasAccess(“编辑”)使用哨兵检查,如果用户可以编辑文章,即使他们不是作者的一部分。

您可能想抽象出所有者检查,但是如果您在多个位置检查,以防您改变您在任何时候评估所有权的方式。

+0

是的,我认为简单的解决方案就是这样。 感谢您的回答。 :) 但是,我认为条件语句应该使用&& not ||。 – antoniputra

+0

我想,我的问题由laravel acl回答。 :D – antoniputra

+0

如果必须满足两个条件(AND),那么您可以&& - 在上述情况下需要满足(OR)条件 - 该人员必须是所有者或编辑者 - 因此||用来 – glendaviesnz