$request->cnpj], [ 'nome' => $request->razaosocial, 'endereco' => json_decode($request->address, true), ] ); if ($escola->wasRecentlyCreated) { // đŸ”„ Limpa cache ANTES app(PermissionRegistrar::class)->forgetCachedPermissions(); // Define tenant (team) setPermissionsTeamId($escola->id); /* |-------------------------------------------------------------------------- | ROLES (POR ESCOLA) |-------------------------------------------------------------------------- */ $roles = [ 'coordenacao', 'secretaria', 'responsavel', 'aluno', 'representante_de_turma', ]; foreach ($roles as $r) { Role::firstOrCreate([ 'name' => $r, 'guard_name' => 'web', 'id_escola' => $escola->id, ]); } /* |-------------------------------------------------------------------------- | PERMISSIONS |-------------------------------------------------------------------------- */ $permissions = [ // escolas 'escolas.ver', 'escolas.criar', 'escolas.editar', 'escolas.deletar', // turmas 'turmas.ver', 'turmas.detalhes', 'turmas.criar', 'turmas.editar', 'turmas.deletar', // alunos 'alunos.ver_todos', 'alunos.ver_meus', 'alunos.criar', 'alunos.editar', 'alunos.deletar', // whatsapp 'wpp.enviar', ]; foreach ($permissions as $p) { Permission::firstOrCreate([ 'name' => $p, 'guard_name' => 'web', ]); } /* |-------------------------------------------------------------------------- | MAPEAR ROLE -> PERMISSIONS (CORRIGIDO) |-------------------------------------------------------------------------- */ $rolePermissions = [ // Coordenação: vĂȘ todos os alunos 'coordenacao' => [ 'turmas.ver', 'turmas.detalhes', 'turmas.criar', 'turmas.editar', 'turmas.deletar', 'alunos.ver_todos', 'alunos.criar', 'alunos.editar', 'alunos.deletar', 'wpp.enviar', ], // Secretaria: vĂȘ todos os alunos 'secretaria' => [ 'turmas.ver', 'turmas.detalhes', 'alunos.ver_todos', 'alunos.criar', 'alunos.editar', 'wpp.enviar', ], // ResponsĂĄvel: vĂȘ somente os "meus" 'responsavel' => [ 'alunos.ver_meus', ], // Aluno: vĂȘ somente os "meus" 'aluno' => [ 'alunos.ver_meus', ], // Representante: vĂȘ os "meus" + detalhes da turma (e wpp se vocĂȘ quiser) 'representante_de_turma' => [ 'alunos.ver_meus', 'turmas.detalhes', 'wpp.enviar', ], ]; foreach ($rolePermissions as $roleName => $perms) { $role = Role::query() ->where('name', $roleName) ->where('guard_name', 'web') ->where('id_escola', $escola->id) ->firstOrFail(); $role->syncPermissions($perms); } // đŸ”„ Limpa cache DEPOIS app(PermissionRegistrar::class)->forgetCachedPermissions(); // opcional: volta contexto global setPermissionsTeamId(null); } DB::commit(); return redirect() ->route('escolas') ->with('success', 'Escola Criada|Atualizada com sucesso'); } catch (\Throwable $th) { DB::rollBack(); throw $th; } } }