feat: MNG → DEV 자동 로그인 기능 구현
- LoginToken 모델 생성 (토큰 생성 및 URL 생성) - UserController에 loginToken API 메서드 추가 - DEV_APP_URL 환경설정 추가 (config/services.php) - 사용자 목록에 "DEV 접속" 버튼 추가 - openDevSite JavaScript 함수 추가 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\StoreUserRequest;
|
||||
use App\Http\Requests\UpdateUserRequest;
|
||||
use App\Models\LoginToken;
|
||||
use App\Services\UserService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
@@ -292,4 +293,47 @@ public function forceDestroy(Request $request, int $id): JsonResponse
|
||||
'message' => '사용자가 영구 삭제되었습니다.',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* DEV 사이트 자동 로그인 토큰 생성
|
||||
* MNG → DEV 자동 로그인용 One-Time Token 발급
|
||||
*/
|
||||
public function loginToken(Request $request, int $id): JsonResponse
|
||||
{
|
||||
try {
|
||||
// 슈퍼관리자 보호: 일반관리자가 슈퍼관리자로 로그인 불가
|
||||
if (! $this->userService->canAccessUser($id)) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => '사용자를 찾을 수 없습니다.',
|
||||
], 404);
|
||||
}
|
||||
|
||||
$user = $this->userService->getUserById($id);
|
||||
|
||||
if (! $user) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => '사용자를 찾을 수 없습니다.',
|
||||
], 404);
|
||||
}
|
||||
|
||||
// One-Time Token 생성
|
||||
$loginToken = LoginToken::createForUser($user->id);
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'DEV 접속 토큰이 생성되었습니다.',
|
||||
'data' => [
|
||||
'url' => $loginToken->getAutoLoginUrl(),
|
||||
'expires_at' => $loginToken->expires_at->toIso8601String(),
|
||||
],
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'DEV 접속 토큰 생성에 실패했습니다: '.$e->getMessage(),
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user