import org.springframework.ui.Model
import org.springframework.web.bind.annotation.*
import org.springframework.web.context.request.ServletWebRequest
+import java.text.SimpleDateFormat
import java.util.*
import javax.imageio.ImageIO
import javax.servlet.http.HttpServletRequest
val requestId = if (clientid == null) appid else "$appid-$clientid"
return apiClientRepository.findById(requestId).let {
if (it.isPresent && checkSecretToken(it.get(), secret)) {
- apiClientRepository.delete(it.get())
+ apiClientRepository.deleteById(requestId)
val token = JwtTokenUtil(jwtConfig).generateToken(
mapOf("uid" to appid, "issuer" to "payapi",
"audience" to (clientid ?: appid),
"authorities" to it.get().roles.split(";")))
JwtRedis().apply {
jti = token.jti
+ uid = appid
status = TradeDict.JWT_STATUS_NORMAL
- expiration = token.expiration.value
+ expiration = token.expiration.valueInMillis
}.apply {
apiJwtRepository.save(this)
}
+ val exp = Calendar.getInstance()
+ val fmt = SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z")
+ fmt.timeZone = TimeZone.getTimeZone("UTC")
+ exp.timeInMillis = token.expiration.valueInMillis
ResponseEntity.ok(ResponseBodyBuilder.create()
.data("jwt", token.jwtToken)
.data("appid", appid)
+ .data("expiredAt", fmt.format(exp.time))
.success())
} else {
ResponseEntity.status(HttpStatus.UNAUTHORIZED).build()
}
}
}
+
+ @GetMapping("/refresh")
+ fun refresh(@RequestHeader("\${jwt.header}") auth: String): ResponseEntity<Any> {
+ if (!auth.startsWith(jwtConfig.tokenHeader)) {
+ return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build()
+ }
+ val jwt = JwtTokenUtil(jwtConfig).verifyToken(auth.substring(jwtConfig.tokenHeader.length))
+ val appid = jwt["uid"] as String
+ apiClientDao.findById(appid).let {
+ if (it.isPresent && it.get().status == TradeDict.STATUS_NORMAL) {
+ // 新证书
+ val token = JwtTokenUtil(jwtConfig).generateToken(
+ mapOf("uid" to appid, "issuer" to "payapi",
+ "audience" to jwt["audience"],
+ "authorities" to it.get().roles.split(";")))
+ JwtRedis().apply {
+ jti = token.jti
+ uid = appid
+ status = TradeDict.JWT_STATUS_NORMAL
+ expiration = token.expiration.valueInMillis
+ }.apply {
+ apiJwtRepository.save(this)
+ }
+ val exp = Calendar.getInstance()
+ val fmt = SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z")
+ fmt.timeZone = TimeZone.getTimeZone("UTC")
+ exp.timeInMillis = token.expiration.valueInMillis
+ ResponseEntity.ok(ResponseBodyBuilder.create()
+ .data("jwt", token.jwtToken)
+ .data("appid", appid)
+ .data("expiredAt", fmt.format(exp.time))
+ .success())
+ }
+ }
+ return ResponseEntity.ok().build()
+ }
}
@RestController