SWEET1S / moonshine-roles-permissions

RBAC (Role-Based Access Control) in Laravel Moonshine Admin Panel
MIT License
18 stars 3 forks source link

feat: :sparkles: Инициализация уже имеющихся разрешений в проекте #4

Closed forest-lynx closed 5 months ago

forest-lynx commented 5 months ago

Реализовал добавление разрешений в базу данных в случае когда установка пакета происходит где уже реализованы ресурсы Moonshine, при наличии в них трейта WithRolePermissions текущего пакета.

SWEET1S commented 5 months ago

Здравствуйте, интересный PR, но пакет уже создает автоматически права при заходе в ресурсе с трейтом WithRolePermissions. В MoonshineRBAC провайдере когда проверяется права, проверяется существования прав в таблице, если их нету, скрипт создаёт их. Этот скрипт находится в трейте, который мы добавили для Role модели.

В Провайдере есть вот такой код

              foreach ($user->roles as $role) {
                    $hasPermission = $role->isHavePermission(
                        class_basename($resource::class),
                        $ability
                    );

                    if ($hasPermission) {
                        break;
                    }
                }

Вызывается функция isHavePermission() из трейта.

В целом можно добавить, но это не обязательный шаг для установки пакета. Что думаете ?

forest-lynx commented 5 months ago

Добрый день! При развертывании проекта на другой локальной машине у меня не произошло автоматическое добавление разрешений, вот и подумал, что при инициализации было бы неплох автоматизировать процесс добавления разрешений. Думаю в таком случае действительно нет необходимости добавления такого функционала. Спасибо за указание на методы автоматического добавления разрешений, изначально не обратил на это внимание. Есть предложение, чисто по улучшению, перевести команды на Laravel Prompts. Если одобряете, могу в ближайшее время заняться этим вопросом.

SWEET1S commented 5 months ago

Здравствуйте, возможно не произошло, потому что нужно зайти в ресурс и только тогда он начнет создавать права. Думаю функционал был бы интересный для версии 1.х, там было сложнее сделать такое, но сейчас процесс автоматизирован 🤗

Насчет Laravel Prompts, идея суперская, тоже хотел внедрить этот пакет, но руки не доходили. Спасибо за следующий PR, но думаю не очень сильно важный, или чтоб просто оптимизировать пакет, можете убрать как важный шаг из документации и просто добавить как функцию, которая создаёт эти права при установке пакета, вдруг пакет поставят на Проде и чтоб не грузить базу в лишний раз. Можно ещё добавить в документацию по командам.

forest-lynx commented 5 months ago

Добрый день! Внес корректировки для включения данного функционала как вспомогательного. На следующей неделе займусь тогда Promts.

SWEET1S commented 5 months ago

Здравствуйте, вы забыли зарегистрировать команду в Провайдере

forest-lynx commented 5 months ago

Добрый день! Добавил.