Logotipo Hedhog

Receba novidades do Hedhog no seu e-mail

Novos lançamentos, receitas e breaking changes — sem spam.

Voltar para os módulos CoreIntegrado no CoreModule
Captura de tela do módulo role

Submódulo Core

role

Gerencia o CRUD de roles e as relações das roles com usuários, menus, rotas e screens.

Caminho de origem: libraries/core/src/role

Arquivo do módulo: role.module.ts

Introdução

O submódulo Role é a base do sistema de Role-Based Access Control do HedHog, governando quais usuários podem acessar quais recursos em todas as partes da plataforma. Todo recurso protegido — endpoints HTTP, entradas de menu do admin e definições de screen — é registrado individualmente no sistema. As roles agrupam os recursos permitidos, e os usuários possuem uma ou mais roles cujas permissões são aditivas: o conjunto efetivo de permissões é a união de todas as roles atribuídas. Por padrão, não há hierarquia ou herança de roles.

As permissões são estruturadas em quatro eixos. As routes definem quais endpoints HTTP (método + padrão de URL) uma role pode chamar. Os menus definem quais entradas de navegação ficam visíveis no painel de administração. As screens definem quais definições de página do front-end são acessíveis. Os users definem quais contas possuem a role no momento. Cada eixo é gerenciado de forma independente, dando controle granular sobre o que cada role pode ver e fazer, sem acoplar a visibilidade da navegação ao acesso à API.

A role admin é uma role de sistema especial, inserida durante a instalação, que concede acesso irrestrito a todos os recursos. Ela não deve ser excluída. As roles de admin específicas por módulo (admin-user, admin-mail, admin-finance) fornecem escopos administrativos mais restritos para operadores que devem gerenciar apenas um subconjunto da plataforma. Essas roles granulares permitem aplicar o princípio do menor privilégio mesmo para usuários administrativos.

As atribuições de role podem ser gerenciadas em qualquer direção: pelo lado da role (PATCH /role/:roleId/user substitui todos os usuários de uma role de uma só vez) ou pelo lado do usuário (POST /user/:userId/role/:roleId atribui uma única role). Ambos os caminhos gravam na mesma tabela de junção subjacente e podem ser usados de forma intercambiável, dependendo se o administrador está raciocinando em termos de roles ou de usuários.

No fluxo YAML do HedHog, as atribuições de role para rotas e menus são declaradas em role.yaml e route.yaml, dentro do diretório hedhog/data/ de cada biblioteca. Esses arquivos são a fonte da verdade para os seeds de permissão aplicados durante o hedhog dev apply, garantindo que as mudanças de permissão trafeguem pelo controle de versão junto com os endpoints que governam.

Endpoints HTTP

13 endpoints

Lista todas as roles com paginação.

Query
page, pageSize, search

Obtém uma role pelo ID.

Params
roleId (int)

Cria uma nova role.

Body

FieldTypeRequiredNotes
slugstringyes
localeRecord<string, { name: string, description: string }>yese.g. {"en": {"name": "...", "description": "..."}}

Atualiza uma role existente.

Params
roleId (int)

Body

FieldTypeRequiredNotes
slugstringno
localeRecord<string, { name: string, description: string }>no

Exclui uma ou mais roles.

Body

FieldTypeRequiredNotes
idsnumber[]yesIDs to delete

Lista os usuários atribuídos a uma role.

Params
roleId (int)
Query
page, pageSize

Substitui as atribuições de usuário de uma role.

Params
roleId (int)

Body

FieldTypeRequiredNotes
idsnumber[]yesReplacement set of IDs

Lista os menus acessíveis a uma role.

Params
roleId (int)
Query
page, pageSize

Substitui as atribuições de menu de uma role.

Params
roleId (int)

Body

FieldTypeRequiredNotes
idsnumber[]yesReplacement set of IDs

Lista as rotas permitidas para uma role.

Params
roleId (int)
Query
page, pageSize, search?, searchType?, method?

Substitui as permissões de rota de uma role.

Params
roleId (int)

Body

FieldTypeRequiredNotes
idsnumber[]yesReplacement set of IDs

Lista as screens acessíveis a uma role.

Params
roleId (int)
Query
page, pageSize

Substitui as atribuições de screen de uma role.

Params
roleId (int)

Body

FieldTypeRequiredNotes
idsnumber[]yesReplacement set of IDs

Ferramentas MCP

Ferramentas nomeadas que podem ser chamadas por modelos de IA através do Model Context Protocol (MCP).

  • core.roles.list

    Lista todas as roles com paginação

  • core.roles.get

    Obtém uma role pelo ID

  • core.roles.create

    Cria uma nova role

  • core.roles.update

    Atualiza uma role existente

  • core.roles.delete

    Exclui uma ou mais roles

  • core.roles.users.list

    Lista os usuários pertencentes a uma role

  • core.roles.users.update

    Substitui as atribuições de usuário de uma role

  • core.roles.menus.list

    Lista os menus associados a uma role

  • core.roles.menus.update

    Substitui as associações de menu de uma role

  • core.roles.routes.list

    Lista as rotas às quais a role tem acesso

  • core.roles.routes.update

    Substitui as permissões de rota de uma role

  • core.roles.screens.list

    Lista as screens associadas a uma role

  • core.roles.screens.update

    Substitui as atribuições de screen de uma role