Split account pages

This commit is contained in:
Lars Westermann 2019-06-08 14:56:47 +02:00
parent dce2567160
commit 17f81e8952
Signed by: lars.westermann
GPG key ID: 9D417FA5BB9D5E1D

View file

@ -2,18 +2,15 @@ package de.kif.backend.route
import de.kif.backend.authenticate import de.kif.backend.authenticate
import de.kif.backend.authenticateOrRedirect import de.kif.backend.authenticateOrRedirect
import de.kif.backend.util.Backup
import de.kif.backend.repository.TrackRepository import de.kif.backend.repository.TrackRepository
import de.kif.backend.repository.WorkGroupRepository import de.kif.backend.repository.WorkGroupRepository
import de.kif.backend.route.api.error import de.kif.backend.route.api.error
import de.kif.backend.util.Backup
import de.kif.backend.util.WikiImporter import de.kif.backend.util.WikiImporter
import de.kif.backend.view.MainTemplate
import de.kif.backend.view.MenuTemplate
import de.kif.backend.view.respondMain import de.kif.backend.view.respondMain
import de.kif.common.RepositoryType import de.kif.common.RepositoryType
import de.kif.common.model.Permission import de.kif.common.model.Permission
import io.ktor.application.call import io.ktor.application.call
import io.ktor.html.respondHtmlTemplate
import io.ktor.http.ContentType import io.ktor.http.ContentType
import io.ktor.http.HttpStatusCode import io.ktor.http.HttpStatusCode
import io.ktor.http.content.PartData import io.ktor.http.content.PartData
@ -35,10 +32,6 @@ private val logger = KotlinLogging.logger {}
fun Route.account() { fun Route.account() {
get("/account") { get("/account") {
authenticateOrRedirect { user -> authenticateOrRedirect { user ->
val tracks = TrackRepository.all()
val wikiSections = WikiImporter.loadSections()
respondMain { respondMain {
content { content {
h1 { +"Account" } h1 { +"Account" }
@ -54,6 +47,23 @@ fun Route.account() {
} }
} }
a(href = "/account/backup", classes = "form-btn") {
+"Backup"
}
a(href = "/account/import", classes = "form-btn") {
+"Import wiki"
}
}
}
}
}
get("/account/backup") {
authenticateOrRedirect { user ->
respondMain {
content {
h1 { +"Backup" }
div("account-backup") { div("account-backup") {
if (user.checkPermission(Permission.ROOM)) { if (user.checkPermission(Permission.ROOM)) {
a("/account/backup/rooms.json", classes = "form-btn") { a("/account/backup/rooms.json", classes = "form-btn") {
@ -99,9 +109,11 @@ fun Route.account() {
} }
if (user.checkPermission(Permission.ADMIN)) { if (user.checkPermission(Permission.ADMIN)) {
h1 { +"Restore" }
div("account-import") { div("account-import") {
form( form(
action = "/account/import", action = "/account/restore",
method = FormMethod.post, method = FormMethod.post,
encType = FormEncType.multipartFormData encType = FormEncType.multipartFormData
) { ) {
@ -146,12 +158,25 @@ fun Route.account() {
} }
} }
} }
}
}
}
}
get("/account/import") {
authenticateOrRedirect { user ->
val tracks = TrackRepository.all()
val wikiSections = WikiImporter.loadSections()
respondMain {
content {
h1 { +"Import wiki" }
if (user.checkPermission(Permission.ADMIN)) { if (user.checkPermission(Permission.ADMIN)) {
div("account-import-wiki") { div("account-import-wiki") {
span { +"Import work group data from the kif wiki" } span { +"Import work group data from the kif wiki" }
form(action = "/account/import-wiki", method = FormMethod.post) { form(action = "/account/import", method = FormMethod.post) {
for ((index, section) in wikiSections.withIndex()) { for ((index, section) in wikiSections.withIndex()) {
div("form-group") { div("form-group") {
label { label {
@ -277,7 +302,7 @@ fun Route.account() {
} }
} }
post("/account/import") { post("/account/restore") {
authenticate(Permission.ADMIN) { authenticate(Permission.ADMIN) {
var reset = false var reset = false
var import = "" var import = ""
@ -308,7 +333,7 @@ fun Route.account() {
} }
} }
post("/account/import-wiki") { post("/account/import") {
authenticate(Permission.ADMIN) { authenticate(Permission.ADMIN) {
val params = call.receiveParameters().toMap().mapValues { (_, list) -> val params = call.receiveParameters().toMap().mapValues { (_, list) ->
list.firstOrNull() list.firstOrNull()