refactor: update permission management and role structure
- Enhanced the permission management system by introducing a new base permissions structure, allowing for better organization and clarity. - Updated the role creation process to normalize role levels, limiting them to two levels: 0 (maximum access) and 1 (administrative access). - Improved the UI for permission displays, ensuring users are informed when no permissions are available. - Added alerts and messages to guide users in creating permissions when none exist. - Streamlined backend queries for permissions and roles to improve performance and maintainability.
This commit is contained in:
@@ -543,7 +543,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{:else if catalogoQuery.data}
|
||||
{:else if catalogoQuery.data && catalogoQuery.data.length > 0}
|
||||
<div class="space-y-2">
|
||||
{#each catalogoQuery.data as item (item.recurso)}
|
||||
{@const recursoExpandido = isRecursoExpandido(roleId, item.recurso)}
|
||||
@@ -576,28 +576,40 @@
|
||||
<!-- Lista de ações (visível quando expandido) -->
|
||||
{#if recursoExpandido}
|
||||
<div class="bg-base-100 border-base-300 border-t px-4 py-3">
|
||||
<div class="space-y-2">
|
||||
{#each ['ver', 'listar', 'criar', 'editar', 'excluir'] as acao (acao)}
|
||||
<label
|
||||
class="hover:bg-base-200 flex cursor-pointer items-center gap-3 rounded p-2 transition-colors"
|
||||
>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="checkbox checkbox-primary"
|
||||
checked={isConcedida(roleId, item.recurso, acao)}
|
||||
disabled={salvando}
|
||||
onchange={(e) =>
|
||||
toggleAcao(roleId, item.recurso, acao, e.currentTarget.checked)}
|
||||
/>
|
||||
<span class="flex-1 font-medium capitalize">{acao}</span>
|
||||
</label>
|
||||
{/each}
|
||||
</div>
|
||||
{#if item.acoes.length === 0}
|
||||
<p class="text-base-content/60 text-sm">
|
||||
Nenhuma permissão cadastrada para este recurso.
|
||||
</p>
|
||||
{:else}
|
||||
<div class="space-y-2">
|
||||
{#each item.acoes as acao (acao)}
|
||||
<label
|
||||
class="hover:bg-base-200 flex cursor-pointer items-center gap-3 rounded p-2 transition-colors"
|
||||
>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="checkbox checkbox-primary"
|
||||
checked={isConcedida(roleId, item.recurso, acao)}
|
||||
disabled={salvando}
|
||||
onchange={(e) =>
|
||||
toggleAcao(roleId, item.recurso, acao, e.currentTarget.checked)}
|
||||
/>
|
||||
<span class="flex-1 font-medium">{acao}</span>
|
||||
</label>
|
||||
{/each}
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
{:else}
|
||||
<div class="alert alert-info mt-4">
|
||||
<span class="font-semibold">
|
||||
Nenhuma permissão cadastrada ainda. Use o botão “Criar permissão” para começar.
|
||||
</span>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user