~~ODT~~ 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: SELECT s.descricao AS "Sistema", ss.nome AS "SubSistema", p.nome AS "Papel" FROM comum.papel p, comum.subsistema ss, comum.sistema s WHERE p.id_subsistema = ss.id and ss.id_sistema = s.id and p.exige_unidade = true