직원 관리
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