Skip to content

Gestão de empregados

A entidade Employee (src/Entity/Organization/Employee) é o modelo de utilizador do sistema Doggy e, ao mesmo tempo, o principal sujeito de autenticação do Symfony Security. A gestão é feita através do EmployeeController e do EmployeeApiController.

Visão geral

O módulo de gestão de empregados cobre todo o ciclo de vida:

  • Perspetiva de RH: gestão de lista de efetivos, integração de novos contratados, análise estatística
  • Perspetiva de TI: abertura de contas, atribuição de permissões, configuração de Passkeys
  • Perspetiva de gestor: gestão de equipas, relações de reporte, mobilização de pessoal

Estrutura da entidade

Employee é a entidade App\Entity\Organization\Employee e também o fornecedor de utilizadores de segurança:

yaml
# config/packages/security.yaml
providers:
  app_user_provider:
    entity:
      class: App\Entity\Organization\Employee

Campos-chave:

  • isPasswordModifiedByUser: marca se a palavra-passe inicial já foi alterada
  • Relação um-para-muitos com WebauthnCredential (passkeys)
  • O avatar é gerido através do AvatarController

Funcionalidades principais

Lista de efetivos

  • Interface de administração: templates/employee/list.html.twig
  • Página de detalhes: templates/employee/show.html.twig
  • Página de edição: templates/employee/edit.html.twig
  • Painel de edição: templates/employee/edit_drawer.html.twig
  • Gestão de avatar: templates/employee/_avatar_modal.html.twig

API

A gestão de empregados fornece uma API RESTful através do EmployeeApiController:

http
GET    /api/admin/employees         # Lista de empregados
POST   /api/admin/employees         # Criar empregado
GET    /api/admin/employees/{id}    # Detalhes do empregado
PUT    /api/admin/employees/{id}    # Atualizar empregado
DELETE /api/admin/employees/{id}    # Eliminar empregado

Processo de integração

No primeiro início de sessão, o sistema deteta automaticamente o estado do utilizador através do UserSetupListener:

  1. Verifica se a palavra-passe já foi alterada (isPasswordModifiedByUser)
  2. Verifica se já foi registado um Passkey
  3. Se algum passo estiver incompleto, redireciona para a página de configuração

Configurações do utilizador

php
// src/EventListener/UserSetupListener.php
// Lista branca de rotas de permissão: app_user_setup, app_logout
// As rotas WebAuthn e de início de sessão são sempre acessíveis

// Redireciona para a página de configuração se a palavra-passe não foi alterada ou não há Passkey

Entradas de gestão

  • Lista de empregados: App\Controller\EmployeeController
  • API: App\Controller\Api\EmployeeApiController
  • Avatar: App\Controller\Api\AvatarController

Código aberto sob MIT | Copyright © 2026 Doggy