From dcb490ae31a4a5f9dbc91a6fbd96fa522b2430e8 Mon Sep 17 00:00:00 2001 From: Infendro Date: Sun, 17 Aug 2025 09:52:46 +0200 Subject: [PATCH] small refactor --- backend/.gitignore | 1 + .../src/main/kotlin/com/infendro/account/Application.kt | 6 +++--- .../src/main/kotlin/com/infendro/account/model/Role.kt | 6 ------ .../com/infendro/account/service/AccountService.kt | 9 ++++----- .../kotlin/com/infendro/account/util/SecureHasher.kt | 3 +-- .../kotlin/com/infendro/account/util/TokenGenerator.kt | 5 ++--- 6 files changed, 11 insertions(+), 19 deletions(-) diff --git a/backend/.gitignore b/backend/.gitignore index 8575b21..769753d 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -6,4 +6,5 @@ /gradle.properties # Kotlin +/.kotlin/ /build/ diff --git a/backend/src/main/kotlin/com/infendro/account/Application.kt b/backend/src/main/kotlin/com/infendro/account/Application.kt index ba06ad3..8be6978 100644 --- a/backend/src/main/kotlin/com/infendro/account/Application.kt +++ b/backend/src/main/kotlin/com/infendro/account/Application.kt @@ -13,10 +13,10 @@ fun Application.module() { configureDatabase() - configureSecurity() - configureRouting() - configureSerialization() configureValidation() configureException() + + configureSecurity() + configureRouting() } diff --git a/backend/src/main/kotlin/com/infendro/account/model/Role.kt b/backend/src/main/kotlin/com/infendro/account/model/Role.kt index 67041b8..e14191a 100644 --- a/backend/src/main/kotlin/com/infendro/account/model/Role.kt +++ b/backend/src/main/kotlin/com/infendro/account/model/Role.kt @@ -8,12 +8,6 @@ enum class Role( children = listOf(USER), ); - fun hasChild( - role: Role, - ): Boolean { - return children.contains(role) - } - companion object { val ALL = entries.toList() } diff --git a/backend/src/main/kotlin/com/infendro/account/service/AccountService.kt b/backend/src/main/kotlin/com/infendro/account/service/AccountService.kt index 441fa3f..11f3677 100644 --- a/backend/src/main/kotlin/com/infendro/account/service/AccountService.kt +++ b/backend/src/main/kotlin/com/infendro/account/service/AccountService.kt @@ -26,8 +26,7 @@ import com.infendro.account.model.repository.SessionRepository import com.infendro.account.util.Hasher import com.infendro.account.util.OTP import com.infendro.account.util.SecureHasher -import io.ktor.server.sessions.CurrentSession -import io.ktor.server.sessions.clear +import io.ktor.server.sessions.* import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq class AccountService( @@ -161,7 +160,7 @@ class AccountService( .singleOrNull { AccountTable.id eq id } ?: throw NotFoundException() - if (!principal.role.hasChild(account.role)) + if (account.role !in principal.role.children) throw ForbiddenException() accountRepository.delete(account) @@ -176,10 +175,10 @@ class AccountService( .singleOrNull { AccountTable.id eq id } ?: throw NotFoundException() - if (!principal.role.hasChild(account.role)) + if (account.role !in principal.role.children) throw ForbiddenException() - if (!principal.role.hasChild(request.role)) + if (request.role !in principal.role.children) throw ForbiddenException() accountRepository.update(account) { diff --git a/backend/src/main/kotlin/com/infendro/account/util/SecureHasher.kt b/backend/src/main/kotlin/com/infendro/account/util/SecureHasher.kt index 0e68216..3dc79b5 100644 --- a/backend/src/main/kotlin/com/infendro/account/util/SecureHasher.kt +++ b/backend/src/main/kotlin/com/infendro/account/util/SecureHasher.kt @@ -20,8 +20,7 @@ object SecureHasher { } fun generateSalt(): String { - return ByteArray(16) - .also { random.nextBytes(it) } + return random.nextBytes(16) .let { Hex.encode(it).decodeToString() } } } diff --git a/backend/src/main/kotlin/com/infendro/account/util/TokenGenerator.kt b/backend/src/main/kotlin/com/infendro/account/util/TokenGenerator.kt index e0f6008..24560a2 100644 --- a/backend/src/main/kotlin/com/infendro/account/util/TokenGenerator.kt +++ b/backend/src/main/kotlin/com/infendro/account/util/TokenGenerator.kt @@ -7,8 +7,7 @@ object TokenGenerator { private val random = PRNG.HMAC fun generate(): String { - val bytes = ByteArray(32) - .also { random.nextBytes(it) } - return Hex.encode(bytes).toString() + return random.nextBytes(32) + .let { Hex.encode(it).decodeToString() } } }