X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=security%2Fruntime%2Forg.argeo.security.mvc%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fmvc%2FUsersRolesController.java;h=4f9c723fb150474b827dafff097e4d233aa2a5bc;hb=092b922842a99f6e6330305d579c119e20ceb03b;hp=ce6054645a084af0d875335c075972532230132a;hpb=f3ff1f46c8a04c4a60bbccd44e16d5880b386229;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 ce6054645..4f9c723fb 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,145 +1,160 @@ 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.ArgeoSecurityService; 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.security.SimpleArgeoUser; import org.argeo.server.BooleanAnswer; -import org.argeo.server.DeserializingEditor; +import org.argeo.server.Deserializer; 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 final static Log log = LogFactory + // .getLog(UsersRolesController.class); - private UserDao userDao; - private RoleDao roleDao; + private ArgeoSecurityService securityService; - private ServerDeserializer userDeserializer = null; - - @InitBinder - public void initBinder(WebDataBinder binder) { - binder.registerCustomEditor(BasicArgeoUser.class, - new DeserializingEditor(userDeserializer)); - } + private Deserializer userDeserializer = null; /* USER */ - @RequestMapping("/getCredentials.security") + @RequestMapping("/getCredentials.ria") @ModelAttribute(ANSWER_MODEL_KEY) public ArgeoUser getCredentials() { - Authentication authentication = SecurityContextHolder.getContext() - .getAuthentication(); - return ArgeoUserDetails.asArgeoUser(authentication); + ArgeoUser argeoUser = securityService.getSecurityDao().getCurrentUser(); + if (argeoUser == null) + return new SimpleArgeoUser(); + else + return argeoUser; } + // @RequestMapping("/login.security") + // @ModelAttribute(ANSWER_MODEL_KEY) + // public ArgeoUser login(@RequestParam("username") String username, + // @RequestParam("password") String password) { + // //SecurityContextHolder.getContext().getAuthentication(). + // return securityService.getSecurityDao().getCurrentUser(); + // } + // + // @RequestMapping("/logout.security") + // @ModelAttribute(ANSWER_MODEL_KEY) + // public ServerAnswer logout() { + // return ServerAnswer.ok("Logged out"); + // } + @RequestMapping("/getUsersList.security") @ModelAttribute(ANSWER_MODEL_KEY) public List getUsersList() { - return userDao.listUsers(); + return securityService.getSecurityDao().listUsers(); } @RequestMapping("/userExists.security") @ModelAttribute(ANSWER_MODEL_KEY) public BooleanAnswer userExists(@RequestParam("username") String username) { - return new BooleanAnswer(userDao.userExists(username)); + return new BooleanAnswer(securityService.getSecurityDao().userExists( + username)); } @RequestMapping("/createUser.security") @ModelAttribute(ANSWER_MODEL_KEY) public ArgeoUser createUser(Reader reader) { - ArgeoUser user = (ArgeoUser) userDeserializer.deserialize(reader); - userDao.create(user); - return userDao.getUser(user.getUsername()); + ArgeoUser user = userDeserializer.deserialize(reader, ArgeoUser.class); + // cleanUserBeforeCreate(user); + securityService.newUser(user); + return securityService.getSecurityDao().getUser(user.getUsername()); } @RequestMapping("/updateUser.security") @ModelAttribute(ANSWER_MODEL_KEY) public ArgeoUser updateUser(Reader reader) { - ArgeoUser user = (ArgeoUser) userDeserializer.deserialize(reader); - userDao.update(user); - return userDao.getUser(user.getUsername()); + ArgeoUser user = userDeserializer.deserialize(reader, ArgeoUser.class); + securityService.updateUser(user); + return securityService.getSecurityDao().getUser(user.getUsername()); } - @RequestMapping("/createUser2.security") - @ModelAttribute(ANSWER_MODEL_KEY) - public ArgeoUser 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 userDao.getUser(user.getUsername()); - } + /* + * @RequestMapping("/createUser2.security") + * + * @ModelAttribute(ANSWER_MODEL_KEY) public ArgeoUser + * 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); } cleanUserBeforeCreate(user); + * securityService.newUser(user); return + * securityService.getSecurityDao().getUser(user.getUsername()); } + */ @RequestMapping("/deleteUser.security") @ModelAttribute(ANSWER_MODEL_KEY) public ServerAnswer deleteUser(@RequestParam("username") String username) { - userDao.delete(username); + securityService.getSecurityDao().delete(username); return ServerAnswer.ok("User " + username + " deleted"); } @RequestMapping("/getUserDetails.security") @ModelAttribute(ANSWER_MODEL_KEY) public ArgeoUser getUserDetails(@RequestParam("username") String username) { - return userDao.getUser(username); + return securityService.getSecurityDao().getUser(username); } /* ROLE */ @RequestMapping("/getRolesList.security") @ModelAttribute(ANSWER_MODEL_KEY) public List getEditableRolesList() { - return roleDao.listEditableRoles(); + return securityService.getSecurityDao().listEditableRoles(); } @RequestMapping("/createRole.security") @ModelAttribute(ANSWER_MODEL_KEY) public ServerAnswer createRole(@RequestParam("role") String role) { - roleDao.create(role); + securityService.newRole(role); return ServerAnswer.ok("Role " + role + " created"); } @RequestMapping("/deleteRole.security") @ModelAttribute(ANSWER_MODEL_KEY) public ServerAnswer deleteRole(@RequestParam("role") String role) { - roleDao.delete(role); - return ServerAnswer.ok("Role " + role + " created"); + securityService.getSecurityDao().deleteRole(role); + return ServerAnswer.ok("Role " + role + " deleted"); } - public void setUserDao(UserDao userDao) { - this.userDao = userDao; + @RequestMapping("/updateUserPassword.security") + @ModelAttribute(ANSWER_MODEL_KEY) + public ServerAnswer updateUserPassword( + @RequestParam("username") String username, + @RequestParam("password") String password) { + securityService.updateUserPassword(username, password); + return ServerAnswer.ok("Password updated for user " + username); } - public void setRoleDao(RoleDao roleDao) { - this.roleDao = roleDao; + @RequestMapping("/updatePassword.security") + @ModelAttribute(ANSWER_MODEL_KEY) + public ServerAnswer updatePassword( + @RequestParam("password") String password, + @RequestParam("oldPassword") String oldPassword) { + securityService.getSecurityDao().updatePassword(oldPassword, password); + return ServerAnswer.ok("Password updated"); } - public void setUserDeserializer(ServerDeserializer userDeserializer) { + // protected void cleanUserBeforeCreate(ArgeoUser user) { + // user.getUserNatures().clear(); + // } + + public void setUserDeserializer(Deserializer userDeserializer) { this.userDeserializer = userDeserializer; } + public void setSecurityService(ArgeoSecurityService securityService) { + this.securityService = securityService; + } + }