Skip to content

Commit 2201fa0

Browse files
committed
chore(authorization): deduplicate constant strings
1 parent a6bf536 commit 2201fa0

File tree

6 files changed

+22
-13
lines changed

6 files changed

+22
-13
lines changed

authorization/src/main/kotlin/org/modelix/authorization/AuthorizationPlugin.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ object ModelixAuthorization : BaseRouteScopedPlugin<IModelixAuthorizationConfig,
6666
val token = JWT.create()
6767
.withIssuer("modelix")
6868
.withAudience("modelix")
69-
.withClaim("email", "[email protected]")
69+
.withClaim(KeycloakTokenConstants.EMAIL, "[email protected]")
7070
.sign(Algorithm.HMAC256("unit-tests"))
7171
// The signing algorithm and key isn't relevant because the token is already considered valid
7272
// and the signature is never checked.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.modelix.authorization
2+
3+
object KeycloakTokenConstants {
4+
val EMAIL = "email"
5+
val PREFERRED_USERNAME = "preferred_username"
6+
val REALM_ACCESS = "realm_access"
7+
val REALM_ACCESS_ROLES = "roles"
8+
}

authorization/src/main/kotlin/org/modelix/authorization/KtorAuthUtils.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,6 @@ fun createModelixAccessToken(hmac512key: String, user: String, grantedPermission
6161
}
6262
}
6363

64-
private fun Map<String, Any>?.readRolesArray(): List<String> {
65-
return this?.get("roles") as? List<String> ?: emptyList()
66-
}
67-
6864
fun ApplicationCall.getBearerToken(): String? {
6965
val authHeader = request.parseAuthorizationHeader()
7066
if (authHeader == null || authHeader.authScheme != AuthScheme.Bearer) return null

authorization/src/main/kotlin/org/modelix/authorization/ModelixJWTUtil.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,8 @@ class ModelixJWTUtil {
144144
}
145145

146146
val payload = JWTClaimsSet.Builder()
147-
.claim("preferred_username", user)
148-
.claim("permissions", grantedPermissions)
147+
.claim(KeycloakTokenConstants.PREFERRED_USERNAME, user)
148+
.claim(ModelixTokenConstants.PERMISSIONS, grantedPermissions)
149149
.expirationTime(Date(Instant.now().plus(12, ChronoUnit.HOURS).toEpochMilli()))
150150
.also { additionalTokenContent(TokenBuilder(it)) }
151151
.build()
@@ -171,7 +171,7 @@ class ModelixJWTUtil {
171171
}
172172

173173
fun extractPermissions(token: DecodedJWT): List<String>? {
174-
return token.claims["permissions"]?.asList(String::class.java)
174+
return token.claims[ModelixTokenConstants.PERMISSIONS]?.asList(String::class.java)
175175
}
176176

177177
fun loadGrantedPermissions(token: DecodedJWT, evaluator: PermissionEvaluator) {
@@ -197,14 +197,14 @@ class ModelixJWTUtil {
197197
}
198198

199199
fun extractUserId(jwt: DecodedJWT): String? {
200-
return jwt.getClaim("email")?.asString()
201-
?: jwt.getClaim("preferred_username")?.asString()
200+
return jwt.getClaim(KeycloakTokenConstants.EMAIL)?.asString()
201+
?: jwt.getClaim(KeycloakTokenConstants.PREFERRED_USERNAME)?.asString()
202202
}
203203

204204
fun extractUserRoles(jwt: DecodedJWT): List<String> {
205205
val keycloakRoles = jwt
206-
.getClaim("realm_access")?.asMap()
207-
?.get("roles")
206+
.getClaim(KeycloakTokenConstants.REALM_ACCESS)?.asMap()
207+
?.get(KeycloakTokenConstants.REALM_ACCESS_ROLES)
208208
?.let { it as? List<*> }
209209
?.mapNotNull { it as? String }
210210
?: emptyList()
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package org.modelix.authorization
2+
3+
object ModelixTokenConstants {
4+
val PERMISSIONS = "permissions"
5+
}

authorization/src/test/kotlin/org/modelix/authorization/AccessControlDataTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class AccessControlDataTest {
2626
@Test
2727
fun `can grant permissions to identity tokens`() {
2828
val token = JWT.create()
29-
.withClaim("email", email)
29+
.withClaim(KeycloakTokenConstants.EMAIL, email)
3030
.sign(Algorithm.HMAC256("unit-tests"))
3131
.let { JWT.decode(it) }
3232
val data = AccessControlData().withGrantToUser(email, PermissionParts("r1", "write").fullId)

0 commit comments

Comments
 (0)