]> 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 6be432547a4ab468cbd959f293b1661dc6279d21..ef64337ebed1d99762cf642a0c496a8892447980 100644 (file)
@@ -1,9 +1,11 @@
 package org.argeo.security.core;
 
+import org.argeo.ArgeoException;
 import org.argeo.security.ArgeoSecurity;
 import org.argeo.security.ArgeoSecurityDao;
 import org.argeo.security.ArgeoSecurityService;
 import org.argeo.security.ArgeoUser;
+import org.argeo.security.SimpleArgeoUser;
 
 public class DefaultSecurityService implements ArgeoSecurityService {
        private ArgeoSecurity argeoSecurity = new DefaultArgeoSecurity();
@@ -14,16 +16,38 @@ public class DefaultSecurityService implements ArgeoSecurityService {
        }
 
        public void newRole(String role) {
-               ArgeoUser superUser = securityDao.getUser(argeoSecurity.getSuperUsername());
-               superUser.getRoles().add(role);
-               securityDao.update(superUser);
+               securityDao.createRole(role, argeoSecurity.getSuperUsername());
+       }
+
+       public void updateUserPassword(String username, String password) {
+               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;
        }