package com.xlf.dromstarkotlin.controllers import com.frontleaves.general.utils.BaseResponse import com.frontleaves.general.utils.ResultUtil import com.xlf.dromstarkotlin.services.TokenService import jakarta.servlet.http.Cookie import jakarta.servlet.http.HttpServletRequest import jakarta.servlet.http.HttpServletResponse import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.CookieValue import org.springframework.web.bind.annotation.CrossOrigin import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RestController @RestController @RequestMapping("/api/token") @CrossOrigin(origins = ["*"]) class TokenController( private val tokenService: TokenService ) { /** * 创建 Token 组件 */ @GetMapping("/create") fun createToken( @CookieValue("session") token: String?, httpServletResponse: HttpServletResponse, @RequestParam("return") returnLink: String?, httpServletRequest: HttpServletRequest ): ResponseEntity { // 检查 token 是否存在 return if (token == null) { val newToken = tokenService.tokenCreate(httpServletRequest) httpServletResponse.addCookie( Cookie("session", newToken) .also { it.path = "/" } .also { it.maxAge = 43200 } ) ResultUtil.redirect("SuccessCreate", "Token创建成功", newToken, returnLink, httpServletRequest) } else { if (tokenService.tokenVerify(token, httpServletResponse)) { ResultUtil.redirect("StillValid", "Token依旧有效", null, returnLink, httpServletRequest) } else { httpServletResponse.addCookie( Cookie("session", null) .also { it.path = "/" } .also { it.maxAge = 0 } ) this.createToken(null, httpServletResponse, returnLink, httpServletRequest) } } } }