diff --git a/spring-auth-1/initial/src/main/java/cholog/auth/ui/BasicLoginController.java b/spring-auth-1/initial/src/main/java/cholog/auth/ui/BasicLoginController.java index 9f956bb5..2c3fb355 100644 --- a/spring-auth-1/initial/src/main/java/cholog/auth/ui/BasicLoginController.java +++ b/spring-auth-1/initial/src/main/java/cholog/auth/ui/BasicLoginController.java @@ -1,5 +1,9 @@ package cholog.auth.ui; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + import cholog.auth.application.AuthService; import cholog.auth.application.AuthorizationException; import cholog.auth.dto.AuthInfo; @@ -7,38 +11,36 @@ import cholog.auth.infrastructure.AuthorizationExtractor; import cholog.auth.infrastructure.BasicAuthorizationExtractor; import jakarta.servlet.http.HttpServletRequest; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; @RestController public class BasicLoginController { - private final AuthService authService; - private final AuthorizationExtractor authorizationExtractor; + private final AuthService authService; + private final AuthorizationExtractor authorizationExtractor; - public BasicLoginController(AuthService authService) { - this.authService = authService; - this.authorizationExtractor = new BasicAuthorizationExtractor(); - } + public BasicLoginController(AuthService authService) { + this.authService = authService; + this.authorizationExtractor = new BasicAuthorizationExtractor(); + } - /** - * ex) request sample - *

- * GET /members/me/basic HTTP/1.1 - * authorization: Basic ZW1haWxAZW1haWwuY29tOjEyMzQ= - * accept: application/json - */ - @GetMapping("/members/me/basic") - public ResponseEntity findMyInfo(HttpServletRequest request) { - // TODO: authorization 헤더의 Basic 값에 있는 email과 password 추출 (hint: authorizationExtractor 사용) - String email = ""; - String password = ""; + /** + * ex) request sample + *

+ * GET /members/me/basic HTTP/1.1 + * authorization: Basic ZW1haWxAZW1haWwuY29tOjEyMzQ= + * accept: application/json + */ + @GetMapping("/members/me/basic") + public ResponseEntity findMyInfo(HttpServletRequest request) { + AuthInfo authInfo = authorizationExtractor.extract(request); + + String email = authInfo.getEmail(); + String password = authInfo.getPassword(); - if (authService.checkInvalidLogin(email, password)) { - throw new AuthorizationException(); - } + if (authService.checkInvalidLogin(email, password)) { + throw new AuthorizationException(); + } - MemberResponse member = authService.findMember(email); - return ResponseEntity.ok().body(member); - } + MemberResponse member = authService.findMember(email); + return ResponseEntity.ok().body(member); + } } diff --git a/spring-auth-1/initial/src/main/java/cholog/auth/ui/SessionLoginController.java b/spring-auth-1/initial/src/main/java/cholog/auth/ui/SessionLoginController.java index a88c9509..f614d340 100644 --- a/spring-auth-1/initial/src/main/java/cholog/auth/ui/SessionLoginController.java +++ b/spring-auth-1/initial/src/main/java/cholog/auth/ui/SessionLoginController.java @@ -1,65 +1,63 @@ package cholog.auth.ui; -import cholog.auth.application.AuthService; -import cholog.auth.application.AuthorizationException; -import cholog.auth.dto.MemberResponse; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpSession; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.Map; +import cholog.auth.application.AuthService; +import cholog.auth.application.AuthorizationException; +import cholog.auth.dto.MemberResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; @RestController public class SessionLoginController { - private static final String SESSION_KEY = "USER"; - private static final String USERNAME_FIELD = "email"; - private static final String PASSWORD_FIELD = "password"; - - private final AuthService authService; - - public SessionLoginController(AuthService authService) { - this.authService = authService; - } - - /** - * ex) request sample - *

- * POST /login/session HTTP/1.1 - * content-type: application/x-www-form-urlencoded; charset=ISO-8859-1 - * host: localhost:55477 - *

- * email=email@email.com&password=1234 - */ - @PostMapping("/login/session") - public ResponseEntity sessionLogin(HttpServletRequest request, HttpSession session) { - // TODO: HttpRequest로 받은 email과 password 추출 - String email = ""; - String password = ""; - - if (authService.checkInvalidLogin(email, password)) { - throw new AuthorizationException(); - } - - // TODO: Session에 인증 정보 저장 (key: SESSION_KEY, value: email값) - - return ResponseEntity.ok().build(); - } - - /** - * ex) request sample - *

- * GET /members/me/session HTTP/1.1 - * cookie: JSESSIONID=E7263AC9557EF658C888F02EEF840A19 - * accept: application/json - */ - @GetMapping("/members/me/session") - public ResponseEntity findMyInfo(HttpSession session) { - // TODO: Session을 통해 인증 정보 조회 (key: SESSION_KEY) - String email = ""; - MemberResponse member = authService.findMember(email); - return ResponseEntity.ok().body(member); - } + private static final String SESSION_KEY = "USER"; + private static final String USERNAME_FIELD = "email"; + private static final String PASSWORD_FIELD = "password"; + + private final AuthService authService; + + public SessionLoginController(AuthService authService) { + this.authService = authService; + } + + /** + * ex) request sample + *

+ * POST /login/session HTTP/1.1 + * content-type: application/x-www-form-urlencoded; charset=ISO-8859-1 + * host: localhost:55477 + *

+ * email=email@email.com&password=1234 + */ + @PostMapping("/login/session") + public ResponseEntity sessionLogin(HttpServletRequest request, HttpSession session) { + String email = request.getParameter("email"); + String password = request.getParameter("password"); + + if (authService.checkInvalidLogin(email, password)) { + throw new AuthorizationException(); + } + + session.setAttribute("SESSION_KEY", email); + + return ResponseEntity.ok().build(); + } + + /** + * ex) request sample + *

+ * GET /members/me/session HTTP/1.1 + * cookie: JSESSIONID=E7263AC9557EF658C888F02EEF840A19 + * accept: application/json + */ + @GetMapping("/members/me/session") + public ResponseEntity findMyInfo(HttpSession session) { + String email = (String)session.getAttribute("SESSION_KEY"); + MemberResponse member = authService.findMember(email); + + return ResponseEntity.ok().body(member); + } } diff --git a/spring-auth-1/initial/src/main/java/cholog/auth/ui/TokenLoginController.java b/spring-auth-1/initial/src/main/java/cholog/auth/ui/TokenLoginController.java index ed0f81ff..4b562024 100644 --- a/spring-auth-1/initial/src/main/java/cholog/auth/ui/TokenLoginController.java +++ b/spring-auth-1/initial/src/main/java/cholog/auth/ui/TokenLoginController.java @@ -1,5 +1,11 @@ package cholog.auth.ui; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + import cholog.auth.application.AuthService; import cholog.auth.dto.MemberResponse; import cholog.auth.dto.TokenRequest; @@ -7,53 +13,50 @@ import cholog.auth.infrastructure.AuthorizationExtractor; import cholog.auth.infrastructure.BearerAuthorizationExtractor; import jakarta.servlet.http.HttpServletRequest; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RestController; @RestController public class TokenLoginController { - private final AuthService authService; - private final AuthorizationExtractor authorizationExtractor; + private final AuthService authService; + private final AuthorizationExtractor authorizationExtractor; + + public TokenLoginController(AuthService authService) { + this.authService = authService; + this.authorizationExtractor = new BearerAuthorizationExtractor(); + } - public TokenLoginController(AuthService authService) { - this.authService = authService; - this.authorizationExtractor = new BearerAuthorizationExtractor(); - } + /** + * ex) request sample + *

+ * POST /login/token HTTP/1.1 + * accept: application/json + * content-type: application/json; charset=UTF-8 + *

+ * { + * "email": "email@email.com", + * "password": "1234" + * } + */ + @PostMapping("/login/token") + public ResponseEntity tokenLogin(@RequestBody TokenRequest tokenRequest) { + // TODO: email, password 정보를 가진 TokenRequest 값을 메서드 파라미터로 받아오기 (hint: @RequestBody) + TokenResponse tokenResponse = authService.createToken(tokenRequest); - /** - * ex) request sample - *

- * POST /login/token HTTP/1.1 - * accept: application/json - * content-type: application/json; charset=UTF-8 - *

- * { - * "email": "email@email.com", - * "password": "1234" - * } - */ - @PostMapping("/login/token") - public ResponseEntity tokenLogin() { - // TODO: email, password 정보를 가진 TokenRequest 값을 메서드 파라미터로 받아오기 (hint: @RequestBody) - TokenRequest tokenRequest = null; - TokenResponse tokenResponse = authService.createToken(tokenRequest); - return ResponseEntity.ok().body(tokenResponse); - } + return ResponseEntity.ok().body(tokenResponse); + } - /** - * ex) request sample - *

- * GET /members/me/token HTTP/1.1 - * authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJlbWFpbEBlbWFpbC5jb20iLCJpYXQiOjE2MTAzNzY2NzIsImV4cCI6MTYxMDM4MDI3Mn0.Gy4g5RwK1Nr7bKT1TOFS4Da6wxWh8l97gmMQDgF8c1E - * accept: application/json - */ - @GetMapping("/members/me/token") - public ResponseEntity findMyInfo(HttpServletRequest request) { - // TODO: authorization 헤더의 Bearer 값을 추출 (hint: authorizationExtractor 사용) - String token = ""; - MemberResponse member = authService.findMemberByToken(token); - return ResponseEntity.ok().body(member); - } + /** + * ex) request sample + *

+ * GET /members/me/token HTTP/1.1 + * authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJlbWFpbEBlbWFpbC5jb20iLCJpYXQiOjE2MTAzNzY2NzIsImV4cCI6MTYxMDM4MDI3Mn0.Gy4g5RwK1Nr7bKT1TOFS4Da6wxWh8l97gmMQDgF8c1E + * accept: application/json + */ + @GetMapping("/members/me/token") + public ResponseEntity findMyInfo(HttpServletRequest request) { + // TODO: authorization 헤더의 Bearer 값을 추출 (hint: authorizationExtractor 사용) + String token = authorizationExtractor.extract(request); + MemberResponse member = authService.findMemberByToken(token); + + return ResponseEntity.ok().body(member); + } }