]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/DefaultSecurityService.java
Change password dialog
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.core / src / main / java / org / argeo / security / core / DefaultSecurityService.java
index 28f399f5a240078f2d8ef4531926cab390380909..b9220b2692af7305657593944012b950cc96754c 100644 (file)
@@ -36,6 +36,15 @@ public class DefaultSecurityService implements ArgeoSecurityService {
 
        private String systemAuthenticationKey;
 
+       public ArgeoUser getCurrentUser() {
+               ArgeoUser argeoUser = ArgeoUserDetails.securityContextUser();
+               if (argeoUser == null)
+                       return null;
+               if (argeoUser.getRoles().contains(securityDao.getDefaultRole()))
+                       argeoUser.getRoles().remove(securityDao.getDefaultRole());
+               return argeoUser;
+       }
+
        public ArgeoSecurityDao getSecurityDao() {
                return securityDao;
        }
@@ -45,17 +54,17 @@ 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))
+               SimpleArgeoUser user = new SimpleArgeoUser(getCurrentUser());
+               if (!securityDao.isPasswordValid(user.getPassword(), oldPassword))
                        throw new ArgeoException("Old password is not correct.");
-               user.setPassword(newPassword);
+               user.setPassword(securityDao.encodePassword(newPassword));
                securityDao.update(user);
        }
 
@@ -122,5 +131,4 @@ public class DefaultSecurityService implements ArgeoSecurityService {
        public void setSystemAuthenticationKey(String systemAuthenticationKey) {
                this.systemAuthenticationKey = systemAuthenticationKey;
        }
-
 }