diff --git a/app/Http/Controllers/Api/V1/TenantController.php b/app/Http/Controllers/Api/V1/TenantController.php
new file mode 100644
index 0000000..882889a
--- /dev/null
+++ b/app/Http/Controllers/Api/V1/TenantController.php
@@ -0,0 +1,73 @@
+ $e->getMessage(),
+ ]);
+ }
+ }
+
+
+ /**
+ * 나의 테넌트 전환
+ */
+ public function switch()
+ {
+ //
+ }
+
+ /**
+ * Store a newly created resource in storage.
+ */
+
+ /**
+ * Show the form for editing the specified resource.
+ */
+ public function edit(string $id)
+ {
+ //
+ }
+
+ /**
+ * Update the specified resource in storage.
+ */
+ public function update(Request $request, string $id)
+ {
+ //
+ }
+
+ /**
+ * Remove the specified resource from storage.
+ */
+ public function delAdmin($userNo, Request $request)
+ {
+ return ApiResponse::handle(function () use ($userNo, $request) {
+ return MemberService::delAdmin($userNo);
+ }, '관리자 제외 성공', '관리자 제외 실패');
+ }
+
+ /**
+ * 관리자 설정
+ */
+ public function setAdmin($userNo, Request $request)
+ {
+ return ApiResponse::handle(function () use ($userNo, $request) {
+ return MemberService::setAdmin($userNo);
+ }, '관리자 설정 성공', '관리자 설정 실패');
+ }
+}
+
diff --git a/app/Swagger/v1/AdminApi.php b/app/Swagger/v1/AdminApi.php
new file mode 100644
index 0000000..e55706e
--- /dev/null
+++ b/app/Swagger/v1/AdminApi.php
@@ -0,0 +1,316 @@
+[공통 에러 응답 포맷]
400: 필수 파라미터 누락
401: 인증 실패
403: 권한 없음
404: 존재하지 않는 URI 또는 데이터
405: 허용되지 않는 메서드
500: 서버 에러
모든 에러 응답 예시:
{
"success": false,
"message": "에러 메시지",
"data": null
}
===============================",
+ * description="===============================
[공통 에러 응답 포맷]
400: 필수 파라미터 누락
401: 인증 실패
403: 권한 없음
404: 존재하지 않는 URI 또는 데이터
405: 허용되지 않는 메서드
500: 서버 에러
모든 에러 응답 예시:
{
"success": false,
"message": "에러 메시지",
"data": null
}
===============================",
* @OA\Contact(
* email="shine1324@gmail.com"
* )
@@ -22,13 +22,38 @@
* type="apiKey",
* in="header",
* name="X-API-KEY"
- * )
+ * )
+ *
* @OA\SecurityScheme(
* securityScheme="BearerAuth",
* type="http",
* scheme="bearer",
* bearerFormat="JWT"
- * )
+ * )
*
+ * @OA\Tag(
+ * name="Auth",
+ * description="로그인/로그아웃 및 인증 관련 API"
+ * )
+ * @OA\Tag(
+ * name="API Key 인증",
+ * description="API Key 유효성 검사"
+ * )
+ * @OA\Tag(
+ * name="User",
+ * description="사용자 자기 계정 관련 API"
+ * )
+ * @OA\Tag(
+ * name="Member",
+ * description="회원 관리 API"
+ * )
+ * @OA\Tag(
+ * name="Admin-Users",
+ * description="관리자 사용자 관리 API"
+ * )
+ * @OA\Tag(
+ * name="Product",
+ * description="제품 관련 API"
+ * )
*/
class SAMInfo {}
diff --git a/routes/api.php b/routes/api.php
index 84eea74..7e18f67 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -4,14 +4,12 @@
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\V1\CommonController;
use App\Http\Controllers\Api\V1\ApiController;
-use App\Http\Controllers\Api\V1\MemberController;
use App\Http\Controllers\Api\V1\AdminApiController;
use App\Http\Controllers\Api\V1\FileController;
use App\Http\Controllers\Api\V1\ProductController;
use App\Http\Controllers\Api\V1\MaterialController;
use App\Http\Controllers\Api\V1\ModelController;
use App\Http\Controllers\Api\V1\BomController;
-use App\Http\Controllers\Api\V1\TenantController;
use App\Http\Controllers\Api\V1\UserController;
// error test
@@ -60,10 +58,8 @@
Route::put('me/password', [UserController::class, 'changePassword'])->name('v1.users.me.password'); // 비밀번호 변겅
Route::get('me/tenants', [UserController::class, 'tenants'])->name('v1.users.me.tenants.index'); // 내 테넌트 목록
- Route::patch('me/tenants/switch',[UserController::class, 'switchTenant'])->name('v1.users.me.tenants.switch'); // 활성 테넌트 전환
+ Route::patch('me/tenants/switch', [UserController::class, 'switchTenant'])->name('v1.users.me.tenants.switch'); // 활성 테넌트 전환
});
- });
-
// File API
Route::prefix('file')->group(function () {
@@ -71,6 +67,7 @@
Route::get('list', [FileController::class, 'list'])->name('v1.file.list'); // 파일 목록 조회
Route::delete('delete', [FileController::class, 'delete'])->name('v1.file.delete'); // 파일 삭제
Route::get('info', [FileController::class, 'findFile'])->name('v1.file.info'); // 파일 정보 조회
+ });
// Material, Model, BOM API
@@ -82,7 +79,6 @@
});
-
// ─────────────────────────────────────────────────────────────
// 공통 미들웨어 메모:
// - 'apikey' : X-API-KEY 검사 미들웨어 (커스텀)
@@ -109,7 +105,7 @@
// Auth (User)
Route::prefix('auth')->group(function () {
- Route::post('login', [\App\Http\Controllers\Api\V1\AuthController::class, 'login'])
+ Route::post('login', [\App\Http\Controllers\Api\V1\AuthController::class, 'login'])
->name('v1.auth.login'); // Bearer 불필요(로그인)
Route::post('logout', [\App\Http\Controllers\Api\V1\AuthController::class, 'logout'])
@@ -119,12 +115,12 @@
// Users (me)
Route::prefix('users')->middleware('auth:sanctum')->group(function () {
- Route::get('me', [\App\Http\Controllers\Api\V1\User\MeController::class, 'show'])->name('v1.users.me.show');
- Route::put('me', [\App\Http\Controllers\Api\V1\User\MeController::class, 'update'])->name('v1.users.me.update');
- Route::put('me/password', [\App\Http\Controllers\Api\V1\User\MeController::class, 'changePassword'])->name('v1.users.me.password');
+ Route::get('me', [\App\Http\Controllers\Api\V1\User\MeController::class, 'show'])->name('v1.users.me.show');
+ Route::put('me', [\App\Http\Controllers\Api\V1\User\MeController::class, 'update'])->name('v1.users.me.update');
+ Route::put('me/password', [\App\Http\Controllers\Api\V1\User\MeController::class, 'changePassword'])->name('v1.users.me.password');
- Route::get('me/tenants', [\App\Http\Controllers\Api\V1\User\TenantController::class, 'index'])->name('v1.users.me.tenants.index');
- Route::patch('me/tenants/switch',[\App\Http\Controllers\Api\V1\User\TenantController::class, 'switch'])->name('v1.users.me.tenants.switch');
+ Route::get('me/tenants', [\App\Http\Controllers\Api\V1\User\TenantController::class, 'index'])->name('v1.users.me.tenants.index');
+ Route::patch('me/tenants/switch', [\App\Http\Controllers\Api\V1\User\TenantController::class, 'switch'])->name('v1.users.me.tenants.switch');
});
});
@@ -150,13 +146,13 @@
->group(function () {
// 목록/생성
- Route::get('users', [\App\Http\Controllers\Api\V1\Admin\UserController::class, 'index'])->name('v1.admin.users.index');
- Route::post('users', [\App\Http\Controllers\Api\V1\Admin\UserController::class, 'store'])->name('v1.admin.users.store');
+ Route::get('users', [\App\Http\Controllers\Api\V1\Admin\UserController::class, 'index'])->name('v1.admin.users.index');
+ Route::post('users', [\App\Http\Controllers\Api\V1\Admin\UserController::class, 'store'])->name('v1.admin.users.store');
// 단건
- Route::get('users/{id}', [\App\Http\Controllers\Api\V1\Admin\UserController::class, 'show'])->name('v1.admin.users.show');
- Route::put('users/{id}', [\App\Http\Controllers\Api\V1\Admin\UserController::class, 'update'])->name('v1.admin.users.update');
- Route::delete('users/{id}',[\App\Http\Controllers\Api\V1\Admin\UserController::class, 'destroy'])->name('v1.admin.users.destroy');
+ Route::get('users/{id}', [\App\Http\Controllers\Api\V1\Admin\UserController::class, 'show'])->name('v1.admin.users.show');
+ Route::put('users/{id}', [\App\Http\Controllers\Api\V1\Admin\UserController::class, 'update'])->name('v1.admin.users.update');
+ Route::delete('users/{id}', [\App\Http\Controllers\Api\V1\Admin\UserController::class, 'destroy'])->name('v1.admin.users.destroy');
// 상태 토글
Route::patch('users/{id}/status', [\App\Http\Controllers\Api\V1\Admin\UserStatusController::class, 'toggle'])->name('v1.admin.users.status.toggle');
@@ -165,8 +161,8 @@
Route::post('users/{id}/restore', [\App\Http\Controllers\Api\V1\Admin\UserRestoreController::class, 'restore'])->name('v1.admin.users.restore');
// 역할 부여/해제
- Route::post('users/{id}/roles', [\App\Http\Controllers\Api\V1\Admin\UserRoleController::class, 'attach'])->name('v1.admin.users.roles.attach');
- Route::delete('users/{id}/roles/{role}', [\App\Http\Controllers\Api\V1\Admin\UserRoleController::class, 'detach'])->name('v1.admin.users.roles.detach');
+ Route::post('users/{id}/roles', [\App\Http\Controllers\Api\V1\Admin\UserRoleController::class, 'attach'])->name('v1.admin.users.roles.attach');
+ Route::delete('users/{id}/roles/{role}', [\App\Http\Controllers\Api\V1\Admin\UserRoleController::class, 'detach'])->name('v1.admin.users.roles.detach');
// 비밀번호 초기화
Route::post('users/{id}/reset-password', [\App\Http\Controllers\Api\V1\Admin\UserPasswordController::class, 'reset'])->name('v1.admin.users.password.reset');