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