From: Lanius Trolling Date: Thu, 2 Mar 2023 16:10:34 +0000 (-0500) Subject: Extract authorization code X-Git-Url: https://gitweb.starshipfights.net/?a=commitdiff_plain;h=1f9562d79cb985dd582d8f25f36eb902a8dc20ed;p=factbooks Extract authorization code --- diff --git a/src/main/kotlin/info/mechyrdia/data/nations.kt b/src/main/kotlin/info/mechyrdia/data/nations.kt index ef28bdf..2882a14 100644 --- a/src/main/kotlin/info/mechyrdia/data/nations.kt +++ b/src/main/kotlin/info/mechyrdia/data/nations.kt @@ -1,6 +1,7 @@ package info.mechyrdia.data import com.github.agadar.nationstates.shard.NationShard +import info.mechyrdia.OwnerNationId import info.mechyrdia.application import info.mechyrdia.auth.NSAPI import info.mechyrdia.auth.UserSession @@ -10,6 +11,7 @@ import io.ktor.server.sessions.* import io.ktor.util.* import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import java.lang.NullPointerException @Serializable data class NationData( @@ -60,6 +62,11 @@ suspend fun MutableMap, NationData>.getNation(id: Id) private val callCurrentNationAttribute = AttributeKey("CurrentNation") +fun ApplicationCall.ownerNationOnly() { + if (sessions.get()?.nationId != OwnerNationId) + throw NullPointerException("Hidden page") +} + suspend fun ApplicationCall.currentNation(): NationData? { attributes.getOrNull(callCurrentNationAttribute)?.let { sess -> return when (sess) { diff --git a/src/main/kotlin/info/mechyrdia/data/views_user.kt b/src/main/kotlin/info/mechyrdia/data/views_user.kt index beaf1f9..f22b512 100644 --- a/src/main/kotlin/info/mechyrdia/data/views_user.kt +++ b/src/main/kotlin/info/mechyrdia/data/views_user.kt @@ -50,10 +50,7 @@ suspend fun ApplicationCall.userPage(): HTML.() -> Unit { } suspend fun ApplicationCall.adminBanUserRoute(): Nothing { - val currNation = currentNation() - if (currNation?.id != OwnerNationId) - throw NullPointerException() - + ownerNationOnly() verifyCsrfToken() val bannedNation = nationCache.getNation(Id(parameters["id"]!!)) @@ -65,10 +62,7 @@ suspend fun ApplicationCall.adminBanUserRoute(): Nothing { } suspend fun ApplicationCall.adminUnbanUserRoute(): Nothing { - val currNation = currentNation() - if (currNation?.id != OwnerNationId) - throw NullPointerException() - + ownerNationOnly() verifyCsrfToken() val bannedNation = nationCache.getNation(Id(parameters["id"]!!))