Как использовать пакет Authority для Laravel

После некоторых поисков я успешно установил пакет Authority-l4 для использования в моем проекте Laravel. Документы понятные, но небольшие (не так много информации / примеров). Вот как мой конфигурационный файл выглядит как atm:

return array[

    'initialize' => function($authority) {
        $user = $authority->getCurrentUser();

        $authority->addAlias('manage', ['create', 'read', 'update', 'delete']);

        if($user->hasRole('admin')) {
            //Admin can manage all resources
            $authority->allow('manage', 'all');
        }

        // User can manage his own post
        Authority::allow('manage', 'User', function($self, $user){
            return $self->getCurrentUser()->id === $user->id;
        });

        // User can manage his own post
        Authority::allow('manage', 'Post', function($self, $post){
            return $self->getCurrentUser()->id === $post->id;
        });
    }

];

У меня есть несколько вопросов по этому поводу:

  1. Как добавить роль пользователю? hasRole() существует, почему бы и нет setRole()?
  2. Я заметил, что ничего не сохраняется в базе данных, не лучше ли?
  3. Как я могу использовать свою базу данных с полномочиями? Может ли кто-нибудь дать мне преимущество, я бьюсь уже четыре часа.
  4. В некоторых статьях говорится, что класс Role должно быть изменено, чтобы иметь много разрешений вместо пользователя, имеющего много разрешений, разве это не лучше?

Вероятно, я думаю, что сложно об этом пакете, поиск в Интернете тоже не поможет. Любая помощь приветствуется!

1 ответ

Я - автор Authority, и я поддерживаю Authority-14, хотя он был написан в основном Конаром Уэлшем.

  1. Поскольку роли, как определено в пакете, являются просто отношением Eloquent, вы можете просто добавить их, как и любое другое отношение в Eloquent.
  2. Понятия не имею, о чем ты здесь спрашиваешь, можешь перефразировать?
  3. Можете ли вы уточнить вопрос, выходящий за рамки того, что находится в readme (часть чуть выше общего использования)?
  4. Вероятно - либо работает. Вам не нужно использовать эту структуру, чтобы использовать Authority-l4. Это просто дополнительная структура, которую вы можете настроить на 100% по своему усмотрению. Лично я не использую это вообще, а просто использую созданный им фасад Authority. Большинство моих разрешений не хранятся в БД, хотя это играет важную роль.

Идея, стоящая за властью, заключается в том, что она не зависит от реализации. Это действительно не волнует, где вы храните ваши данные, вам просто нужно сообщить властям, что делать с вашими правилами. Чтение раздела readme, на который есть ссылки выше, и readme, посвященного репозиторию ядра Authority, должны дать вам общее представление о том, как он ожидает, что информация будет загружена - все, что остается на ваше усмотрение.

Другие вопросы по тегам