Pular para o conteúdo principal

Gerenciamento de Acesso do Usuário

Visão Geral

O sistema de gerenciamento de acesso do usuário é projetado para controle detalhado sobre quem tem acesso a quais recursos do aplicativo. A sistema utiliza um modelo de controle de acesso baseado em funções (RBAC), onde os usuários são atribuídos a grupos e os direitos de acesso são concedidos a esses grupos. Isso garante um gerenciamento de acesso eficaz e seguro.

Gerenciamento de Grupos

Criação de um Novo Grupo

  1. Acessar a seção de grupos:
    • Abra a aba Groups.
  2. Adicionar grupo:
    • Clique no botão Create Group.
    • Forneça um nome descritivo e um marcador.
    • Atribua os direitos de acesso iniciais.
atenção

Em um novo projeto, um grupo Guest é sempre criado por padrão.

Herança de Direitos de Acesso

Na aba "Grupos", os grupos previamente criados são apresentados de forma hierárquica, e o novo grupo criado pode ser vinculado a um grupo já existente para herdar os direitos do grupo pai.

atenção

Se o grupo pai tiver uma restrição de caminho, e no grupo filho a mesma restrição for sobrescrita, a restrição final será a do grupo filho, mas apenas se a opção "Permissão Final" não estiver especificada no grupo pai.

Único grupo na cadeia

A especificação de um grupo só é possível se nenhum grupo pai ou filho já tiver sido selecionado.

Alteração de Direitos de Acesso

A aba "Permissions" é fundamental para editar os direitos de acesso.

Agrupamento de direitos

Se você especificou um grupo pai para herança de direitos anteriormente, todas as informações sobre os acessos estabelecidos serão exibidas na tabela acima, e a edição dos direitos herdados é proibida. Os direitos que incluem exceções e os direitos não utilizados são agrupados separadamente na mesma tabela.

Gerenciamento de Direitos de Acesso

Criação de Direitos de Acesso

Para começar a criar um direito, clique no botão "Criar Direito" na aba "Permissions".

Um direito de acesso consiste em uma combinação de método e caminho.

remove
  1. Criar um conjunto mínimo de permissões:
    • Esta opção permite minimizar a tarefa de criação de direitos, gerando o conjunto mínimo necessário de permissões.
atenção

Disponível apenas se não houver permissões previamente estabelecidas.

  1. Estabelecer restrições na emissão de dados:
    • A opção é aplicável apenas quando "Criar um conjunto mínimo de permissões" é selecionado, estabelecendo uma restrição na emissão de dados (10 registros).
  2. Seção API:
    • Parâmetro obrigatório, se estiver criando um novo acesso, indica o caminho para selecionar permissões.
  3. Caminho:
    • A seleção está disponível apenas após a escolha da seção API, especificando o caminho para a definição de direitos.
  4. Nome:
    • Campo obrigatório para o nome do direito.
  5. Tabela "Permissions":
    • A tabela apresenta uma seleção de métodos HTTP para o caminho especificado, com opções "sem restrições" e "com restrição de número de registros".
atenção

Para qualquer caminho na tabela, sempre são indicados 4 métodos: GET, POST, PUT, DELETE.

  1. Condições Adicionais Essas condições aparecem não para todos os caminhos, mas apenas para "listagens" e permitem configurar exceções para os documentos recebidos.

    • Se, por exemplo, for necessário fornecer acesso a todas as páginas, mas fazer uma exceção, você pode clicar no botão "Escolha quais dados deseja excluir". Na janela adicional que se abre, é possível selecionar os dados aos quais o acesso deve ser restrito. Por exemplo, para a seção API - páginas, será exibida uma lista hierárquica de páginas, para a seção de atributos - os atributos correspondentes.

    Lista de caminhos disponíveis com condições adicionais:

    • /api/content/admins/all
    • /api/content/attributes-sets
    • /api/content/attributes-sets/{marker}/attributes
    • /api/content/pages
    • /api/content/blocks
    • /api/content/forms
    • /api/content/events/subscriptions
    • /api/content/orders-storage
    • /api/content/product-statuses
    • /api/content/templates
    • /api/content/template-previews
    • /api/content/integration-collections

    Após a seleção dos dados para exclusão, duas novas opções aparecerão: "Excluir" - a opção indica que os dados selecionados devem ser excluídos. "Direito Final" - este direito não é herdado em toda a cadeia de grupos filhos (a opção se torna disponível apenas se a opção "Excluir" for selecionada).

atenção

A escolha de condições adicionais depende do caminho selecionado e nem sempre está disponível. Quando tal escolha está disponível, é marcada com o marcador - "Exceções disponíveis para seleção".

exceptions_marker

Lista de caminhos disponíveis para configuração

Por padrão, novos direitos vão para a seção "Direitos Não Utilizados", para ativá-los, basta selecionar, clicando na caixa de seleção à esquerda do nome.

Para abrir o editor, use o botão edit

Para excluir, use remove

Compreensão dos Direitos de Acesso

Os direitos de acesso são configurações detalhadas que definem quais ações um grupo pode realizar com determinados recursos. Eles são organizados por seções da API e podem ser ainda mais refinados com condições.

Busca de Direitos na Tabela

A busca pelos direitos desejados na tabela é feita inserindo texto no campo "Buscar Direitos", selecionando as seções da API no seletor e escolhendo a opção "Selecionar não utilizados".

Direitos Finais

A aba de direitos finais é uma tabela informativa com filtragem por seções da API para facilitar a busca.

Exemplo: restrição de acesso a produtos

  • Seção API: products
  • Direitos de Acesso:
    • Leitura (Read): Sim
    • Adição (Add): Não
    • Edição (Edit): Não
    • Exclusão (Delete): Não

Integração com API

O sistema fornece uma API para gerenciamento programático de usuários, grupos e direitos de acesso. Abaixo estão exemplos de operações típicas.

Exemplo de Requisição

/api/content/attributes-sets/product_1/attributes

Resposta, se a autorização for sem token (grupo Guest):

[
{
"type": "image",
"value": {},
"marker": "image",
"position": 1,
"listTitles": [],
"validators": {
"requiredValidator": {
"strict": true
}
},
"localizeInfos": {
"title": "image"
},
"additionalFields": []
},
{
"type": "textWithHeader",
"value": {},
"marker": "textheader",
"position": 4,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "text header"
},
"additionalFields": []
},
{
"type": "image",
"value": {},
"marker": "image1",
"position": 18,
"listTitles": [],
"validators": {
"sizeInPixelsValidator": {
"maxX": 0,
"maxY": 0
},
"checkingFilesValidator": {
"maxUnits": "kb",
"maxValue": 0,
"minUnits": "mb",
"minValue": 0,
"extensions": []
}
},
"localizeInfos": {
"title": "image"
},
"additionalFields": []
}
]

Resposta, com autorização, onde todos os campos de atributo são permitidos:

[
{
"type": "image",
"value": {},
"marker": "image",
"position": 1,
"listTitles": [],
"validators": {
"requiredValidator": {
"strict": true
}
},
"localizeInfos": {
"title": "image"
},
"additionalFields": []
},
{
"type": "textWithHeader",
"value": {},
"marker": "textheader",
"position": 4,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "text header"
},
"additionalFields": []
},
{
"type": "image",
"value": {},
"marker": "image1",
"position": 18,
"listTitles": [],
"validators": {
"sizeInPixelsValidator": {
"maxX": 0,
"maxY": 0
},
"checkingFilesValidator": {
"maxUnits": "kb",
"maxValue": 0,
"minUnits": "mb",
"minValue": 0,
"extensions": []
}
},
"localizeInfos": {
"title": "image"
},
"additionalFields": []
},
{
"type": "float",
"value": {},
"marker": "price",
"position": 19,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "price"
},
"additionalFields": []
}
]

Como podemos ver, o usuário autorizado recebeu o campo adicional price.