Skip to content

員工管理

Employee 實體(src/Entity/Organization/Employee)是 Doggy 系統使用者模型,同時也是 Symfony Security 的認證主體。管理入口基於 EmployeeControllerEmployeeApiController

概述

員工管理模組涵蓋完整生命週期:

  • HR 視角:名冊管理、報到辦理、統計分析
  • IT 視角:帳號開通、權限分配、Passkey 設定
  • 管理者視角:團隊管理、彙報關係、人員調配

實體結構

Employee 是 App\Entity\Organization\Employee 實體,同時也是 Security 使用者提供者:

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

關鍵欄位:

  • isPasswordModifiedByUser:標記初始密碼是否已修改
  • WebauthnCredential 一對多關聯(passkeys)
  • 頭像透過 AvatarController 管理

核心功能

員工名冊

  • 管理介面:templates/employee/list.html.twig
  • 詳情頁面:templates/employee/show.html.twig
  • 編輯頁面:templates/employee/edit.html.twig
  • 編輯抽屜:templates/employee/edit_drawer.html.twig
  • 頭像管理:templates/employee/_avatar_modal.html.twig

API 介面

員工管理透過 EmployeeApiController 提供 RESTful API:

http
GET    /api/admin/employees         # 员工列表
POST   /api/admin/employees         # 创建员工
GET    /api/admin/employees/{id}    # 员工详情
PUT    /api/admin/employees/{id}    # 更新员工
DELETE /api/admin/employees/{id}    # 删除员工

報到流程

首次登入時,系統透過 UserSetupListener 自動偵測使用者狀態:

  1. 檢查密碼是否已修改(isPasswordModifiedByUser
  2. 檢查是否已註冊 Passkey
  3. 未完成任一步驟則跳轉至設定頁

使用者設定

php
// src/EventListener/UserSetupListener.php
// 权限路由白名单: app_user_setup, app_logout
// WebAuthn 和登录路由始终可访问

// 密码未修改或未设置 Passkey 时重定向到设置页

管理入口

  • 員工清單:App\Controller\EmployeeController
  • API:App\Controller\Api\EmployeeApiController
  • 頭像:App\Controller\Api\AvatarController

基於 MIT 協議開源 | Copyright © 2026 Doggy