sgmp/README_PERMISSOES.md

389 lines
12 KiB
Markdown

# 🔐 Sistema de Login, Senhas e Permissões - SGMP
Este documento explica como funciona o sistema de autenticação e controle de permissões do SGMP.
---
## 📋 Índice
1. [Sistema de Login](#sistema-de-login)
2. [Criação de Usuários](#criação-de-usuários)
3. [Perfis e Permissões](#perfis-e-permissões)
4. [Gerenciamento de Permissões](#gerenciamento-de-permissões)
5. [Regras de Acesso](#regras-de-acesso)
6. [Fluxo de Aprovação](#fluxo-de-aprovação)
---
## 🔑 Sistema de Login
### Autenticação
O SGMP utiliza autenticação integrada com o sistema **Winthor** (TOTVS):
- **Login**: Matrícula do funcionário (mesma do sistema Winthor)
- **Senha**: Senha do sistema Winthor
- **Validação**: As credenciais são validadas diretamente no banco Oracle do Winthor
### Processo de Login
1. O usuário acessa a página de login
2. Informa sua **matrícula** e **senha**
3. O sistema consulta o Winthor para validar as credenciais
4. Se válido:
- Cria/atualiza o registro `UsuarioSistema` no banco do SGMP
- Cria uma sessão Django para o usuário
- Redireciona para o Dashboard
5. Se inválido:
- Exibe mensagem de erro
- Permanece na página de login
### Primeiro Acesso
Quando um usuário faz login pela primeira vez:
- Um registro `UsuarioSistema` é criado automaticamente
- O perfil padrão é **GESTOR**
- O usuário fica **ativo** por padrão
- O nome é obtido do Winthor
---
## 👥 Criação de Usuários
### Criação Automática
Os usuários são criados **automaticamente** no primeiro login:
- Não é necessário criar usuários manualmente
- O sistema sincroniza com o Winthor
- A matrícula é usada como identificador único
### Criação Manual (Admin Django)
Para criar usuários manualmente ou ajustar dados:
1. Acesse `/admin/` (painel administrativo do Django)
2. Navegue até **Solicitações → Usuários do Sistema**
3. Crie ou edite usuários conforme necessário
**Campos importantes:**
- **Matrícula**: Deve corresponder à matrícula do Winthor
- **Nome**: Nome completo do usuário
- **Perfil**: Define as permissões (veja seção de Perfis)
- **Ativo**: Se desmarcado, o usuário não consegue fazer login
---
## 🎭 Perfis e Permissões
O sistema possui perfis com diferentes níveis de acesso.
Hoje também existe suporte a **multi-perfis**: cada usuário tem um perfil principal e pode ter perfis adicionais.
### Perfis disponíveis
- `GESTOR`
- `ADMIN`
- `HEAD`
- `GG` (Gente e Gestão)
- `CONTROLADORIA`
- `DIRETORIA`
### Multi-perfis (`UsuarioPerfilExtra`)
- O campo `UsuarioSistema.perfil` guarda o **perfil principal**.
- A tabela `UsuarioPerfilExtra` registra **perfis adicionais**.
- O método `tem_perfil(perfil)` considera tanto o principal quanto os extras.
Exemplos práticos:
- Rosi como **GESTOR** (principal) + **HEAD** (extra):
- Ela continua podendo criar solicitações como Gestora.
- Também pode aprovar como Head para os gestores aos quais estiver vinculada (inclusive ela mesma, se for configurada como sua própria head).
---
### 0. ADMIN
**Permissões principais:**
- ✅ Visão completa de todas as solicitações (`dashboard` e `todas as solicitações`)
- ✅ Criar solicitações (como super-perfil de negócio)
- ✅ Registrar parecer técnico quando houver etapa pendente (GG/Controladoria)
- ✅ Aprovar/reprovar em etapas decisórias válidas por status (`AGUARDANDO_HEAD` e `AGUARDANDO_DIRETORIA`)
- ✅ Gerenciar permissões de usuários
- ⚠️ Não ignora o fluxo: ações continuam bloqueadas quando o status não permite
**Uso:** Perfil administrativo de negócio com acesso transversal e governança total.
---
### 1. GESTOR (Gestor)
**Permissões principais:**
- ✅ Criar solicitações (desligamento, admissão, movimentação)
- ✅ Visualizar e editar **suas próprias solicitações** em status `RASCUNHO`
- ✅ Enviar suas solicitações para aprovação
- ✅ Acessar a página de permissões `/permissoes/` para alterar perfis
- ❌ Não aprova solicitações por padrão (a menos que também tenha outro perfil, como HEAD ou DIRETORIA)
**Uso:** Gestores de equipe que iniciam processos de RH.
---
### 2. HEAD
**Permissões principais:**
- ✅ Visualizar solicitações com status `AGUARDANDO_HEAD`
- ✅ Aprovar ou reprovar como Head quando:
- A solicitação está em `AGUARDANDO_HEAD`, e
- O solicitante é um Gestor vinculado a esse Head em `HeadGestor` (ou o próprio, se configurado)
- ✅ Acessar a página de permissões `/permissoes/` (mesmas regras gerais)
- ❌ Não cria solicitações apenas por ser Head (isso depende de também ter perfil de Gestor)
**Uso:** Camada intermediária de aprovação antes de a solicitação seguir para GG/Controladoria.
---
### 3. GG (Gente e Gestão)
**Permissões principais:**
- ✅ Visualizar solicitações com status `ENVIADA`
- ✅ Registrar **parecer técnico** (modelo `Parecer`) na etapa GG
- ✅ Visualizar detalhes completos das solicitações
- ✅ Acessar a página de permissões `/permissoes/`
- ❌ Não cria novas solicitações apenas por ser GG
- ❌ Não aprova/reprova a solicitação (apenas emite parecer)
**Uso:** Primeira etapa de análise técnica (pessoas).
---
### 4. CONTROLADORIA
**Permissões principais:**
- ✅ Visualizar solicitações com status `ENVIADA`
- ✅ Registrar **parecer técnico** na etapa Controladoria
- ✅ Visualizar detalhes completos das solicitações
- ✅ Acessar a página de permissões `/permissoes/`
- ❌ Não cria novas solicitações apenas por ser Controladoria
- ❌ Não aprova/reprova a solicitação (apenas emite parecer)
**Uso:** Análise financeira/orçamentária antes da decisão final.
---
### 5. DIRETORIA
**Permissões principais:**
- ✅ Visualizar solicitações em status `AGUARDANDO_DIRETORIA`
- ✅ Aprovar ou reprovar solicitações na **etapa final**, alterando o status para `FINALIZADA` ou `REPROVADA`
- ✅ Visualizar detalhes completos das solicitações
- ✅ Acessar a página de permissões `/permissoes/`
- ❌ Não cria novas solicitações apenas por ser Diretoria
**Uso:** Aprovação final e decisão executiva.
---
## ⚙️ Gerenciamento de Permissões
### Acessando a Página de Permissões
1. Faça login no sistema
2. No menu lateral, clique em **"Administração"** (ícone ⚙️)
3. Você será redirecionado para a página de gerenciamento de permissões
### Funcionalidades
A página de permissões permite:
- **Visualizar todos os usuários** do sistema
- **Buscar usuários** por nome ou matrícula
- **Alterar o perfil principal** de qualquer usuário (incluindo o seu próprio)
- **Atribuir/remover perfis adicionais** (multi-perfis)
- **Ver o status** (ativo/inativo) de cada usuário
- **Identificar seu próprio perfil** (marcado como "Você")
### Como Alterar perfis (principal e adicionais)
1. Na tabela de usuários, localize o usuário desejado.
2. Na coluna **Alterar Perfil**, escolha o **perfil principal** no dropdown.
3. Logo abaixo, marque/desmarque as **checkboxes de Perfis adicionais** (HEAD, GG, CONTROLADORIA, DIRETORIA, etc.).
4. Clique em **"Atualizar"**.
5. Uma mensagem de confirmação será exibida.
### Regras Importantes
- ✅ Qualquer usuário autenticado pode alterar permissões
- ✅ Você pode alterar seu próprio perfil
- ✅ Você pode alterar o perfil de outros usuários
- ⚠️ Alterar seu próprio perfil pode afetar suas permissões imediatamente
---
## 🔒 Regras de Acesso
### Dashboard
O dashboard exibe diferentes informações conforme o perfil:
#### GESTOR
- Vê apenas **suas próprias solicitações**.
- Pode filtrar por status (Total, Pendentes, Aprovadas, Reprovadas).
- Vê solicitações em todos os status (incluindo `RASCUNHO`).
#### HEAD
- Vê solicitações em `AGUARDANDO_HEAD` cujo solicitante é um Gestor vinculado a ele em `HeadGestor`.
- Visualiza o contexto completo da solicitação para poder decidir.
#### GG e CONTROLADORIA
- Veem solicitações em status `ENVIADA` onde ainda **não deram parecer**.
- Após registrar o parecer, essa solicitação deixa de aparecer para aquele usuário na tela principal de trabalho.
#### DIRETORIA
- Vê solicitações em status `AGUARDANDO_DIRETORIA` (aguardando decisão final).
- Não vê rascunhos nem solicitações já finalizadas / reprovadas como itens de trabalho.
### Criação de Solicitações
- **GESTOR e ADMIN** podem criar solicitações
- Outros perfis verão mensagem de erro se tentarem acessar formulários de criação
### Visualização de Detalhes
- Todos os perfis podem visualizar detalhes de solicitações
- O formulário de aprovação só aparece para perfis com permissão de aprovar
### Aprovação/Reprovação
- **HEAD** pode aprovar/reprovar solicitações em `AGUARDANDO_HEAD` desde que tenha perfil de Head (principal ou extra) e esteja vinculado ao gestor solicitante.
- **DIRETORIA** pode aprovar/reprovar solicitações em `AGUARDANDO_DIRETORIA`.
- **ADMIN** também pode aprovar/reprovar nas etapas válidas por status (sem burlar o estado atual).
- GG e CONTROLADORIA não aprovam; registram pareceres que alimentam a decisão da Diretoria.
- O solicitante **pode** aprovar se também tiver perfil de aprovação (por exemplo, for Head ou Diretoria e estiver autorizado pelas regras de vínculo).
---
## 📊 Fluxo de Aprovação
### Estados da Solicitação
1. **RASCUNHO**: Solicitação criada, ainda não enviada.
2. **AGUARDANDO_HEAD**: Aguardando decisão do Head (quando aplicável).
3. **ENVIADA**: Enviada para parecer de GG/Controladoria.
4. **APROVADA_GG** / **APROVADA_CONTROLADORIA**: estados intermediários registrados para histórico.
5. **AGUARDANDO_DIRETORIA**: Aguardando decisão final da Diretoria.
6. **FINALIZADA**: Aprovada pela Diretoria (processo concluído).
7. **REPROVADA**: Reprovação em qualquer etapa (processo encerrado).
### Fluxo Completo
```
GESTOR cria solicitação
Status: RASCUNHO
GESTOR envia para aprovação
Status: AGUARDANDO_HEAD (quando há etapa de Head)
HEAD analisa e aprova/reprova
Status: ENVIADA
GG registra parecer
CONTROLADORIA registra parecer
Status: AGUARDANDO_DIRETORIA
DIRETORIA analisa pareceres e aprova/reprova
Se aprovada → Status: FINALIZADA
```
### Regras de Aprovação
- Apenas perfis com permissão de decisão podem aprovar (HEAD e DIRETORIA, conforme etapa/status).
- GG e CONTROLADORIA registram pareceres, não aprovam.
- Uma reprovação em qualquer etapa de decisão encerra o processo.
- Solicitações em `RASCUNHO` só são visíveis para o criador.
---
## 🛠️ Solução de Problemas
### Não consigo fazer login
**Possíveis causas:**
- Matrícula ou senha incorretas
- Usuário inativo no sistema
- Problema de conexão com o Winthor
**Solução:**
1. Verifique suas credenciais do Winthor
2. Acesse o admin Django (`/admin/`) e verifique se o usuário está ativo
3. Verifique a conexão com o banco Oracle
### Não vejo minhas solicitações
**Possíveis causas:**
- Perfil incorreto
- Solicitações em status "Rascunho" (só visíveis para o criador)
- Filtro aplicado no dashboard
**Solução:**
1. Verifique seu perfil na página de permissões
2. Se for GESTOR, certifique-se de que criou as solicitações
3. Limpe os filtros no dashboard
### Não consigo aprovar solicitações
**Possíveis causas:**
- Perfil sem permissão de aprovação
- Tentando aprovar sua própria solicitação
- Solicitação não está na sua etapa
**Solução:**
1. Verifique seu perfil (deve ser GG, CONTROLADORIA ou DIRETORIA)
2. Certifique-se de que não é o solicitante
3. Verifique se a solicitação está no status correto para sua etapa
### Não consigo criar solicitações
**Possíveis causas:**
- Perfil não é GESTOR
**Solução:**
1. Acesse a página de permissões
2. Altere seu perfil para GESTOR
3. Faça logout e login novamente
---
## 📝 Notas Importantes
1. **Senhas**: As senhas são gerenciadas pelo Winthor. O SGMP não armazena senhas.
2. **Sincronização**: O nome do usuário é sincronizado do Winthor no primeiro login.
3. **Perfil Padrão**: Novos usuários recebem automaticamente o perfil GESTOR.
4. **Ativação**: Usuários podem ser desativados no admin Django, impedindo login.
5. **Segurança**: Qualquer usuário autenticado pode gerenciar permissões. Considere restringir isso se necessário.
---
## 🔗 Links Úteis
- **Página de Login**: `/login/`
- **Dashboard**: `/solicitacoes/`
- **Gerenciar Permissões**: `/solicitacoes/permissoes/`
- **Admin Django**: `/admin/`
---
**Última atualização**: 2024