Как проверить почти одинаковое разрешение для разных ролей - PullRequest
0 голосов
/ 16 января 2019

Сценарий 1:

Предположим, у меня есть отпускная система с 3 пользователями super-admin, manager и user.

  • super-admin может пометить свои собственные отправленные листья и листья, отправленные manager и user
  • manager может испачкать ее собственные листья и user
  • user может растирать только ее собственные листья

Я установил следующие разрешения для данных правил:

  • Super Admin: create-all, retrieve-all, update-all, delete_all
  • Manager: create-sub, retrieve-sub, update-sub, delete_sub
  • User: create-self, retrieve-self, update-self, delete_self

Я не могу использовать это для программирования, так как это сильно усложнит процесс тестирования. Как я должен увидеть, если роль - user, тогда посмотрите другие разрешения, и если пользователь - manager, тогда проверьте другое разрешение.

Сценарий 2:

Если бы у меня было только одно разрешение, такое как create leave для admin, manager и user, тогда у всех было бы одинаковое разрешение. Для проверки разрешения будет достаточно следующей политики:

    class LeavePolicy
{
    /**
     * Determine if the given leave can be updated by the user.
     *
     * @param  \App\User  $user
     * @param  \App\Leave  $leave
     * @return bool
     */
    public function update(User $user, Leave $leave)
    {
        if($user->roleIs('manager') {
            return $user->id === $leave->user->manager_id;
        }
        elseif($user->roleIs('user') {
            return $user->id === $leave->user_id;           
        }

        return false
    }
}

Но каков будет лучший подход для sceanrio 1? Может кто-нибудь, пожалуйста, поделитесь опытом, пожалуйста. Спасибо всем телом!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...