feat: 회원가입 + 테넌트 생성 통합 API 추가 (/api/v1/register)
- 사용자 등록 + 테넌트 생성 + 시스템 관리자 권한 자동 부여 - 사업자번호 조건부 검증 (active 테넌트만 unique) - 글로벌 메뉴 자동 복제 (parent_id 매핑 알고리즘) - DB 트랜잭션으로 전체 프로세스 원자성 보장 추가: - RegisterRequest: FormRequest 검증 (conditional unique) - RegisterService: 9-step 통합 비즈니스 로직 - RegisterController: ApiResponse::handle() 패턴 - RegisterApi: 완전한 Swagger 문서 수정: - MenusStep: 글로벌 메뉴 복제 로직 구현 - message.php: 'registered' 키 추가 - error.php: 4개 에러 메시지 추가 - routes/api.php: POST /api/v1/register 라우트 SAM API Rules 준수: - Service-First, FormRequest, i18n, Swagger, DB Transaction
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* 성공/안내/일반 메시지 (비에러)
|
||||
* - API 정상 응답의 message 필드용
|
||||
@@ -8,61 +9,62 @@
|
||||
return [
|
||||
|
||||
// 공통 (CRUD/편의)
|
||||
'fetched' => '조회 성공',
|
||||
'created' => '등록 성공',
|
||||
'updated' => '수정 성공',
|
||||
'deleted' => '삭제 성공',
|
||||
'restored' => '복구 성공',
|
||||
'toggled' => '상태 변경 성공',
|
||||
'fetched' => '조회 성공',
|
||||
'created' => '등록 성공',
|
||||
'updated' => '수정 성공',
|
||||
'deleted' => '삭제 성공',
|
||||
'restored' => '복구 성공',
|
||||
'toggled' => '상태 변경 성공',
|
||||
'bulk_upsert' => '대량 저장 성공',
|
||||
'reordered' => '정렬 변경 성공',
|
||||
'no_changes' => '변경 사항이 없습니다.',
|
||||
'reordered' => '정렬 변경 성공',
|
||||
'no_changes' => '변경 사항이 없습니다.',
|
||||
|
||||
// 인증/세션
|
||||
'login_success' => '로그인 성공',
|
||||
'login_success' => '로그인 성공',
|
||||
'logout_success' => '로그아웃 되었습니다.',
|
||||
'signup_success' => '회원가입이 완료되었습니다.',
|
||||
'registered' => '회원가입이 완료되었습니다.',
|
||||
|
||||
// 테넌트/컨텍스트
|
||||
'tenant_switched' => '활성 테넌트가 전환되었습니다.',
|
||||
|
||||
// 리소스별 세부 (필요 시)
|
||||
'product' => [
|
||||
'created' => '제품이 등록되었습니다.',
|
||||
'updated' => '제품이 수정되었습니다.',
|
||||
'deleted' => '제품이 삭제되었습니다.',
|
||||
'toggled' => '제품 상태가 변경되었습니다.',
|
||||
'created' => '제품이 등록되었습니다.',
|
||||
'updated' => '제품이 수정되었습니다.',
|
||||
'deleted' => '제품이 삭제되었습니다.',
|
||||
'toggled' => '제품 상태가 변경되었습니다.',
|
||||
],
|
||||
|
||||
'bom' => [
|
||||
'fetched' => 'BOM 항목을 조회했습니다.',
|
||||
'fetched' => 'BOM 항목을 조회했습니다.',
|
||||
'bulk_upsert' => 'BOM 항목이 저장되었습니다.',
|
||||
'reordered' => 'BOM 정렬이 변경되었습니다.',
|
||||
'fetch' => 'BOM 항목 조회',
|
||||
'create' => 'BOM 항목 등록',
|
||||
'update' => 'BOM 항목 수정',
|
||||
'delete' => 'BOM 항목 삭제',
|
||||
'restore' => 'BOM 항목 복구',
|
||||
'reordered' => 'BOM 정렬이 변경되었습니다.',
|
||||
'fetch' => 'BOM 항목 조회',
|
||||
'create' => 'BOM 항목 등록',
|
||||
'update' => 'BOM 항목 수정',
|
||||
'delete' => 'BOM 항목 삭제',
|
||||
'restore' => 'BOM 항목 복구',
|
||||
],
|
||||
|
||||
'category' => [
|
||||
'fields_saved' => '카테고리 필드가 저장되었습니다.',
|
||||
'fields_saved' => '카테고리 필드가 저장되었습니다.',
|
||||
'template_saved' => '카테고리 템플릿이 저장되었습니다.',
|
||||
'template_applied' => '카테고리 템플릿이 적용되었습니다.',
|
||||
],
|
||||
|
||||
'design' => [
|
||||
'template_cloned' => 'BOM 템플릿이 복제되었습니다.',
|
||||
'template_diff' => 'BOM 템플릿 차이를 계산했습니다.',
|
||||
'template_diff' => 'BOM 템플릿 차이를 계산했습니다.',
|
||||
],
|
||||
|
||||
'model_set' => [
|
||||
'cloned' => '모델셋이 복제되었습니다.',
|
||||
'calculated' => 'BOM 계산이 완료되었습니다.',
|
||||
'cloned' => '모델셋이 복제되었습니다.',
|
||||
'calculated' => 'BOM 계산이 완료되었습니다.',
|
||||
],
|
||||
|
||||
'estimate' => [
|
||||
'cloned' => '견적이 복제되었습니다.',
|
||||
'cloned' => '견적이 복제되었습니다.',
|
||||
'status_changed' => '견적 상태가 변경되었습니다.',
|
||||
],
|
||||
|
||||
@@ -71,25 +73,25 @@
|
||||
|
||||
// 설정 관리 (Settings & Configuration 통합)
|
||||
'settings' => [
|
||||
'fields_updated' => '필드 설정이 업데이트되었습니다.',
|
||||
'fields_bulk_saved' => '필드 설정 일괄 저장이 완료되었습니다.',
|
||||
'options_saved' => '옵션 그룹이 저장되었습니다.',
|
||||
'options_reordered' => '옵션 값 정렬이 변경되었습니다.',
|
||||
'common_code_saved' => '공통 코드가 저장되었습니다.',
|
||||
'fields_updated' => '필드 설정이 업데이트되었습니다.',
|
||||
'fields_bulk_saved' => '필드 설정 일괄 저장이 완료되었습니다.',
|
||||
'options_saved' => '옵션 그룹이 저장되었습니다.',
|
||||
'options_reordered' => '옵션 값 정렬이 변경되었습니다.',
|
||||
'common_code_saved' => '공통 코드가 저장되었습니다.',
|
||||
],
|
||||
|
||||
// 자재 관리 (Products & Materials 통합)
|
||||
'materials' => [
|
||||
'created' => '자재가 등록되었습니다.',
|
||||
'updated' => '자재가 수정되었습니다.',
|
||||
'deleted' => '자재가 삭제되었습니다.',
|
||||
'fetched' => '자재 목록을 조회했습니다.',
|
||||
'created' => '자재가 등록되었습니다.',
|
||||
'updated' => '자재가 수정되었습니다.',
|
||||
'deleted' => '자재가 삭제되었습니다.',
|
||||
'fetched' => '자재 목록을 조회했습니다.',
|
||||
],
|
||||
|
||||
// 파일 관리
|
||||
'file' => [
|
||||
'uploaded' => '파일이 업로드되었습니다.',
|
||||
'deleted' => '파일이 삭제되었습니다.',
|
||||
'fetched' => '파일 목록을 조회했습니다.',
|
||||
'deleted' => '파일이 삭제되었습니다.',
|
||||
'fetched' => '파일 목록을 조회했습니다.',
|
||||
],
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user