echo "";
echo "Última atualização: ";
ver('', false);
echo "
";
====== Implantar Permissões ======
Este caso de uso é utilizado pelos administradores dos sistemas e equipe de suporte técnico para atribuir ou remover a um usuário um ou mais papéis que irão possibilitá-lo a utilizar os recursos dos sistemas institucionais. Não é utilizado em nenhuma periodicidade específica, podendo ser acessado a qualquer momento.
Em alguns casos se faz necessário que o Administrador do SIGAdmin [[desenvolvimento:especificacoes:sigadmin:casos_de_uso:portal_da_administracao:usuarios:permissoes:autorizar_pemissoes|Autorize as permissões cadastradas]].
===== Descrição do Caso de Uso =====
O caso de uso se inicia quando o usuário acessa o caminho: //SIGAdmin -> Portal Admin -> Config. do Sistema -> Permissões -> Implantar Permissões//.
Primeiramente, é mostrada ao administrador uma tela para a busca de usuários. Os filtros disponíveis são os seguintes:
* **Login**: Tipo - TEXTO.
* **CPF**: Formato - 999.999.999-99, Tipo - NUMÉRICO.
* **Nome**: Tipo - TEXTO.
* **Tipo de Usuário**: Tipo - TEXTO. São apresentadas as opções ''Aluno, Consignatária, Consultor, Cooperação, Credor, Docente Externo, Familiar, Outros, Plano de saúde, Preceptor de Estágio'' e ''Servidor''.
* **Papel**: Formato - São apresentados os papeis do sistema, Tipo - TEXTO.
* **Unidade**: Formato - NOME DA UNIDADE (CODIGO), Tipo - AUTOCOMPLETE. Entrada de dados: CÓDIGO DA UNIDADE ou NOME DA UNIDADE.
* **Buscar somente usuários ativos**: Tipo - LÓGICO.
* **Buscar usuários com apenas um ÚNICO papel (informado acima no campo "Papel")**: Tipo - LÓGICO.
Ao escolher a opção de buscar, o sistema mostra uma lista de usuários, cada um com as seguintes informações:
* **__Foto__**: Tipo - ARQUIVO.
* **__Nome__**: Tipo - TEXTO.
* **__Login__**: Tipo - TEXTO.
* **__Unidade__**: Tipo - TEXTO.
É possível [[desenvolvimento:especificacoes:sigadmin:casos_de_uso:portal_da_administracao:usuarios::visualizar_detalhes_usuario|visualizar detalhes do usuário]]. Além disso, o sistema mostra quais são as permissões que o usuário possui atualmente.
Ao selecionar a opção selecionar usuário, o sistema mostra um tela dividida em duas partes. A primeira parte permite a atribuição de novos papéis ao usuário. A segunda parte lista os papéis que o usuário já possui e permite editá-los ou removê-los.
A parte de atribuição de papéis mostra os seguintes dados do usuário:
* **__Nome__**: Tipo - TEXTO.
* **__Login__**: Tipo - TEXTO.
* **__Unidade__**: Tipo - TEXTO.
* **Número do chamado**: Tipo - NUMÉRICO. Chamado associado à atribuição do papel. ([[#Principais Regras de Negócio|RN02]])
* **Motivo**: Tipo - TEXTO. Motivo da atribuição. ([[#Principais Regras de Negócio|RN02]])
* **Papel temporário?**: Tipo - TEXTO.
* **Data de expiração**: Tipo - DATA. ([[#Principais Regras de Negócio|RN04]])
* **Grupo de papéis**: Tipo - TEXTO. Um grupo de papéis pode ser escolhido e adicionado ao usuário de uma só vez.
* Papel
* **Sistema**: Tipo - TEXTO.
* **Subsistema**: Tipo - TEXTO. ([[#Principais Regras de Negócio|RN05]])
* Papel
* **Unidade**: Tipo - TEXTO. ([[#Principais Regras de Negócio|RN06]])
Para adicionar um papel, o usuário logado deve informar um número de chamado ou um motivo e, em seguida, selecionar um grupo de papéis ou um ou mais papéis. Para selecionar um papel, deve-se primeiro selecionar um sistema e um subsistema. Após a seleção dos papéis, deve-se informar se ele será temporário ou não. Se for temporário, deve-se escolher a data de expiração. Se um dos papéis exigir unidade, deve-se ainda escolher a unidade de abrangência.
Na parte com a listagem de permissões do usuário, para cada papel são mostradas as seguintes informações:
* **__Sistema__**: Tipo - TEXTO.
* **__Subsistema__**: Tipo - TEXTO.
* **__Papel__**: Tipo - TEXTO. Nome do papel.
* **__Atribuidor__**: Tipo - TEXTO. Administrador que atribuiu o papel ao usuário.
* **__Unidade__**: Tipo - TEXTO. Unidade de abrangência da permissão, se houver.
* **__Data__**: Tipo - DATA. Data da atribuição do papel.
* **__Expiração__**: Tipo - DATA. Mostrada se o papel for temporário.
* **__Chamado/Motivo__**: Tipo - TEXTO/NUMÉRICO. O número do chamado ou o motivo da atribuição do papel.
* **__Status__**: Tipo - TEXTO. ''Autorizada'' ou ''Não Autorização''.
O sistema permite ao usuário editar as informações, onde é apresentada uma tela similar à de cadastro, para edição do papel, ou remover uma permissão.
O caso de uso é finalizado.
===== Principais Regras de Negócio =====
* **RN01** - Um usuário pode estar associado com o mesmo papel mais de uma vez apenas se o papel estiver associado a uma unidade e for para unidades diferentes.
* **RN02** - Pelo menos um entre **Número do chamado** e **Motivo** deve ser preenchido.
* **RN03** - A atribuição de permissões deve seguir a política descrita abaixo.
* **RN04** - Este campo é apresentado, caso o campo **Papel Temporário** seja ''Sim''.
* **RN05** - O sistema lista as permissões de acordo com as informações selecionadas no **Papel**.
* **RN06** - Requerido se o papel necessitar de uma unidade de abrangência.
==== Política de Atribuição de Permissões ====
=== Atribuição de Permissão ===
A atribuição de permissões pode ser feita de duas maneiras:
- Feita pela equipe de suporte da Superintendência de informática onde as permissões seriam cadastradas mas ainda ficariam pendentes de autorização do Gestor de Permissões.
- Feita pelo Gestor de Permissões. Nesse caso, a permissão já é autorizada automaticamente.
=== Autorização por Parte do Gestor ===
Ao cadastrar uma permissão disparar um e-mail para o Gestor indicando que usuário X está solicitando autorização no sistema para realizar operação Y (onde y é a descrição do papel). Informar o usuário deve entrar em http://www.sistemas.ufrn.br/permissoes/ e proceder a autorização a mesma.
O gestor também pode retirar as permissões do qual ele autorizou.
=== Gestor Local ===
Criar uma lista de papéis que serão de escopo local e que o autorizador será o responsável (nível Gerente ou Chefe) pela unidade do usuário que solicita. Criar um tipoAutorizacao em papel (Local ou Global). Exemplos de papéis globais: GESTOR_PESQUISA, GESTOR_PATRIMONIO, etc.. Exemplos de papéis locais: Requsitores, solicitação de informativo, etc...
===== Classes Persistentes e Tabelas Envolvidas =====
^ Classe ^ Tabela |
| br.ufrn.comum.dominio.Permissao | sistemas_comum.comum.permissao |
| br.ufrn.comum.dominio.UsuarioGeral | sistemas_comum.comum.usuario |
| br.ufrn.comum.dominio.Papel | sistemas_comum.comum.papel |
| br.ufrn.comum.dominio.Unidade | sistemas_comum.comum.unidade |
| br.ufrn.comum.dominio.Pessoa | sistemas_comum.comum.pessoa |
| br.ufrn.comum.dominio.Sistema | sistemas_comum.comum.sistema |
| br.ufrn.comum.dominio.Subsistema | sistemas_comum.comum.sub_sistema |
| br.ufrn.comum.rh.Designacao | sistemas_comum.rh.designacao |
===== Plano de Teste =====
Sistema: SIGAdmin
Módulo: Portal Admin
Link(s): Config. do Sistema -> Permissões -> Implantar Permissões
Usuários: david, gleydson, wendell
Papel que usuário deve ter: ADMINISTRADOR_SIPAC, ADMINISTRADOR_SIGAA ou ADMINISTRADOR_SIGADMIN
===== Cenários de Teste =====
* Se o papel exigir unidade:
* Adicionar um papel a um usuário que não tenha um papel para a unidade selecionada deve adicionar o papel à lista de papéis do usuário.
* Adicionar um papel a um usuário que já possua o papel para a unidade selecionada deve dar erro.
* Se o papel não exigir unidade
* Adicionar um papel a um usuário que não tenha um papel deve adicionar o papel à lista de papéis do usuário.
* Adicionar um papel a um usuário que já possua o papel deve dar erro.
* Remover um papel de um usuário deve remover o papel da lista de papéis do usuário.
* Adicionar um papel que o usuário já possui, mas que já expirou. O sistema deve permitir.
===== Dados para o Teste =====
- Usuário que não é gestor de permissões: henrique
- Usuário que é gestor de permissões: david
- Usuários para terem as permissões implantadas: qualquer um
- Para buscar os papéis que exigem unidade utilizar o caso de uso SIGAdmin → Config. Sistema → Permissões → Gerenciamento de Papéis ou rodar a seguinte consulta SQL no banco de dados sistemas_comum: