X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=security%2Fruntime%2Forg.argeo.security.mvc%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fmvc%2FUsersRolesController.java;h=c95d909841ced8b24d83a6828c3efe949303a317;hb=00ae7654c948e62c35ef88e7d8d528965d5e0371;hp=4b91075cee17e1d23fb3437ae60730cd944db0ff;hpb=727a852dcd2a6e80b11ae71ca37f50d202baae5c;p=lgpl%2Fargeo-commons.git diff --git a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/mvc/UsersRolesController.java b/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/mvc/UsersRolesController.java index 4b91075ce..c95d90984 100644 --- a/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/mvc/UsersRolesController.java +++ b/security/runtime/org.argeo.security.mvc/src/main/java/org/argeo/security/mvc/UsersRolesController.java @@ -1,26 +1,47 @@ package org.argeo.security.mvc; +import java.io.Reader; +import java.io.StringReader; import java.util.List; +import org.apache.commons.io.IOUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.argeo.security.ArgeoUser; +import org.argeo.security.BasicArgeoUser; import org.argeo.security.core.ArgeoUserDetails; import org.argeo.security.dao.RoleDao; import org.argeo.security.dao.UserDao; import org.argeo.server.BooleanAnswer; +import org.argeo.server.DeserializingEditor; import org.argeo.server.ServerAnswer; +import org.argeo.server.ServerDeserializer; import org.argeo.server.mvc.MvcConstants; import org.springframework.security.Authentication; import org.springframework.security.context.SecurityContextHolder; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class UsersRolesController implements MvcConstants { + private final static Log log = LogFactory + .getLog(UsersRolesController.class); + private UserDao userDao; private RoleDao roleDao; + private ServerDeserializer userDeserializer = null; + + @InitBinder + public void initBinder(WebDataBinder binder) { + binder.registerCustomEditor(BasicArgeoUser.class, + new DeserializingEditor(userDeserializer)); + } + /* USER */ @RequestMapping("/getCredentials.security") @@ -43,6 +64,38 @@ public class UsersRolesController implements MvcConstants { return new BooleanAnswer(userDao.userExists(username)); } + @RequestMapping("/createUser.security") + @ModelAttribute(ANSWER_MODEL_KEY) + public ServerAnswer createUser(Reader reader) { + ArgeoUser user = (ArgeoUser) userDeserializer.deserialize(reader); + userDao.create(user); + return ServerAnswer.ok("User " + user.getUsername() + " created"); + } + + @RequestMapping("/updateUser.security") + @ModelAttribute(ANSWER_MODEL_KEY) + public ServerAnswer updateUser(Reader reader) { + ArgeoUser user = (ArgeoUser) userDeserializer.deserialize(reader); + userDao.update(user); + return ServerAnswer.ok("User " + user.getUsername() + " updated"); + } + + @RequestMapping("/createUser2.security") + @ModelAttribute(ANSWER_MODEL_KEY) + public ServerAnswer createUser(@RequestParam("body") String body) { + if (log.isDebugEnabled()) + log.debug("body:\n" + body); + StringReader reader = new StringReader(body); + ArgeoUser user = null; + try { + user = (ArgeoUser) userDeserializer.deserialize(reader); + } finally { + IOUtils.closeQuietly(reader); + } + userDao.create(user); + return ServerAnswer.ok("User " + user.getUsername() + " created"); + } + @RequestMapping("/deleteUser.security") @ModelAttribute(ANSWER_MODEL_KEY) public ServerAnswer deleteUser(@RequestParam("username") String username) { @@ -85,4 +138,8 @@ public class UsersRolesController implements MvcConstants { this.roleDao = roleDao; } + public void setUserDeserializer(ServerDeserializer userDeserializer) { + this.userDeserializer = userDeserializer; + } + }