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. *