2014-01-20 85 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