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
import io.ktor.util.*
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
+import java.lang.NullPointerException
@Serializable
data class NationData(
private val callCurrentNationAttribute = AttributeKey<NationSession>("CurrentNation")
+fun ApplicationCall.ownerNationOnly() {
+ if (sessions.get<UserSession>()?.nationId != OwnerNationId)
+ throw NullPointerException("Hidden page")
+}
+
suspend fun ApplicationCall.currentNation(): NationData? {
attributes.getOrNull(callCurrentNationAttribute)?.let { sess ->
return when (sess) {
}
suspend fun ApplicationCall.adminBanUserRoute(): Nothing {
- val currNation = currentNation()
- if (currNation?.id != OwnerNationId)
- throw NullPointerException()
-
+ ownerNationOnly()
verifyCsrfToken()
val bannedNation = nationCache.getNation(Id(parameters["id"]!!))
}
suspend fun ApplicationCall.adminUnbanUserRoute(): Nothing {
- val currNation = currentNation()
- if (currNation?.id != OwnerNationId)
- throw NullPointerException()
-
+ ownerNationOnly()
verifyCsrfToken()
val bannedNation = nationCache.getNation(Id(parameters["id"]!!))