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