fix : 결과 전달시 두번 래핑되는 부분 수정

- 컨트롤러와 서비스에서 각각 래핑 후 결과 전달됨으로 이중 래핑되고 있음
  -> 서비스에서 래핑하는 부분을 컨트롤러로 옮겨서 컨트롤러에서만 한번 래핑하는 걸로 수정
This commit is contained in:
2025-08-19 12:41:17 +09:00
parent aa190bf48d
commit 43e4c507a7
18 changed files with 299 additions and 277 deletions

View File

@@ -82,7 +82,7 @@ public static function list(int $roleId)
$role = self::loadRoleOrError($roleId, $tenantId);
if (!$role) {
return ApiResponse::error('역할을 찾을 수 없습니다.', 404);
return ['error' => '역할을 찾을 수 없습니다.', 'code' => 404];
}
self::setTeam($tenantId);
@@ -93,7 +93,7 @@ public static function list(int $roleId)
->orderBy('name')
->get(['id','tenant_id','name','guard_name','created_at','updated_at']);
return ApiResponse::response('result', $perms);
return $perms;
}
/** 부여 (중복 무시) */
@@ -103,7 +103,7 @@ public static function grant(int $roleId, array $params = [])
$role = self::loadRoleOrError($roleId, $tenantId);
if (!$role) {
return ApiResponse::error('역할을 찾을 수 없습니다.', 404);
return ['error' => '역할을 찾을 수 없습니다.', 'code' => 404];
}
// 유효성: 두 방식 중 하나만 요구하진 않지만, 최소 하나는 있어야 함
@@ -118,23 +118,23 @@ public static function grant(int $roleId, array $params = [])
],
]);
if ($v->fails()) {
return ApiResponse::error($v->errors()->first(), 422);
return ['error' => $v->errors()->first(), 'code' => 422];
}
if (empty($params['permission_names']) && (empty($params['menus']) || empty($params['actions']))) {
return ApiResponse::error('permission_names 또는 menus+actions 중 하나는 필요합니다.', 422);
return ['error' => 'permission_names 또는 menus+actions 중 하나는 필요합니다.', 'code' => 422];
}
self::setTeam($tenantId);
$names = self::resolvePermissionNames($tenantId, $params);
if (empty($names)) {
return ApiResponse::error('유효한 퍼미션이 없습니다.', 422);
return ['error' => '유효한 퍼미션이 없습니다.', 'code' => 422];
}
// Spatie: 이름 배열 부여 OK (teams 컨텍스트 적용됨)
$role->givePermissionTo($names);
return ApiResponse::response('success');
return 'success';
}
/** 회수 (없는 건 무시) */
@@ -144,7 +144,7 @@ public static function revoke(int $roleId, array $params = [])
$role = self::loadRoleOrError($roleId, $tenantId);
if (!$role) {
return ApiResponse::error('역할을 찾을 수 없습니다.', 404);
return ['error' => '역할을 찾을 수 없습니다.', 'code' => 404];
}
$v = Validator::make($params, [
@@ -158,22 +158,22 @@ public static function revoke(int $roleId, array $params = [])
],
]);
if ($v->fails()) {
return ApiResponse::error($v->errors()->first(), 422);
return ['error' => $v->errors()->first(), 'code' => 422];
}
if (empty($params['permission_names']) && (empty($params['menus']) || empty($params['actions']))) {
return ApiResponse::error('permission_names 또는 menus+actions 중 하나는 필요합니다.', 422);
return ['error' => 'permission_names 또는 menus+actions 중 하나는 필요합니다.', 'code' => 422];
}
self::setTeam($tenantId);
$names = self::resolvePermissionNames($tenantId, $params);
if (empty($names)) {
return ApiResponse::error('유효한 퍼미션이 없습니다.', 422);
return ['error' => '유효한 퍼미션이 없습니다.', 'code' => 422];
}
$role->revokePermissionTo($names);
return ApiResponse::response('success');
return 'success';
}
/** 동기화(완전 교체) */
@@ -183,7 +183,7 @@ public static function sync(int $roleId, array $params = [])
$role = self::loadRoleOrError($roleId, $tenantId);
if (!$role) {
return ApiResponse::error('역할을 찾을 수 없습니다.', 404);
return ['error' => '역할을 찾을 수 없습니다.', 'code' => 404];
}
$v = Validator::make($params, [
@@ -197,10 +197,10 @@ public static function sync(int $roleId, array $params = [])
],
]);
if ($v->fails()) {
return ApiResponse::error($v->errors()->first(), 422);
return ['error' => $v->errors()->first(), 'code' => 422];
}
if (empty($params['permission_names']) && (empty($params['menus']) || empty($params['actions']))) {
return ApiResponse::error('permission_names 또는 menus+actions 중 하나는 필요합니다.', 422);
return ['error' => 'permission_names 또는 menus+actions 중 하나는 필요합니다.', 'code' => 422];
}
self::setTeam($tenantId);
@@ -209,6 +209,6 @@ public static function sync(int $roleId, array $params = [])
// 동기화
$role->syncPermissions($names);
return ApiResponse::response('success');
return 'success';
}
}