Как использовать пакет полномочий для 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 должен быть изменен, чтобы иметь много разрешений вместо пользователя, имеющего много разрешений, не лучше ли это?

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


person JasonK    schedule 26.11.2014    source источник


Ответы (1)


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

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

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

person machuga    schedule 28.11.2014