diff --git a/source/java/org/alfresco/repo/site/SiteServiceImpl.java b/source/java/org/alfresco/repo/site/SiteServiceImpl.java
index aeaa309df5..990b00cef0 100644
--- a/source/java/org/alfresco/repo/site/SiteServiceImpl.java
+++ b/source/java/org/alfresco/repo/site/SiteServiceImpl.java
@@ -299,6 +299,21 @@ public class SiteServiceImpl implements SiteService, SiteModel
PropertyCheck.mandatory(this, "authorityService", authorityService);
PropertyCheck.mandatory(this, "sitesXPath", sitesXPath);
}
+
+ /*
+ * (non-Javadoc)
+ * @see org.alfresco.service.cmr.site.SiteService#hasCreateSitePermissions()
+ */
+ public boolean hasCreateSitePermissions()
+ {
+ final NodeRef siteRoot = getSiteRoot();
+ if (siteRoot == null)
+ {
+ throw new SiteServiceException("No root sites folder exists");
+ }
+ boolean result = permissionService.hasPermission(siteRoot, PermissionService.CONTRIBUTOR).equals(AccessStatus.ALLOWED);
+ return result;
+ }
/**
* @see org.alfresco.service.cmr.site.SiteService#createSite(java.lang.String, java.lang.String, java.lang.String, java.lang.String, boolean)
diff --git a/source/java/org/alfresco/repo/site/script/ScriptSiteService.java b/source/java/org/alfresco/repo/site/script/ScriptSiteService.java
index dfec8ab34b..9d109a475d 100644
--- a/source/java/org/alfresco/repo/site/script/ScriptSiteService.java
+++ b/source/java/org/alfresco/repo/site/script/ScriptSiteService.java
@@ -104,6 +104,17 @@ public class ScriptSiteService extends BaseScopableProcessorExtension
return new Site(siteInfo, this.serviceRegistry, this.siteService, getScope());
}
+ /**
+ * This method checks if the currently authenticated user has permission to create sites.
+ *
+ * @return true
if the current user is a Contributor to "Sites" node, else false
.
+ * @since 3.4
+ */
+ public boolean hasCreateSitePermissions()
+ {
+ return siteService.hasCreateSitePermissions();
+ }
+
/**
* List the sites available in the repository. The returned list can optionally be filtered by name and site
* preset.
diff --git a/source/java/org/alfresco/service/cmr/site/SiteService.java b/source/java/org/alfresco/service/cmr/site/SiteService.java
index 0317764c76..40dd0b86cd 100644
--- a/source/java/org/alfresco/service/cmr/site/SiteService.java
+++ b/source/java/org/alfresco/service/cmr/site/SiteService.java
@@ -65,6 +65,15 @@ public interface SiteService
@Auditable(parameters = {"sitePreset", "shortName"})
SiteInfo createSite(String sitePreset, String shortName, String title, String description, SiteVisibility visibility);
+ /**
+ * This method checks if the currently authenticated user has permission to create sites.
+ *
+ * @return true
if current user can create sites, else false
.
+ * @since 3.4
+ */
+ @NotAuditable
+ boolean hasCreateSitePermissions();
+
/**
* List the available sites. This list can optionally be filtered by site name and/or site preset.
*