11package org.gitanimals.identity.controller
22
3+ import org.gitanimals.identity.app.AppleLoginFacade
34import org.gitanimals.identity.app.GithubLoginFacade
5+ import org.gitanimals.identity.controller.request.AppleLoginRequest
46import org.gitanimals.identity.controller.request.RedirectWhenSuccess
57import org.springframework.beans.factory.annotation.Value
68import org.springframework.http.HttpStatus
@@ -11,6 +13,7 @@ import org.springframework.web.bind.annotation.*
1113class Oauth2Controller (
1214 @Value(" \$ {oauth.client.id.github}" ) private val githubClientId : String ,
1315 private val githubLoginFacade : GithubLoginFacade ,
16+ private val appleLoginFacade : AppleLoginFacade ,
1417) {
1518
1619 @GetMapping(" /logins/oauth/github" )
@@ -43,4 +46,24 @@ class Oauth2Controller(
4346 )
4447 .build()
4548 }
49+
50+ @PostMapping(" /logins/oauth/apple" )
51+ fun loginWithAppleAndRedirect (
52+ @RequestHeader(
53+ name = " Redirect-When-Success" ,
54+ defaultValue = " HOME"
55+ ) redirectWhenSuccess : RedirectWhenSuccess ,
56+ @RequestHeader(name = " Login-Secret" ) loginSecret : String ,
57+ @RequestBody appleLoginRequest : AppleLoginRequest ,
58+ ): ResponseEntity <Unit > {
59+ val token = appleLoginFacade.login(
60+ username = appleLoginRequest.name,
61+ profileImage = appleLoginRequest.profileImage,
62+ loginSecret = loginSecret,
63+ )
64+
65+ return ResponseEntity .status(HttpStatus .TEMPORARY_REDIRECT )
66+ .header(" Location" , redirectWhenSuccess.successUriWithToken(token))
67+ .build()
68+ }
4669}
0 commit comments