1.1 --- a/src/main/kotlin/de/uapcore/lightpit/servlet/UsersServlet.kt Tue Aug 03 12:22:10 2021 +0200 1.2 +++ b/src/main/kotlin/de/uapcore/lightpit/servlet/UsersServlet.kt Tue Aug 03 13:41:32 2021 +0200 1.3 @@ -25,12 +25,9 @@ 1.4 1.5 package de.uapcore.lightpit.servlet 1.6 1.7 -import de.uapcore.lightpit.AbstractServlet 1.8 -import de.uapcore.lightpit.HttpRequest 1.9 -import de.uapcore.lightpit.LoggingTrait 1.10 +import de.uapcore.lightpit.* 1.11 import de.uapcore.lightpit.dao.DataAccessObject 1.12 import de.uapcore.lightpit.entities.User 1.13 -import de.uapcore.lightpit.logger 1.14 import de.uapcore.lightpit.viewmodel.UserEditView 1.15 import de.uapcore.lightpit.viewmodel.UsersView 1.16 import javax.servlet.annotation.WebServlet 1.17 @@ -48,21 +45,21 @@ 1.18 private val list = "users" 1.19 private val form = "user-form" 1.20 1.21 - fun index(http: HttpRequest, dao: DataAccessObject) { 1.22 + private fun index(http: HttpRequest, dao: DataAccessObject) { 1.23 with(http) { 1.24 view = UsersView(dao.listUsers()) 1.25 render(list) 1.26 } 1.27 } 1.28 1.29 - fun create(http: HttpRequest, dao: DataAccessObject) { 1.30 + private fun create(http: HttpRequest, dao: DataAccessObject) { 1.31 with(http) { 1.32 view = UserEditView(User(-1)) 1.33 render(form) 1.34 } 1.35 } 1.36 1.37 - fun edit(http: HttpRequest, dao: DataAccessObject) { 1.38 + private fun edit(http: HttpRequest, dao: DataAccessObject) { 1.39 val id = http.pathParams["userid"]?.toIntOrNull() 1.40 if (id == null) { 1.41 http.response.sendError(404) 1.42 @@ -79,7 +76,7 @@ 1.43 } 1.44 } 1.45 1.46 - fun commit(http: HttpRequest, dao: DataAccessObject) { 1.47 + private fun commit(http: HttpRequest, dao: DataAccessObject) { 1.48 val id = http.param("userid")?.toIntOrNull() 1.49 if (id == null) { 1.50 http.response.sendError(400) 1.51 @@ -88,25 +85,32 @@ 1.52 1.53 val user = User(id) 1.54 with(user) { 1.55 - username = http.param("username") ?: "" 1.56 givenname = http.param("givenname") 1.57 lastname = http.param("lastname") 1.58 mail = http.param("mail") 1.59 } 1.60 1.61 - if (dao.findUserByName(user.username) != null) { 1.62 - with(http) { 1.63 - view = UserEditView(user).apply { errorText = "validation.username.unique" } 1.64 + if (user.id > 0) { 1.65 + logger().info("Update user with id ${user.id}.") 1.66 + dao.updateUser(user) 1.67 + http.renderCommit("users/") 1.68 + } else { 1.69 + val errorMessages = mutableListOf<String>() 1.70 + val username = http.param("username", { 1.71 + if (it == null) ValidationError("validation.username.null") 1.72 + else if (dao.findUserByName(it) != null) ValidationError("validation.username.unique") 1.73 + else ValidatedValue(it) 1.74 + }, errorMessages) 1.75 + 1.76 + if (username != null) { 1.77 + logger().info("Insert user ${username}.") 1.78 + user.username = username 1.79 + dao.insertUser(user) 1.80 + http.renderCommit("users/") 1.81 + } else { 1.82 + http.view = UserEditView(user).apply { this.errorMessages = errorMessages } 1.83 + http.render(form) 1.84 } 1.85 } 1.86 - 1.87 - if (user.id > 0) { 1.88 - logger().info("Update user ${user.username} with id ${user.id}.") 1.89 - dao.updateUser(user) 1.90 - } else { 1.91 - logger().info("Insert user ${user.username}.") 1.92 - dao.insertUser(user) 1.93 - } 1.94 - http.renderCommit("users/") 1.95 } 1.96 } 1.97 \ No newline at end of file