diff -r 785820da6485 -r c9c6abf167c7 src/main/kotlin/de/uapcore/lightpit/servlet/UsersServlet.kt --- a/src/main/kotlin/de/uapcore/lightpit/servlet/UsersServlet.kt Tue Aug 03 12:22:10 2021 +0200 +++ b/src/main/kotlin/de/uapcore/lightpit/servlet/UsersServlet.kt Tue Aug 03 13:41:32 2021 +0200 @@ -25,12 +25,9 @@ package de.uapcore.lightpit.servlet -import de.uapcore.lightpit.AbstractServlet -import de.uapcore.lightpit.HttpRequest -import de.uapcore.lightpit.LoggingTrait +import de.uapcore.lightpit.* import de.uapcore.lightpit.dao.DataAccessObject import de.uapcore.lightpit.entities.User -import de.uapcore.lightpit.logger import de.uapcore.lightpit.viewmodel.UserEditView import de.uapcore.lightpit.viewmodel.UsersView import javax.servlet.annotation.WebServlet @@ -48,21 +45,21 @@ private val list = "users" private val form = "user-form" - fun index(http: HttpRequest, dao: DataAccessObject) { + private fun index(http: HttpRequest, dao: DataAccessObject) { with(http) { view = UsersView(dao.listUsers()) render(list) } } - fun create(http: HttpRequest, dao: DataAccessObject) { + private fun create(http: HttpRequest, dao: DataAccessObject) { with(http) { view = UserEditView(User(-1)) render(form) } } - fun edit(http: HttpRequest, dao: DataAccessObject) { + private fun edit(http: HttpRequest, dao: DataAccessObject) { val id = http.pathParams["userid"]?.toIntOrNull() if (id == null) { http.response.sendError(404) @@ -79,7 +76,7 @@ } } - fun commit(http: HttpRequest, dao: DataAccessObject) { + private fun commit(http: HttpRequest, dao: DataAccessObject) { val id = http.param("userid")?.toIntOrNull() if (id == null) { http.response.sendError(400) @@ -88,25 +85,32 @@ val user = User(id) with(user) { - username = http.param("username") ?: "" givenname = http.param("givenname") lastname = http.param("lastname") mail = http.param("mail") } - if (dao.findUserByName(user.username) != null) { - with(http) { - view = UserEditView(user).apply { errorText = "validation.username.unique" } + if (user.id > 0) { + logger().info("Update user with id ${user.id}.") + dao.updateUser(user) + http.renderCommit("users/") + } else { + val errorMessages = mutableListOf() + val username = http.param("username", { + if (it == null) ValidationError("validation.username.null") + else if (dao.findUserByName(it) != null) ValidationError("validation.username.unique") + else ValidatedValue(it) + }, errorMessages) + + if (username != null) { + logger().info("Insert user ${username}.") + user.username = username + dao.insertUser(user) + http.renderCommit("users/") + } else { + http.view = UserEditView(user).apply { this.errorMessages = errorMessages } + http.render(form) } } - - if (user.id > 0) { - logger().info("Update user ${user.username} with id ${user.id}.") - dao.updateUser(user) - } else { - logger().info("Insert user ${user.username}.") - dao.insertUser(user) - } - http.renderCommit("users/") } } \ No newline at end of file