package roomescape.auth.web import io.swagger.v3.oas.annotations.Parameter import jakarta.validation.Valid import org.springframework.http.HttpHeaders 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 roomescape.auth.docs.AuthAPI import roomescape.auth.service.AuthService import roomescape.auth.web.support.MemberId import roomescape.auth.web.support.expiredAccessTokenCookie import roomescape.auth.web.support.toResponseCookie import roomescape.common.dto.response.CommonApiResponse @RestController class AuthController( private val authService: AuthService ) : AuthAPI { @PostMapping("/login") override fun login( @Valid @RequestBody loginRequest: LoginRequest, ): ResponseEntity> { val response: LoginResponse = authService.login(loginRequest) return ResponseEntity.ok() .header(HttpHeaders.SET_COOKIE, response.toResponseCookie()) .body(CommonApiResponse()) } @GetMapping("/login/check") override fun checkLogin( @MemberId @Parameter(hidden = true) memberId: Long ): ResponseEntity> { val response: LoginCheckResponse = authService.checkLogin(memberId) return ResponseEntity.ok(CommonApiResponse(response)) } @PostMapping("/logout") override fun logout(): ResponseEntity> = ResponseEntity.ok() .header(HttpHeaders.SET_COOKIE, expiredAccessTokenCookie()) .body(CommonApiResponse()) }