1+ package com .timepaper .backend .domain .user .controller ;
2+
3+ import com .fasterxml .jackson .databind .ObjectMapper ;
4+ import com .timepaper .backend .domain .user .entity .User ;
5+ import com .timepaper .backend .global .auth .service .AuthService ;
6+ import com .timepaper .backend .global .common .dto .ApiResponse ;
7+ import jakarta .servlet .http .HttpServletResponse ;
8+ import lombok .RequiredArgsConstructor ;
9+ import org .springframework .beans .factory .annotation .Value ;
10+ import org .springframework .http .HttpStatus ;
11+ import org .springframework .http .ResponseEntity ;
12+ import org .springframework .security .authentication .AuthenticationManager ;
13+ import org .springframework .security .authentication .BadCredentialsException ;
14+ import org .springframework .security .authentication .UsernamePasswordAuthenticationToken ;
15+ import org .springframework .security .core .Authentication ;
16+ import org .springframework .web .bind .annotation .PostMapping ;
17+ import org .springframework .web .bind .annotation .RequestMapping ;
18+ import org .springframework .web .bind .annotation .RestController ;
19+
20+ import java .io .IOException ;
21+
22+ @ RestController
23+ @ RequiredArgsConstructor
24+ @ RequestMapping ("/api" )
25+ public class DemoLoginController {
26+
27+ private final AuthenticationManager authenticationManager ;
28+ private final AuthService authService ;
29+ private final ObjectMapper objectMapper ;
30+ @ Value ("${DEMO_EMAIL}" )
31+ private String demoEmail ;
32+ @ Value ("${DEMO_PASSWORD}" )
33+ private String demoPassword ;
34+
35+ @ PostMapping ("/auth/demo-login" )
36+ public ResponseEntity <?> demoLogin (HttpServletResponse response ) throws IOException {
37+ UsernamePasswordAuthenticationToken authToken =
38+ new UsernamePasswordAuthenticationToken (demoEmail , demoPassword );
39+
40+ try {
41+ Authentication authentication = authenticationManager .authenticate (authToken );
42+ User user = (User ) authentication .getPrincipal ();
43+
44+ // 로그인 성공 시 토큰 설정
45+ authService .setTokensResponse (response , authentication , user .getId ());
46+
47+ return ResponseEntity .ok ().body (ApiResponse .ok ("데모 로그인 성공" ));
48+
49+ } catch (BadCredentialsException e ) {
50+ return ResponseEntity .status (HttpStatus .UNAUTHORIZED )
51+ .body (ApiResponse .error ("유효하지 않은 데모 로그인 정보입니다." , "DEMO_LOGIN_FAIL" ));
52+ }
53+ }
54+ }
0 commit comments