]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/DefaultSecurityService.java
Improve security
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.core / src / main / java / org / argeo / security / core / DefaultSecurityService.java
index 5959704108c27627a8725a1c7d550a327d6092d2..ef64337ebed1d99762cf642a0c496a8892447980 100644 (file)
@@ -1,5 +1,6 @@
 package org.argeo.security.core;
 
+import org.argeo.ArgeoException;
 import org.argeo.security.ArgeoSecurity;
 import org.argeo.security.ArgeoSecurityDao;
 import org.argeo.security.ArgeoSecurityService;
@@ -19,16 +20,34 @@ public class DefaultSecurityService implements ArgeoSecurityService {
        }
 
        public void updateUserPassword(String username, String password) {
-               SimpleArgeoUser user = new SimpleArgeoUser(securityDao.getUser(username));
+               SimpleArgeoUser user = new SimpleArgeoUser(securityDao
+                               .getUser(username));
                user.setPassword(password);
                securityDao.update(user);
        }
 
+       public void updateCurrentUserPassword(String oldPassword, String newPassword) {
+               SimpleArgeoUser user = new SimpleArgeoUser(securityDao.getCurrentUser());
+               if (!user.getPassword().equals(oldPassword))
+                       throw new ArgeoException("Old password is not correct.");
+               user.setPassword(newPassword);
+               securityDao.update(user);
+       }
+
        public void newUser(ArgeoUser user) {
+               user.getUserNatures().clear();
                argeoSecurity.beforeCreate(user);
                securityDao.create(user);
        }
 
+       public void updateUser(ArgeoUser user) {
+               String password = securityDao.getUserWithPassword(user.getUsername())
+                               .getPassword();
+               SimpleArgeoUser simpleArgeoUser = new SimpleArgeoUser(user);
+               simpleArgeoUser.setPassword(password);
+               securityDao.update(simpleArgeoUser);
+       }
+
        public void setArgeoSecurity(ArgeoSecurity argeoSecurity) {
                this.argeoSecurity = argeoSecurity;
        }