- api.php를 13개 도메인별 파일로 분리 (1,479줄 → 61줄) - ApiVersionMiddleware 생성 (헤더/쿼리 기반 버전 선택) - v2 요청 시 v2 없으면 v1으로 자동 폴백 - 지원 헤더: Accept-Version, X-API-Version, api_version 쿼리 분리된 도메인: auth, admin, users, tenants, hr, finance, sales, inventory, production, design, files, boards, common Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
64 lines
4.5 KiB
PHP
64 lines
4.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* 관리자 API 라우트 (v1)
|
|
*
|
|
* - 테넌트 사용자 관리
|
|
* - 글로벌 메뉴 관리
|
|
* - FCM 관리자용 API
|
|
*/
|
|
|
|
use App\Http\Controllers\Api\Admin\GlobalMenuController;
|
|
use App\Http\Controllers\Api\V1\Admin\FcmController;
|
|
use App\Http\Controllers\Api\V1\AdminController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
// Tenant Admin API
|
|
Route::prefix('admin')->group(function () {
|
|
// 목록/생성
|
|
Route::get('users', [AdminController::class, 'index'])->name('v1.admin.users.index'); // 테넌트 사용자 목록 조회
|
|
Route::post('users', [AdminController::class, 'store'])->name('v1.admin.users.store'); // 테넌트 사용자 생성
|
|
|
|
// 단건
|
|
Route::get('users/{id}', [AdminController::class, 'show'])->name('v1.admin.users.show'); // 테넌트 사용자 단건 조회
|
|
Route::put('users/{id}', [AdminController::class, 'update'])->name('v1.admin.users.update'); // 테넌트 사용자 수정
|
|
|
|
// 소프트 삭제 복구
|
|
Route::delete('users/{id}', [AdminController::class, 'destroy'])->name('v1.admin.users.destroy'); // 테넌트 사용자 삭제(연결 삭제)
|
|
Route::post('users/{id}/restore', [AdminController::class, 'restore'])->name('v1.admin.users.restore'); // 테넌트 사용자 삭제 복구
|
|
|
|
// 상태 토글
|
|
Route::patch('users/{id}/status', [AdminController::class, 'toggle'])->name('v1.admin.users.status.toggle'); // 테넌트 사용자 활성/비활성
|
|
|
|
// 역할 부여/해제
|
|
Route::post('users/{id}/roles', [AdminController::class, 'attach'])->name('v1.admin.users.roles.attach'); // 테넌트 사용자 역할 부여
|
|
Route::delete('users/{id}/roles/{role}', [AdminController::class, 'detach'])->name('v1.admin.users.roles.detach'); // 테넌트 사용자 역할 해제
|
|
|
|
// 비밀번호 초기화
|
|
Route::post('users/{id}/reset-password', [AdminController::class, 'reset'])->name('v1.admin.users.password.reset'); // 테넌트 사용자 비밀번호 초기화
|
|
|
|
// 글로벌 메뉴 관리 (시스템 관리자용)
|
|
Route::prefix('global-menus')->group(function () {
|
|
Route::get('/', [GlobalMenuController::class, 'index'])->name('v1.admin.global-menus.index'); // 글로벌 메뉴 목록
|
|
Route::post('/', [GlobalMenuController::class, 'store'])->name('v1.admin.global-menus.store'); // 글로벌 메뉴 생성
|
|
Route::get('/tree', [GlobalMenuController::class, 'tree'])->name('v1.admin.global-menus.tree'); // 글로벌 메뉴 트리
|
|
Route::get('/stats', [GlobalMenuController::class, 'stats'])->name('v1.admin.global-menus.stats'); // 글로벌 메뉴 통계
|
|
Route::post('/reorder', [GlobalMenuController::class, 'reorder'])->name('v1.admin.global-menus.reorder'); // 글로벌 메뉴 순서 변경
|
|
Route::get('/{id}', [GlobalMenuController::class, 'show'])->name('v1.admin.global-menus.show'); // 글로벌 메뉴 단건 조회
|
|
Route::put('/{id}', [GlobalMenuController::class, 'update'])->name('v1.admin.global-menus.update'); // 글로벌 메뉴 수정
|
|
Route::delete('/{id}', [GlobalMenuController::class, 'destroy'])->name('v1.admin.global-menus.destroy'); // 글로벌 메뉴 삭제
|
|
Route::post('/{id}/sync-to-tenants', [GlobalMenuController::class, 'syncToTenants'])->name('v1.admin.global-menus.sync-to-tenants'); // 테넌트에 동기화
|
|
});
|
|
|
|
// Admin FCM API (MNG 관리자용 FCM 발송) - API Key 인증만 사용
|
|
Route::prefix('fcm')->group(function () {
|
|
Route::post('/send', [FcmController::class, 'send'])->name('v1.admin.fcm.send'); // FCM 발송
|
|
Route::get('/preview-count', [FcmController::class, 'previewCount'])->name('v1.admin.fcm.preview'); // 대상 토큰 수 미리보기
|
|
Route::get('/tokens', [FcmController::class, 'tokens'])->name('v1.admin.fcm.tokens'); // 토큰 목록
|
|
Route::get('/tokens/stats', [FcmController::class, 'tokenStats'])->name('v1.admin.fcm.tokens.stats'); // 토큰 통계
|
|
Route::patch('/tokens/{id}/toggle', [FcmController::class, 'toggleToken'])->name('v1.admin.fcm.tokens.toggle'); // 토큰 상태 토글
|
|
Route::delete('/tokens/{id}', [FcmController::class, 'deleteToken'])->name('v1.admin.fcm.tokens.delete'); // 토큰 삭제
|
|
Route::get('/history', [FcmController::class, 'history'])->name('v1.admin.fcm.history'); // 발송 이력
|
|
});
|
|
});
|