1
1
package codezap .auth .controller ;
2
2
3
- import codezap .auth .dto .LoginMember ;
4
- import codezap .auth .dto .request .LoginRequest ;
5
- import codezap .auth .dto .response .LoginResponse ;
6
- import codezap .auth .dto .Credential ;
7
- import codezap .auth .manager .CredentialManager ;
8
- import codezap .auth .provider .CredentialProvider ;
9
- import codezap .auth .service .AuthService ;
3
+ import java .util .List ;
4
+
10
5
import jakarta .servlet .http .HttpServletRequest ;
11
6
import jakarta .servlet .http .HttpServletResponse ;
12
7
import jakarta .validation .Valid ;
13
- import lombok . RequiredArgsConstructor ;
8
+
14
9
import org .springframework .http .ResponseEntity ;
15
10
import org .springframework .web .bind .annotation .GetMapping ;
16
11
import org .springframework .web .bind .annotation .PostMapping ;
17
12
import org .springframework .web .bind .annotation .RequestBody ;
18
13
import org .springframework .web .bind .annotation .RestController ;
19
14
15
+ import codezap .auth .configuration .AuthenticationPrinciple ;
16
+ import codezap .auth .dto .Credential ;
17
+ import codezap .auth .dto .LoginMember ;
18
+ import codezap .auth .dto .request .LoginRequest ;
19
+ import codezap .auth .dto .response .LoginResponse ;
20
+ import codezap .auth .manager .CredentialManager ;
21
+ import codezap .auth .provider .CredentialProvider ;
22
+ import codezap .auth .service .AuthService ;
23
+ import codezap .global .exception .CodeZapException ;
24
+ import codezap .global .exception .ErrorCode ;
25
+ import codezap .member .domain .Member ;
26
+ import lombok .RequiredArgsConstructor ;
27
+
20
28
@ RestController
21
29
@ RequiredArgsConstructor
22
30
public class AuthController implements SpringDocAuthController {
23
31
24
- private final CredentialManager credentialManager ;
32
+ private final List < CredentialManager > credentialManagers ;
25
33
private final CredentialProvider credentialProvider ;
26
34
private final AuthService authService ;
27
35
@@ -32,20 +40,24 @@ public ResponseEntity<LoginResponse> login(
32
40
) {
33
41
LoginMember loginMember = authService .login (request );
34
42
Credential credential = credentialProvider .createCredential (loginMember );
35
- credentialManager . setCredential (httpServletResponse , credential );
43
+ credentialManagers . forEach ( cm -> cm . setCredential (httpServletResponse , credential ) );
36
44
return ResponseEntity .ok (LoginResponse .from (loginMember ));
37
45
}
38
46
39
47
@ GetMapping ("/login/check" )
40
- public ResponseEntity <Void > checkLogin (HttpServletRequest httpServletRequest ) {
41
- Credential credential = credentialManager .getCredential (httpServletRequest );
42
- credentialProvider .extractMember (credential );
48
+ public ResponseEntity <Void > checkLogin (
49
+ @ AuthenticationPrinciple Member member ,
50
+ HttpServletRequest httpServletRequest
51
+ ) {
52
+ if (member == null ) {
53
+ throw new CodeZapException (ErrorCode .UNAUTHORIZED_USER , "인증 정보가 없습니다. 다시 로그인해 주세요." );
54
+ }
43
55
return ResponseEntity .ok ().build ();
44
56
}
45
57
46
58
@ PostMapping ("/logout" )
47
59
public ResponseEntity <Void > logout (HttpServletResponse httpServletResponse ) {
48
- credentialManager . removeCredential (httpServletResponse );
60
+ credentialManagers . forEach ( cm -> cm . removeCredential (httpServletResponse ) );
49
61
return ResponseEntity .noContent ().build ();
50
62
}
51
63
}
0 commit comments