src/main/kotlin/de/uapcore/lightpit/servlet/UsersServlet.kt

changeset 209
c9c6abf167c7
parent 184
e8eecee6aadf
child 210
37fbdcb422b7
     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

mercurial