redirect("/me/manage")
}
+ get("/clear-expired/{id}") {
+ val id = Id<UserSession>(call.parameters.getOrFail("id"))
+ call.getUserSession()?.let { sess ->
+ launch {
+ val now = Instant.now()
+ UserSession.remove(and(UserSession::id eq id, UserSession::user eq sess.user, UserSession::expiration lte now))
+ }
+ }
+
+ redirect("/me/manage")
+ }
+
+ get("/clear-all-expired/") {
+ call.getUserSession()?.let { sess ->
+ launch {
+ val now = Instant.now()
+ UserSession.remove(and(UserSession::user eq sess.user, UserSession::expiration lte now))
+ }
+ }
+
+ redirect("/me/manage")
+ }
+
currentProvider.installRouting(this)
}
}
// Random name generation
get("/generate-name/{flavor}/{gender}") {
- val flavor = call.parameters["flavor"]?.let { flavor -> AdmiralNameFlavor.values().singleOrNull { it.toUrlSlug() == flavor.lowercase() } }!!
+ val flavor = call.parameters["flavor"]?.let { flavor -> AdmiralNameFlavor.values().singleOrNull { it.toUrlSlug().equals(flavor, ignoreCase = true) } }!!
val isFemale = call.parameters["gender"]?.startsWith('f', ignoreCase = true) ?: false
call.respondText(AdmiralNames.randomName(flavor, isFemale), ContentType.Text.Plain)
}
}
section {
- h2 { +"Other Sessions" }
+ h2 { +"Logged-In Sessions" }
table {
tr {
th { +"User-Agent" }
style = "display:none"
+session.expiration.toEpochMilli().toString()
}
+ br
+ a(href = "/clear-expired/${session.id}") { +"Clear" }
}
}
}
+ tr {
+ td {
+ colSpan = "3"
+ a(href = "/clear-all-expired") { +"Clear All Expired Sessions" }
+ }
+ }
}
}
}