É muito comum em qualquer tipo de aplicação precisarmos controlar o nível de acesso do usuário a determinadas páginas ou componentes da aplicação dependendo do privilégio concedido a um determinado usuário, por isso vamos criar uma Página de Controle de Acesso . Para este exemplo teremos três níveis diferentes de usuários, por exemplo, usuários que podem apenas visualizar as informações, usuários que podem visualizar e também editar as informações do aplicativo e por último o usuário do tipo administrador.
Gerenciar controle de acesso
Criar página de controle de acesso
Ao adicionar o recurso de controle de acesso a um aplicativo, diversas páginas e os seguintes componentes são criados:
- Uma região de controle de acesso
- Funções de acesso
- Esquemas de autorização
- Uma opção de construção à Recurso: Controle de acesso
- Uma configuração de aplicativo em ACCESS_CONTROL_SCOPE
Os desenvolvedores usam a lista de controle de acesso para associar os privilégios de visualização , edição e administração aos usuários do aplicativo. Na interface de controle de acesso final, cada privilégio é mapeado para uma função de acesso:
- Visualize mapas para a função Leitor .
- Edite mapas para a função Colaborador .
- Administration se correlaciona com o Administrator Rol.
Quando você adiciona a funcionalidade de controle de acesso a um aplicativo, o assistente PL/SQL cria os seguintes esquemas de autorização:
– Este esquema de autorização verifica se a função foi atribuída ao usuário atual no aplicativo
Administration Rights
ADMINISTRATOR
return APEX_ACL.HAS_USER_ROLE (p_application_id=>:APP_ID, p_user_name => :APP_USER, p_role_static_id => 'ADMINISTRATOR');
Contribution Rights
– Este esquema de autorização verifica se o usuário atual no aplicativo recebeu a função ADMINISTRATOR
ou a função CONTRIBUTOR
.
if apex_acl.has_user_role (
p_application_id=>:APP_ID,
p_user_name => :APP_USER,
p_role_static_id => 'ADMINISTRATOR') or
apex_acl.has_user_role (
p_application_id=>:APP_ID,
p_user_name=> :APP_USER,
p_role_static_id=> 'CONTRIBUTOR') then
return true;
else
return false;
end if;
Reader Rights
– Este esquema de autorização retorna TRUE se o controle de acesso estiver configurado para permitir que qualquer usuário autenticado acesse o aplicativo. Se este comportamento não for permitido, verifique se o usuário atual da aplicação está atribuído a alguma função na aplicação.
if nvl(apex_app_setting.get_value(
p_name => 'ACCESS_CONTROL_SCOPE'),'x') = 'ALL_USERS' then
-- allow user not in the ACL to access the application
return true;
else
-- require user to have at least one role
return apex_acl.has_user_any_roles (
p_application_id => :APP_ID,
p_user_name => :APP_USER);
end if;
A primeira coisa que faremos é criar uma página de controle de acesso executando o Assistente de página de controle de acesso. Da página inicial do Oracle APEX, entramos em nossa aplicação, no meu caso:
Demonstração – Projetos
Na página inicial do aplicativo, clique no botão Criar página.
Selecione a guia Recurso e selecione Controle de acesso.
Na janela Criar páginas de controle de acesso:
- Referência da página de administração: identificar uma página existente
- Página de administração existente: 10000
Obs: no meu caso eu já tinha uma página de administração criada, caso não tenha crie uma nova.
Clique no botão Avançar.
Verifique a janela de confirmação .
Em seguida, clique no botão Criar .
Execute a página de controle de acesso
Executamos a página 10000 e podemos ver que uma região de controle de acesso foi adicionada. Dentro desta região existe uma lista que contém a lista de Usuários e se o Controle de Acesso está habilitado ou não.
Clique no botão Adicionar usuário.
Digite o nome de usuário: CLARA .
Marque a caixa de seleção como Contribuidor e clique em Adicionar usuário.
Nota: O usuário deve existir como usuário final no espaço de trabalho.
Digite o nome de usuário: JANE .
Marque a caixa de seleção como Leitor e clique em Adicionar usuário .
Nota: O usuário deve existir como usuário final no espaço de trabalho. Clique em Usuários para visualizar os usuários e suas funções.
Podemos ver que temos um usuário administrador, um usuário colaborador e um usuário leitor.
Desabilitar Lista de Controle de Acesso
Caso queira desabilitar a Lista de Controle de Acesso para que qualquer usuário autenticado no APEX possa entrar na aplicação, clique em Controle de Acesso. Em seguida, na tela modal clique no botão para habilitar qualquer usuário que entre no aplicativo.
Restringir acesso a um usuário do tipo Leitor
O usuário JANE não pode criar tarefas ou editar tarefas, portanto o botão criar e o link de edição da tarefa devem ser restritos para que apenas usuários do tipo Colaborador e Administrador possam ter acesso.
Na página inicial do aplicativo, clique na página 10 – Demo Tasks. Clique no botão CRIAR.
No painel de propriedades do botão, navegue até a seção Segurança.
Selecione: Esquema de Autorização: Direitos do Colaborador.
Selecione a região do relatório interativo Tarefas de demonstração. Na guia Atributos da região e na seção Link, selecione: Esquema de Autorização: Direitos do Colaborador .
Salve as alterações da página.
Testar o acesso do usuário CLARA – Com a função CONTRIBUTOR
Faça login como usuário CLARA.
Navegue até a página Tarefas de demonstração.
O usuário CLARA pode editar uma tarefa ou criar uma nova tarefa. Além disso, você também não pode ver o menu Administração.
Feche a sessão do usuário CLARA.
Teste de acesso para o usuário JANE – com a função READER
Faça login como o usuário JANE.
Navegue até a página Tarefas de demonstração.
O usuário JANE não pode editar uma tarefa ou criar uma nova tarefa.
Saia do usuário JANE.
Resumo
Nesta prática pudemos ver como implementar a Lista de Controle de Acesso no APEX. Ressalta-se que é um trabalho muito específico e detalhado, pois deve ser determinado o nível de acesso para usuários somente visualização, usuários de edição de dados e o nível de administração para toda a aplicação. Neste exemplo vimos como implementá-lo em uma única página com um relatório interativo, mas nem é preciso dizer que para cada parte da nossa aplicação devemos indicar o nível de acesso do usuário se tivermos implementado a lista de controle de acesso.
----
Fonte: Clarisa Maman Orfali | Blog APRENDER DESARROLLO APEX
Nenhum comentário:
Postar um comentário