| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- <?php
- namespace Database\Seeders;
- use App\Models\Permission;
- use Illuminate\Database\Seeder;
- use App\Services\PermissionService;
- class PermissionSeeder extends Seeder
- {
- public function __construct(
- protected PermissionService $permissionService,
- ) {}
- public function run(): void
- {
- $permissions = [
- [
- "scope" => "dashboard",
- "description" => "Dashboard",
- "bits" => Permission::ALL_PERMS,
- "children" => [],
- ],
- [
- "scope" => "config",
- "description" => "Configurações",
- "bits" => Permission::MENU | Permission::VIEW,
- "children" => [
- [
- "scope" => "config.user",
- "description" => "Configurações de Usuários",
- "bits" => Permission::CRUD,
- "children" => [],
- ],
- [
- "scope" => "config.permission",
- "description" => "Configurações de Permissões",
- "bits" => Permission::CRUD,
- "children" => [],
- ],
- [
- "scope" => "config.city",
- "description" => "Configurações de Cidades",
- "bits" => Permission::CRUD,
- "children" => [],
- ],
- [
- "scope" => "config.country",
- "description" => "Configurações de Países",
- "bits" => Permission::CRUD,
- "children" => [],
- ],
- [
- "scope" => "config.state",
- "description" => "Configurações de Estados",
- "bits" => Permission::CRUD,
- "children" => [],
- ],
- ],
- ],
- [
- "scope" => "parceiro",
- "description" => "Parceiros e Convênios",
- "bits" => Permission::MENU | Permission::VIEW,
- "children" => [
- [
- "scope" => "parceiro.convenio",
- "description" => "Gestão de Parceiros/Convênios",
- "bits" => Permission::CRUD,
- "children" => [],
- ],
- [
- "scope" => "parceiro.servico",
- "description" => "Serviços dos Parceiros",
- "bits" => Permission::CRUD,
- "children" => [],
- ],
- ],
- ],
- [
- "scope" => "loja",
- "description" => "Loja",
- "bits" => Permission::MENU | Permission::VIEW,
- "children" => [
- [
- "scope" => "loja.item",
- "description" => "Itens da Loja",
- "bits" => Permission::CRUD,
- "children" => [],
- ],
- [
- "scope" => "loja.pedido",
- "description" => "Pedidos da Loja",
- "bits" => Permission::CRUD,
- "children" => [],
- ],
- ],
- ],
- [
- "scope" => "agendamento",
- "description" => "Agendamentos",
- "bits" => Permission::ALL_PERMS,
- "children" => [],
- ],
- [
- "scope" => "notificacao",
- "description" => "Notificações",
- "bits" => Permission::ALL_PERMS,
- "children" => [],
- ],
- [
- "scope" => "categoria",
- "description" => "Categorias",
- "bits" => Permission::CRUD,
- "children" => [],
- ],
- ];
- $this->createPermissionsAndChildren(permissions: $permissions);
- }
- private function createPermissionsAndChildren(
- array $permissions,
- ?Permission $parent = null,
- ): void {
- foreach ($permissions as $permissionData) {
- $children = $permissionData["children"];
- unset($permissionData["children"]);
- $permissionNode = Permission::updateOrCreate(
- ["scope" => $permissionData["scope"]],
- $permissionData,
- );
- if ($parent) {
- $parent->appendNode($permissionNode);
- }
- if (!empty($children)) {
- $this->createPermissionsAndChildren(
- permissions: $children,
- parent: $permissionNode,
- );
- }
- }
- }
- }
|