impl session tokens

This commit is contained in:
Andrew Glaze
2025-05-16 11:56:30 -04:00
parent 0fb66832e1
commit 0f6baa6f0b
6 changed files with 105 additions and 6 deletions

View File

@@ -74,7 +74,36 @@ struct AuthController: RouteCollection {
guard let account = account else {
return Response(status: .badRequest, body: "{\"error\": \"Bad Request\", \"message\": \"Invalid playerId provided.\"}")
}
return Response(status: .notImplemented)
let zatExpiry = Date.now.advanced(by: 43200)
let zrtExpiry = Date.now.advanced(by: 2592000)
let zatTokenJWT = generateToken(accountId: try account.requireID(), expires: zatExpiry, type: .ZAT)
let zrtTokenJWT = generateToken(accountId: try account.requireID(), expires: zrtExpiry, type: .ZRT)
let zatToken = try await req.jwt.sign(zatTokenJWT)
let zrtToken = try await req.jwt.sign(zrtTokenJWT)
let res = LoginDeviceRes(
zatExpiryTime: Int(zatExpiry.timeIntervalSince1970) * 1000,
zrtExpiryTime: Int(zrtExpiry.timeIntervalSince1970) * 1000,
firstLogin: true,
externalToken: "",
zat: zatToken,
zrt: zrtToken,
player: Player(
idpId: account.idpId,
appId: account.appId,
playerId: String(try account.requireID()),
pushOption: PushOptionResponse(night: "n", player: "n"),
regTime: Int(account.regDate.timeIntervalSince1970),
idpAlias: idpAlias,
firstLoginTime: Int(account.firstLogin.timeIntervalSince1970),
status: account.status
)
)
return try await res.encodeResponse(for: req)
}
}
@@ -134,11 +163,8 @@ struct LoginDeviceRes: Content {
struct Player: Content {
let idpId: String
let appId: String
let lang: String
let playerId: String
let agreement: AgreementResponse
let pushOption: PushOptionResponse
let lastLoginTime: Int
let regTime: Int
let idpAlias: String
let firstLoginTime: Int