diff --git a/scm-core/src/main/java/sonia/scm/ScmState.java b/scm-core/src/main/java/sonia/scm/ScmState.java index bb838c4dd2..3de189d7cf 100644 --- a/scm-core/src/main/java/sonia/scm/ScmState.java +++ b/scm-core/src/main/java/sonia/scm/ScmState.java @@ -77,12 +77,33 @@ public class ScmState WebSecurityContext securityContext, Collection repositoryTypes, ScmClientConfig clientConfig) + { + this(provider, securityContext, repositoryTypes, null, clientConfig); + } + + /** + * Constructs {@link ScmState} object. + * + * + * @param provider - context provider + * @param securityContext - security context of the current user + * @param repositoryTypes - available repository types + * @param clientConfig - client configuration + * @param defaultUserType = Default user type + * + * @since 1.14 + */ + public ScmState(SCMContextProvider provider, + WebSecurityContext securityContext, + Collection repositoryTypes, String defaultUserType, + ScmClientConfig clientConfig) { this.version = provider.getVersion(); this.user = securityContext.getUser(); this.groups = securityContext.getGroups(); this.repositoryTypes = repositoryTypes; this.clientConfig = clientConfig; + this.defaultUserType = defaultUserType; } //~--- get methods ---------------------------------------------------------- @@ -98,6 +119,19 @@ public class ScmState return clientConfig; } + /** + * Returns the default user type + * + * + * @return default user type + * + * @since 1.14 + */ + public String getDefaultUserType() + { + return defaultUserType; + } + /** * Returns a {@link java.util.Collection} of groups names which are associated * to the current user. @@ -168,6 +202,18 @@ public class ScmState this.clientConfig = clientConfig; } + /** + * Sets the default user type + * + * + * @param defaultUserType default user type + * @since 1.14 + */ + public void setDefaultUserType(String defaultUserType) + { + this.defaultUserType = defaultUserType; + } + /** * Setter for the groups. * @@ -231,6 +277,9 @@ public class ScmState /** Field description */ private ScmClientConfig clientConfig; + /** Field description */ + private String defaultUserType; + /** Field description */ private Collection groups; diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java index 2edf625886..97ce14b0c0 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java @@ -52,6 +52,7 @@ import sonia.scm.ScmState; import sonia.scm.config.ScmConfiguration; import sonia.scm.repository.RepositoryManager; import sonia.scm.user.User; +import sonia.scm.user.UserManager; import sonia.scm.web.security.WebSecurityContext; //~--- JDK imports ------------------------------------------------------------ @@ -93,17 +94,19 @@ public class AuthenticationResource * @param contextProvider * @param configuration * @param repositoryManger + * @param userManager * @param securityContextProvider */ @Inject public AuthenticationResource( SCMContextProvider contextProvider, ScmConfiguration configuration, - RepositoryManager repositoryManger, + RepositoryManager repositoryManger, UserManager userManager, Provider securityContextProvider) { this.contextProvider = contextProvider; this.configuration = configuration; this.repositoryManger = repositoryManger; + this.userManager = userManager; this.securityContextProvider = securityContextProvider; } @@ -247,6 +250,7 @@ public class AuthenticationResource { return new ScmState(contextProvider, securityContext, repositoryManger.getConfiguredTypes(), + userManager.getDefaultType(), new ScmClientConfig(configuration.getDateFormat(), configuration.isDisableGroupingGrid())); } @@ -264,4 +268,7 @@ public class AuthenticationResource /** Field description */ private Provider securityContextProvider; + + /** Field description */ + private UserManager userManager; } 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 2b8317ebe6..5242342050 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 = state.defaultUserType; var url = restUrl + 'groups.json'; var el = this.el; diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.scm.js b/scm-webapp/src/main/webapp/resources/js/sonia.scm.js index 9faa224c58..d50a1116bd 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.scm.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.scm.js @@ -190,7 +190,7 @@ Sonia.scm.Main = Ext.extend(Ext.util.Observable, { var securitySection = null; - if ( state.user.type == 'xml' && state.user.name != 'anonymous' ){ + if ( state.user.type == state.defaultUserType && state.user.name != 'anonymous' ){ securitySection = { title: this.sectionSecurityText, links: [{ diff --git a/scm-webapp/src/main/webapp/resources/js/user/sonia.user.formpanel.js b/scm-webapp/src/main/webapp/resources/js/user/sonia.user.formpanel.js index 470e0ab168..c696e97e79 100644 --- a/scm-webapp/src/main/webapp/resources/js/user/sonia.user.formpanel.js +++ b/scm-webapp/src/main/webapp/resources/js/user/sonia.user.formpanel.js @@ -73,7 +73,7 @@ Sonia.user.FormPanel = Ext.extend(Sonia.rest.FormPanel,{ helpText: this.mailHelpText }]; - if ( this.item == null || this.item.type == 'xml' ){ + if ( this.item == null || this.item.type == state.defaultUserType ){ items.push({ fieldLabel: this.passwordText, id: 'pwd', @@ -107,7 +107,7 @@ Sonia.user.FormPanel = Ext.extend(Sonia.rest.FormPanel,{ }, isReadOnly: function(){ - return this.item != null && this.item.type != 'xml'; + return this.item != null && this.item.type != state.defaultUserType; }, fixRequest: function(user){ @@ -150,7 +150,7 @@ Sonia.user.FormPanel = Ext.extend(Sonia.rest.FormPanel,{ } this.fixRequest(user); // set user type - user.type = 'xml'; + user.type = state.defaultUserType; var url = restUrl + 'users.json'; Ext.Ajax.request({ url: url, diff --git a/scm-webapp/src/main/webapp/resources/js/user/sonia.user.grid.js b/scm-webapp/src/main/webapp/resources/js/user/sonia.user.grid.js index fa0b998d6f..9f4ea8f0be 100644 --- a/scm-webapp/src/main/webapp/resources/js/user/sonia.user.grid.js +++ b/scm-webapp/src/main/webapp/resources/js/user/sonia.user.grid.js @@ -126,7 +126,7 @@ Sonia.user.Grid = Ext.extend(Sonia.rest.Grid, { scope: this } }); - if ( item.type == 'xml' ){ + if ( item.type == state.defaultUserType ){ panel.getForm().setValues([ {id: 'password', value: dummyPassword}, {id: 'password-confirm', value: dummyPassword}