员工管理
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