O sistema irá contará com um serviço de permissionamento que irá definir para cada usuário o que o mesmo pode ver ou fazer.
Cada sistema irá definir como irá funcionar o permissionamento, no pré-matrícula web, as permissões são fixas, ou seja, cada perfil de usuário possui suas permissões de acesso, caso seja necessário incluir ou remover permissões será necessário incluir manualmente.
Basicamente, cada ação do sistema possuíra uma anotação que irá verificar se o usuário logado possui ou não permissão para executa-la, caso não possua, uma tela de acesso negado é exibida.
As permissões foram estruturadas da seguinte forma: Foi usado o Policy Server. Link da documentação aqui.
Para o usuário acessar determinada funcionalidade o sistema precisa verificar se este usuário possui a permissão necessária. Para isso funcionar, cada serviço do sistema possui as suas permissões, desta forma, sempre que um usuário solicitar o acesso a uma funcionalidade, o serviço irá verificar se o perfil do usuário possui a permissão , caso possua, o usuário poderá acessar a funcionalidade.
Para verificar se o usuário possui ou não a permissão necessária, o cliente (no caso, o prematricula.mvc) envia um token (que contem a perfil do usuário) para o serviço. O serviço recebe este token e o valida.
Abaixo é exibida uma relação das permissões disponíveis para cada perfil agrupadas por serviço:
Obs.: Quando está escrito “todos” está incluído os perfis responsavel, gestor e administrador, com exceção da tecsystem.
| Permissão | Perfil do usuário |
| dependente | todos |
| dependente_create | responsavel |
| dependente_update | responsavel |
| dependente_delete | responsavel |
| prematricula | todos |
| prematricula_ordenar | gestor, administrador |
| prematricula_alterarsituacao | gestor, administrador |
| prematricula_create | responsavel |
| prematricula_delete_id | responsavel |
| prepararturma | gestor, administrador |
| prepararturma_create | gestor, administrador |
| prepararturma_removerturma | gestor, administrador |
| prepararturma_gerarxml | gestor, administrador |
| responsavel | todos |
| responsavel_create | responsavel |
| responsavel_update | responsavel |
| responsavel_delete | responsavel |
| Permissão | Perfil do usuário |
| cliente | tecsystem |
| cliente_create | tecsystem |
| cliente_update | tecsystem |
| cliente_delete | tecsystem |
| configuracao | todos |
| configuracao_create | gestor, administrador, tecsystem |
| configuracao_delete | gestor, administrador, tecsystem |
| curso | todos |
| escola | todos |
| modalidade | todos |
| periodo | todos |
| periodo_create | gestor, administrador |
| periodo_update | gestor, administrador |
| periodo_delete | gestor, administrador |
| prematriculacursocriterio | gestor, administrador |
| prematriculacursocriterio_create | gestor, administrador |
| serie | todos |
| vagas | todos |
| vagas_create | gestor, administrador |
| vagas_update | gestor, administrador |
| vagas_delete | gestor, administrador |
| Permissão | Perfil do usuário |
| aluno | todos |
| curso | todos |
| curso_create | gestor, administrador |
| curso_update | gestor, administrador |
| curso_delete | gestor, administrador |
| escola | todos |
| escola_create | gestor, administrador |
| escola_update | gestor, administrador |
| escola_delete | gestor, administrador |
| etapa | todos |
| modalidade | todos |
| municipio | todos |
| serie | todos |
| serie_create | gestor, administrador |
| serie_update | gestor, administrador |
| serie_delete | gestor, administrador |
| serieetapa | todos |
| turma | todos |
| turma_create | gestor, administrador |
| turma_update | gestor, administrador |
| turma_delete | gestor, administrador |
Este é o cliente, contem a parte visual do sistema de pré-matrícula.
| Relação Perfil x Permissões | |
| Permissão | Perfil |
| home | todos |
| create_cliente | tecsystem |
| update_cliente | tecsystem |
| delete_cliente | tecsystem |
| view_cliente | tecsystem |
| list_cliente | tecsystem |
| list_usuarioperfil | administrador, tecsystem |
| update_usuarioperfil | administrador, tecsystem |
| recuperarusuario_usuarioperfil | administrador, tecsystem |
| create_dependente | responsavel |
| view_dependente | responsavel, gestor, administrador |
| update_dependente | responsavel |
| list_dependente | responsavel |
| create_prematricula | responsavel |
| list_prematricula | responsavel, gestor, administrador |
| view_prematricula | responsavel, gestor, administrador |
| buscar_dependente | responsavel |
| delete_dependente | responsavel |
| create_rematricula | responsavel |
| list_rematricula | responsavel, gestor, administrador |
| view_rematricula | responsavel, gestor, administrador |
| ordenar_prematricula | gestor, administrador |
| preparar_turma | gestor, administrador |
| log | todos |
Foi criado um serviço para impedir que usuários de mesmo perfil tentem alterar ou excluir informações de outros usuários com o mesmo perfil.
A validação consiste em verificar o GUID do usuário e compara-lo com o GUID do dado, se o GUID for o mesmo a operação poderá seguir, caso não, será lançado uma exceção para impedir que a operação de seja realizada. Existe algumas diferenças nas validações de acordo com o perfil do usuário:
Perfil responsável e administrador
É verificado o GUID do usuário e comparado com o dado, se for o mesmo a operação pode continuar.
Perfil gestor
É usado a role idaministrador(que é o GUID do administrador) do usuário para comparar com o GUID do dado e aprovar ou não a operação.
Obs.: Caso o dado possua o GUID do gestor, é necessário verificar quem é o administrador desse gestor e recuperar o GUID do administrador, isso para sempre termos como parâmetro um GUID comum para esses dois tipos de usuário (administrador/gestor).