From fc846059c13181d79f04df6aff4fc6a958adbe33 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Mon, 11 Feb 2013 17:12:31 +0000 Subject: [PATCH] start ui for ldap group <-> roles mapping git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1444879 13f79535-47bb-0310-9956-ffa450edef68 --- .../main/webapp/js/archiva/general-admin.js | 88 +++++++++++++++++-- .../js/templates/archiva/general-admin.html | 35 +++++++- 2 files changed, 117 insertions(+), 6 deletions(-) diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/general-admin.js b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/general-admin.js index 8d4c2b997..c5c58a979 100644 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/general-admin.js +++ b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/general-admin.js @@ -17,7 +17,7 @@ * under the License. */ define("archiva.general-admin",["jquery","i18n","utils","jquery.tmpl","knockout","knockout.simpleGrid", - "knockout.sortable","jquery.validate","bootstrap"] + "knockout.sortable","jquery.ui","jquery.validate","bootstrap","select2"] , function(jquery,i18n,utils,jqueryTmpl,ko) { //------------------------- @@ -1257,6 +1257,11 @@ define("archiva.general-admin",["jquery","i18n","utils","jquery.tmpl","knockout" this.usersCacheConfiguration=ko.observable(cacheConfiguration); this.usersCacheConfiguration.subscribe(function(newValue){self.modified(true)}); + this.ldapGroups=ko.observableArray([]); + this.ldapGroups.subscribe(function(newValue){self.modified(true)}); + + this.ldapGroupMappings=ko.observableArray([]); + this.ldapGroupMappings.subscribe(function(newValue){self.modified(true);}); } @@ -1349,6 +1354,8 @@ define("archiva.general-admin",["jquery","i18n","utils","jquery.tmpl","knockout" this.usedUserManagerImpls=ko.observableArray([]); + this.allRoleNames=[]; + self.gridViewModel = new ko.simpleGrid.viewModel({ data: self.redbackRuntimeConfiguration().configurationPropertiesEntries, columns: [ @@ -1615,10 +1622,60 @@ define("archiva.general-admin",["jquery","i18n","utils","jquery.tmpl","knockout" var redbackRuntimeConfiguration = mapRedbackRuntimeConfiguration(data); var redbackRuntimeConfigurationViewModel = new RedbackRuntimeConfigurationViewModel(redbackRuntimeConfiguration,userManagerImplementationInformations); - mainContent.html( $("#redback-runtime-configuration-main" ).tmpl() ); - ko.applyBindings(redbackRuntimeConfigurationViewModel,$("#redback-runtime-configuration-content" ).get(0)); - activateRedbackRuntimeGeneralFormValidation(); - activateLdapConfigurationFormValidation(); + + + // load ldap roles + $.ajax("restServices/redbackServices/ldapGroupMappingService/ldapGroups", { + type: "GET", + dataType: 'json', + success: function(data) { + var groups = []; + if(data&&data.strings){ + groups = $.isArray(data.strings)? $.map(data.strings,function(item){ + return item; + }):[data.strings]; + } + $.log("groups number:"+groups.length); + redbackRuntimeConfiguration.ldapGroups.push(groups); + + // load ldap group mappings if any + $.ajax("restServices/redbackServices/ldapGroupMappingService", { + type: "GET", + dataType: 'json', + success: function(data) { + var groupMappings=mapLdapGroupMappings(data); + + redbackRuntimeConfiguration.ldapGroupMappings(groupMappings); + redbackRuntimeConfiguration.modified(false); + + + $.ajax("restServices/redbackServices/roleManagementService/allRoles", { + type: "GET", + dataType: 'json', + success: function(data) { + + var allRoleNames = $.map(data, function(item) { + return item.name; + }); + + redbackRuntimeConfigurationViewModel.allRoleNames=allRoleNames; + + mainContent.html( $("#redback-runtime-configuration-main" ).tmpl() ); + ko.applyBindings(redbackRuntimeConfigurationViewModel,$("#redback-runtime-configuration-content" ).get(0)); + activateRedbackRuntimeGeneralFormValidation(); + activateLdapConfigurationFormValidation(); + $("#ldap-group-mappings-div select" ).select2({width: "element"}); + + } + }); + } + }); + } + }); + + + + } }); @@ -1627,6 +1684,27 @@ define("archiva.general-admin",["jquery","i18n","utils","jquery.tmpl","knockout" } + LdapGroupMapping=function(group,roleNames){ + var self=this; + this.modified=ko.observable(false); + //private String group; + this.group=ko.observable(group); + this.group.subscribe(function(newValue){self.modified(true)}); + + //private Collection roleNames; + this.roleNames=ko.observableArray(roleNames); + this.roleNames.subscribe(function(newValue){self.modified(true)}); + } + + mapLdapGroupMappings=function(data){ + if(data!=null){ + return $.map(data,function(item){ + return new LdapGroupMapping(item.group,item.roleNames?item.roleNames:[]); + }) + } + return []; + } + CacheConfiguration=function(timeToIdleSeconds,timeToLiveSeconds,maxElementsInMemory,maxElementsOnDisk){ var self=this; this.modified=ko.observable(false); diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/archiva/general-admin.html b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/archiva/general-admin.html index fb2b99f15..d21002a19 100644 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/archiva/general-admin.html +++ b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/archiva/general-admin.html @@ -976,6 +976,7 @@ @@ -1091,10 +1092,14 @@ +
+ +
+
-
@@ -1192,3 +1197,31 @@ ${$data.description}
+ + -- 2.39.5