45 lines
1.5 KiB
Kotlin

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