TF-2384 Handle refresh token when token expired in NSE

Signed-off-by: dab246 <tdvu@linagora.com>
(cherry picked from commit c8a39bb42792770c001ac90d6301d53126225d95)
This commit is contained in:
dab246
2023-12-24 21:45:42 +07:00
committed by Dat H. Pham
parent 5bf1b97de3
commit b1b2bb90a5
19 changed files with 416 additions and 37 deletions
@@ -0,0 +1,7 @@
import Foundation
protocol Authentication {
var type: AuthenticationType { get }
func getAuthenticationHeader() -> String
}
@@ -0,0 +1,16 @@
import Foundation
struct AuthenticationCredential: Authentication {
var type: AuthenticationType
let basicAuth: String
init(type: AuthenticationType, basicAuth: String) {
self.type = type
self.basicAuth = basicAuth
}
func getAuthenticationHeader() -> String {
return "Basic \(basicAuth)"
}
}
@@ -0,0 +1,33 @@
import Foundation
struct AuthenticationSSO: Authentication {
var type: AuthenticationType
let accessToken: String
let refreshToken: String
let expireTime: String?
init(type: AuthenticationType, accessToken: String, refreshToken: String, expireTime: String?) {
self.type = type
self.accessToken = accessToken
self.refreshToken = refreshToken
self.expireTime = expireTime
}
func getAuthenticationHeader() -> String {
return "Bearer \(accessToken)"
}
func isExpiredTime() -> Bool {
guard let expireTime else {
return false
}
guard let expireDate = expireTime.convertISO8601StringToDate(),
expireDate.isBefore(Date.now) else {
return true
}
return false
}
}
+1 -7
View File
@@ -2,13 +2,7 @@ import Foundation
struct TokenOidc: Codable {
let token: String
let tokenId: String
let tokenId: String?
let expiredTime: String?
let refreshToken: String
}
extension TokenOidc {
func getAuthorization() -> String {
return "Bearer \(token)"
}
}
@@ -0,0 +1,25 @@
import Foundation
struct TokenResponse: Codable {
let accessToken: String?
let refreshToken: String?
let expiresTime: Int?
let refreshExpiresIn: Int?
let tokenId: String?
let tokenType: String?
let scope: String?
let sessionState: String?
let error: String?
enum CodingKeys: String, CodingKey {
case accessToken = "access_token"
case refreshToken = "refresh_token"
case expiresTime = "expires_in"
case refreshExpiresIn = "refresh_expires_in"
case tokenId = "id_token"
case tokenType = "token_type"
case scope
case sessionState = "session_state"
case error
}
}