員工管理
Employee 實體(src/Entity/Organization/Employee)是 Doggy 系統使用者模型,同時也是 Symfony Security 的認證主體。管理入口基於 EmployeeController 和 EmployeeApiController。
概述
員工管理模組涵蓋完整生命週期:
- 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 自動偵測使用者狀態:
- 檢查密碼是否已修改(
isPasswordModifiedByUser) - 檢查是否已註冊 Passkey
- 未完成任一步驟則跳轉至設定頁
使用者設定
php
// src/EventListener/UserSetupListener.php
// 权限路由白名单: app_user_setup, app_logout
// WebAuthn 和登录路由始终可访问
// 密码未修改或未设置 Passkey 时重定向到设置页管理入口
- 員工清單:
App\Controller\EmployeeController - API:
App\Controller\Api\EmployeeApiController - 頭像:
App\Controller\Api\AvatarController