]> source.dussan.org Git - archiva.git/commitdiff
[MRM-918] Switch for disabling user registration.
authorOlivier Lamy <olamy@apache.org>
Fri, 14 Sep 2012 09:28:23 +0000 (09:28 +0000)
committerOlivier Lamy <olamy@apache.org>
Fri, 14 Sep 2012 09:28:23 +0000 (09:28 +0000)
implements ui part.

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1384696 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java
archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/general-admin.js
archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/main.js
archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/general-admin.html

index 180dec9bfea9a1a919da62fd2e082953040205f5..f2a6133f9aa47944dd1f539375c6a0af2466f278 100644 (file)
@@ -207,6 +207,13 @@ public interface ArchivaAdministrationService
     UiConfiguration getUiConfiguration()
         throws ArchivaRestServiceException;
 
+    @Path( "registrationDisabled" )
+    @GET
+    @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+    @RedbackAuthorization( noRestriction = true, noPermission = true )
+    Boolean registrationDisabled()
+        throws ArchivaRestServiceException;
+
     @Path( "setUiConfiguration" )
     @POST
     @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
index 63aa63d092874e1810c3d2784b742772e374c27a..bf0bad9e98b9166d5c7aac1c4eef36a8d7776049 100644 (file)
@@ -48,7 +48,7 @@ import java.util.List;
  * @author Olivier Lamy
  * @since 1.4-M1
  */
-@Service( "archivaAdministrationService#default" )
+@Service ( "archivaAdministrationService#default" )
 public class DefaultArchivaAdministrationService
     extends AbstractRestService
     implements ArchivaAdministrationService
@@ -57,7 +57,7 @@ public class DefaultArchivaAdministrationService
     private ArchivaAdministration archivaAdministration;
 
     @Inject
-    @Named( value = "managedRepositoryContent#legacy" )
+    @Named ( value = "managedRepositoryContent#legacy" )
     private ManagedRepositoryContent repositoryContent;
 
     @Inject
@@ -342,6 +342,11 @@ public class DefaultArchivaAdministrationService
         }
     }
 
+    public Boolean registrationDisabled()
+        throws ArchivaRestServiceException
+    {
+        return getUiConfiguration().isDisableRegistration();
+    }
 
     public UiConfiguration getUiConfiguration()
         throws ArchivaRestServiceException
index 3a07cdf9384b354cc094658017d8eab3cb22d5d9..2034be330e069a095774eeac7efe256c316b5aae 100644 (file)
@@ -573,14 +573,15 @@ define("archiva.general-admin",["jquery","i18n","utils","jquery.tmpl","knockout"
         dataType: 'json',
         success: function(data){
           mainContent.html($("#ui-configuration-screen").tmpl());
-          var uiConfiguration=new UiConfiguration(data.showFindArtifacts,data.appletFindEnabled,data.disableEasterEggs,data.applicationUrl);
+          var uiConfiguration=new UiConfiguration(data.showFindArtifacts,data.appletFindEnabled,data.disableEasterEggs,
+                                                  data.applicationUrl,data.disableRegistration);
           var uiConfigurationViewModel=new UiConfigurationViewModel(uiConfiguration);
           ko.applyBindings(uiConfigurationViewModel,mainContent.get(0));
         }
     });
   }
 
-  UiConfiguration=function(showFindArtifacts,appletFindEnabled,disableEasterEggs,applicationUrl){
+  UiConfiguration=function(showFindArtifacts,appletFindEnabled,disableEasterEggs,applicationUrl,disableRegistration){
     this.showFindArtifacts = ko.observable(showFindArtifacts);
 
     this.appletFindEnabled = ko.observable(appletFindEnabled);
@@ -588,6 +589,9 @@ define("archiva.general-admin",["jquery","i18n","utils","jquery.tmpl","knockout"
     this.disableEasterEggs = ko.observable(disableEasterEggs);
 
     this.applicationUrl = ko.observable(applicationUrl);
+
+    // default to false
+    this.disableRegistration = ko.observable(disableRegistration?disableRegistration:false);
   }
 
   UiConfigurationViewModel=function(uiConfiguration){
index da249ee3bcd5c52a55a2e0cf06c127b7b0afad1c..47c83127133b1c1d7dc042e9fe54fafba87f1ca1 100644 (file)
@@ -126,35 +126,45 @@ function(jquery,ui,sammy,tmpl) {
   // Change UI with appearance settings //
   //------------------------------------//
   updateAppearanceToolBar=function() {
-      $.ajax("restServices/archivaServices/archivaAdministrationService/getOrganisationInformation", {
-          type: "GET",
-          dataType: 'json',
-          success: function(data) {
-            var organisationLogo=$("#organisation-logo");
-            if(data.url){
-              var url = data.url.startsWith("http://") || data.url.startsWith("https://") ? data.url : "http://"+data.url;
-              var link="<a href='"+url+"' class='brand'>";
-              if (data.logoLocation) {
-                  link+="<img src='"+data.logoLocation+"' style='max-height: 30px'/>";
-              } else if (data.name) {
-                  link+=data.name;
-              } else {
-                  link+="Archiva";
+    $.ajax("restServices/archivaServices/archivaAdministrationService/registrationDisabled", {
+      type: "GET",
+      dataType: 'json',
+      success: function(data) {
+        //var disableRegistration=data.disableRegistration;
+        if( data){
+          $.log("disableRegistration");
+          $("#topbar-menu").find("#register-link" ).hide();
+        }
+        $.ajax("restServices/archivaServices/archivaAdministrationService/getOrganisationInformation", {
+            type: "GET",
+            dataType: 'json',
+            success: function(data) {
+              var organisationLogo=$("#main-content").find("#organisation-logo");
+              if(data.url){
+                var url = data.url.startsWith("http://") || data.url.startsWith("https://") ? data.url : "http://"+data.url;
+                var link="<a href='"+url+"' class='brand'>";
+                if (data.logoLocation) {
+                    link+="<img src='"+data.logoLocation+"' style='max-height: 30px'/>";
+                } else if (data.name) {
+                    link+=data.name;
+                } else {
+                    link+="Archiva";
+                }
+                link+="</a>";
+                organisationLogo.html(link);
               }
-              link+="</a>";
-              organisationLogo.html(link);
-            }
-            if (!data.url && data.name){
-              organisationLogo.html("<a href='/' class='brand'>"+data.name+"</a>");
-            }
-            if (!data.url && !data.name){
+              if (!data.url && data.name){
+                organisationLogo.html("<a href='/' class='brand'>"+data.name+"</a>");
+              }
+              if (!data.url && !data.name){
+                organisationLogo.html("<a href='/' class='brand'>Archiva</a>");
+              }
+            },
+            error: function() {
               organisationLogo.html("<a href='/' class='brand'>Archiva</a>");
             }
-          },
-          error: function() {
-            organisationLogo.html("<a href='/' class='brand'>Archiva</a>");
-          }
-      });
+        });
+    }});
   };
 
 
index eca846bd35848bc7a52bae50b3e678cf5efd0aa1..c5c12ee5866486764c46e8770dc68aaaf1378367 100644 (file)
         <div class="control-group">
           <label class="control-label" for="maxTotal">${$.i18n.prop('ui-configuration.applicationUrl')}</label>
           <div class="controls">
-            <input type="text" class="xlarge required digits" id="applicationUrl" name="applicationUrl" size="8"
+            <input type="text" class="input-xlarge required digits" id="applicationUrl" name="applicationUrl" size="8"
                    data-bind="value: uiConfiguration().applicationUrl"/>
           </div>
         </div>
+
+        <div class="control-group">
+          <label class="control-label" for="disableRegistration">${$.i18n.prop('ui-configuration.applicationUrl.disableRegistration')}</label>
+          <div class="controls">
+            <input type="checkbox" id="disableRegistration" name="disableRegistration" data-bind="checked: uiConfiguration().disableRegistration"/>
+          </div>
+        </div>
+
       </fieldset>
       <button id="ui-configuration-btn-save" data-bind="click: save" class="btn">${$.i18n.prop('save')}</button>
     </form>