diff --git a/scm-backend-xml/src/main/java/sonia/scm/group/xml/XmlGroupManager.java b/scm-backend-xml/src/main/java/sonia/scm/group/xml/XmlGroupManager.java index e23e3ee514..d902b5f460 100644 --- a/scm-backend-xml/src/main/java/sonia/scm/group/xml/XmlGroupManager.java +++ b/scm-backend-xml/src/main/java/sonia/scm/group/xml/XmlGroupManager.java @@ -129,6 +129,13 @@ public class XmlGroupManager extends AbstractGroupManager @Override public void create(Group group) throws GroupException, IOException { + String type = group.getType(); + + if (Util.isEmpty(type)) + { + group.setType(groupDAO.getType()); + } + if (logger.isInfoEnabled()) { logger.info("create group {} of type {}", group.getName(), @@ -142,13 +149,6 @@ public class XmlGroupManager extends AbstractGroupManager throw new GroupAllreadyExistExeption(); } - String type = group.getType(); - - if (Util.isEmpty(type)) - { - group.setType(groupDAO.getType()); - } - group.setCreationDate(System.currentTimeMillis()); groupDAO.add(group); fireEvent(group, HandlerEvent.CREATE); diff --git a/scm-backend-xml/src/main/java/sonia/scm/user/xml/XmlUserManager.java b/scm-backend-xml/src/main/java/sonia/scm/user/xml/XmlUserManager.java index b33d8e5aa5..547075e288 100644 --- a/scm-backend-xml/src/main/java/sonia/scm/user/xml/XmlUserManager.java +++ b/scm-backend-xml/src/main/java/sonia/scm/user/xml/XmlUserManager.java @@ -160,6 +160,13 @@ public class XmlUserManager extends AbstractUserManager @Override public void create(User user) throws UserException, IOException { + String type = user.getType(); + + if (Util.isEmpty(type)) + { + user.setType(userDAO.getType()); + } + if (logger.isInfoEnabled()) { logger.info("create user {} of type {}", user.getName(), user.getType()); @@ -177,13 +184,6 @@ public class XmlUserManager extends AbstractUserManager throw new UserAllreadyExistException(user.getName()); } - String type = user.getType(); - - if (Util.isEmpty(type)) - { - user.setType(userDAO.getType()); - } - AssertUtil.assertIsValid(user); user.setCreationDate(System.currentTimeMillis()); userDAO.add(user); @@ -457,6 +457,18 @@ public class XmlUserManager extends AbstractUserManager return getAll(null, start, limit); } + /** + * Method description + * + * + * @return + */ + @Override + public String getDefaultType() + { + return userDAO.getType(); + } + /** * Method description * diff --git a/scm-core/src/main/java/sonia/scm/user/UserManager.java b/scm-core/src/main/java/sonia/scm/user/UserManager.java index 55d054729a..b1641ba571 100644 --- a/scm-core/src/main/java/sonia/scm/user/UserManager.java +++ b/scm-core/src/main/java/sonia/scm/user/UserManager.java @@ -40,7 +40,9 @@ import sonia.scm.Manager; import sonia.scm.search.Searchable; /** - * + * The central class for managing {@link User} objects. + * This class is a singleton and is available via injection. + * * @author Sebastian Sdorra */ public interface UserManager @@ -49,12 +51,23 @@ public interface UserManager { /** - * Method description + * Returns true if a user with the specified username exists. * * - * @param username + * @param username username of the user * - * @return + * @return true if the user exists */ public boolean contains(String username); + + //~--- get methods ---------------------------------------------------------- + + /** + * Returns the default type for users. + * + * + * @return default user type + * @since 1.14 + */ + public String getDefaultType(); } diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ChangePasswordResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ChangePasswordResource.java index ad7957174d..9b4b05c43e 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ChangePasswordResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ChangePasswordResource.java @@ -49,7 +49,6 @@ import sonia.scm.security.EncryptionHandler; import sonia.scm.user.User; import sonia.scm.user.UserException; import sonia.scm.user.UserManager; -import sonia.scm.user.xml.XmlUserManager; import sonia.scm.util.AssertUtil; import sonia.scm.web.security.WebSecurityContext; @@ -64,7 +63,6 @@ import javax.ws.rs.Produces; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import sonia.scm.user.xml.XmlUserDAO; /** * @@ -145,8 +143,8 @@ public class ChangePasswordResource logger.info("password change for user {}", currentUser.getName()); } - // TODO remove dependency to xml implementation - if (currentUser.getType().equals(XmlUserDAO.TYPE)) + // Only account of the default type can change their password + if (currentUser.getType().equals(userManager.getDefaultType())) { User dbUser = userManager.get(currentUser.getName()); @@ -163,7 +161,12 @@ public class ChangePasswordResource } else { - logger.error("only xml user can change their passwor"); + //J- + logger.error( + "Only account of the default type ({}) can change their password", + userManager.getDefaultType() + ); + //J+ response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } diff --git a/scm-webapp/src/main/webapp/resources/js/group/sonia.group.formpanel.js b/scm-webapp/src/main/webapp/resources/js/group/sonia.group.formpanel.js index cf754a0945..2b8317ebe6 100644 --- a/scm-webapp/src/main/webapp/resources/js/group/sonia.group.formpanel.js +++ b/scm-webapp/src/main/webapp/resources/js/group/sonia.group.formpanel.js @@ -94,7 +94,7 @@ Sonia.group.FormPanel = Ext.extend(Sonia.rest.FormPanel,{ if ( debug ){ console.debug( 'create group: ' + item.name ); } - item.type = 'xml'; + // item.type = 'xml'; var url = restUrl + 'groups.json'; var el = this.el;