As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Exemplo 4: filtragem de interface do usuário com OPA e Rego
A flexibilidade do OPA e do Rego suporta a capacidade de filtrar elementos da interface do usuário. O exemplo a seguir demonstra como uma regra parcial de OPA pode tomar decisões de autorização sobre quais elementos devem ser exibidos em uma interface de usuário com RBAC. Esse método é uma das muitas maneiras diferentes de filtrar elementos da interface do usuário com o OPA.

Neste exemplo, um aplicativo web de página única tem quatro botões. Digamos que você queira filtrar a interface de usuário de Bob, Shirley e Alice para que eles possam ver somente os botões que correspondem às suas funções. Quando a interface recebe uma solicitação do usuário, ela consulta uma regra parcial do OPA para determinar quais botões devem ser exibidos na interface do usuário. A consulta passa o seguinte como entrada para a OPA quando Bob (com a funçãoviewer
) faz uma solicitação para a interface do usuário:
{ "role": "viewer" }
A OPA usa dados externos estruturados para o RBAC para tomar uma decisão de acesso:
{ "roles": { "viewer": ["viewUsers", "viewData"], "dataViewOnly": ["viewData"], "admin": ["viewUsers", "viewData", "updateUsers", "updateData"] } }
A regra parcial do OPA usa os dados externos e a entrada para produzir uma lista de ações permitidas:
user_permissions[permissions] { permissions := data.roles[input.role][_] }
Na regra parcial, o OPA usa o input.role
especificado como parte da consulta para determinar quais botões devem ser exibidos. Bob tem a funçãoviewer
, e os dados externos especificam que os espectadores têm duas permissões: viewUsers
e. viewData
Portanto, a saída dessa regra para Bob (e para qualquer outro usuário que tenha uma função de visualizador) é a seguinte:
{ "user_permissions": [ "viewData", "viewUsers" ] }
A saída para Shirley, quem tem a dataViewOnly
função, conteria um botão de permissões:. viewData
A saída para Alice, que tem a admin
função, conteria todas essas permissões. Essas respostas são retornadas à interface do usuário quando a OPA é consultada. user_permissions
O aplicativo pode então usar essa resposta para ocultar ou exibir o viewUsersButton
viewDataButton
updateUsersButton
,, updateDataButton
e.