Skip to content

Commit 6706f01

Browse files
author
Aidan Laing
committed
Token Expiry Time and Refresh Time Fix
Expires at and refresh expires at are now set outside of the Token object
1 parent 513f1e7 commit 6706f01

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

mobileauthentication/src/main/java/ca/bc/gov/mobileauthentication/data/models/Token.kt

+6-6
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,18 @@ data class Token(
1515
@SerializedName("id_token") val idToken: String?,
1616
@SerializedName("not-before-policy") val notBeforePolicy: Long?,
1717
@SerializedName("session_state") val sessionState: String?,
18-
@SerializedName("expires_at") val expiresAt: Long? = System.currentTimeMillis() + ((expiresIn ?: 0) * 1000),
19-
@SerializedName("refresh_expires_at") val refreshExpiresAt: Long? = System.currentTimeMillis() + ((refreshExpiresIn ?: 0) * 1000)
18+
@SerializedName("expires_at") var expiresAt: Long?,
19+
@SerializedName("refresh_expires_at") var refreshExpiresAt: Long?
2020
) {
2121

2222
fun isExpired(currentTime: Long = System.currentTimeMillis()): Boolean {
23-
if (expiresAt == null) return true
24-
return expiresAt > currentTime
23+
val currExpiresAt = expiresAt ?: return true
24+
return currExpiresAt > currentTime
2525
}
2626

2727
fun isRefreshExpired(currentTime: Long = System.currentTimeMillis()): Boolean {
28-
if (refreshExpiresAt == null) return true
29-
return refreshExpiresAt > currentTime
28+
val currRefreshExpiresAt = refreshExpiresAt ?: return true
29+
return currRefreshExpiresAt > currentTime
3030
}
3131

3232
}

mobileauthentication/src/main/java/ca/bc/gov/mobileauthentication/data/repos/token/TokenRemoteDataSource.kt

+10
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ private constructor(
4343
override fun getToken(code: String?): Observable<Token> {
4444
if (code == null) return Observable.error(NoCodeException())
4545
return authApi.getToken(realmName, grantType, redirectUri, clientId, code)
46+
.map { token ->
47+
token.expiresAt = System.currentTimeMillis() + ((token.expiresIn ?: 0) * 1000)
48+
token.refreshExpiresAt = System.currentTimeMillis() + ((token.refreshExpiresIn ?: 0) * 1000)
49+
token
50+
}
4651
}
4752

4853
/**
@@ -59,6 +64,11 @@ private constructor(
5964
override fun refreshToken(token: Token): Observable<Token> {
6065
val refreshToken = token.refreshToken ?: return Observable.error(NoRefreshTokenException())
6166
return authApi.refreshToken(realmName, redirectUri, clientId, refreshToken)
67+
.map { refreshedToken ->
68+
refreshedToken.expiresAt = System.currentTimeMillis() + ((refreshedToken.expiresIn ?: 0) * 1000)
69+
refreshedToken.refreshExpiresAt = System.currentTimeMillis() + ((refreshedToken.refreshExpiresIn ?: 0) * 1000)
70+
refreshedToken
71+
}
6272
}
6373
/**
6474
* Invalid operation for remote data source

0 commit comments

Comments
 (0)