From 22aaf552e795e1d3a99d4d2c06d0e3899e617dfd Mon Sep 17 00:00:00 2001 From: sedin2 <53131108+sedin2@users.noreply.github.com> Date: Tue, 2 Jun 2020 18:28:09 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:rocket:=20AuthController=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #23 - Github oauth 구현을 위한 mapping 추가 --- .../airbnb12/controller/AuthController.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 BE/src/main/java/kr/codesquad/airbnb12/controller/AuthController.java diff --git a/BE/src/main/java/kr/codesquad/airbnb12/controller/AuthController.java b/BE/src/main/java/kr/codesquad/airbnb12/controller/AuthController.java new file mode 100644 index 0000000..3ad834a --- /dev/null +++ b/BE/src/main/java/kr/codesquad/airbnb12/controller/AuthController.java @@ -0,0 +1,37 @@ +package kr.codesquad.airbnb12.controller; + +import kr.codesquad.airbnb12.domain.User; +import kr.codesquad.airbnb12.response.ApiResponse; +import kr.codesquad.airbnb12.service.AuthService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; + +@RestController +public class AuthController { + + private final AuthService authService; + + public AuthController(AuthService authService) { + this.authService = authService; + } + + @GetMapping("/auth/github") + public ResponseEntity loginGithub(HttpServletResponse response) { + response.setHeader("Location", authService.createGithubAuthTokenUri()); + return new ResponseEntity(HttpStatus.SEE_OTHER); + } + + @GetMapping("/callback/github") + public ResponseEntity> githubCallback(@RequestParam("code") String code, HttpServletResponse response) { + String githubAccessToken = authService.getGithubAccessToken(code); + User user = authService.getUserInformationFromToken(githubAccessToken); + String jwtToken = authService.makeJwtToken(user); + response.setHeader("Authorization", jwtToken); + return new ResponseEntity<>(ApiResponse.OK("OK"), HttpStatus.OK); + } +}