如何隐藏特定用户的创建站点链接

时间:2014-03-20 11:27:41

标签: alfresco-share

我使用的是Alfresco 4.2e Community Edition。我可以通过修改以下文件来限制特定组的网站创建。

public-services-security-context.xml

org.alfresco.service.cmr.site.SiteService.createSite=ACL_METHOD.ROLE_ADMINISTRATOR,ACL_METHOD.GROUP_SITECREATORS

在sites.get.js和mysites.get.js中我添加了这个

var createSiteVisible = userHasGroup(user.name, 'SITECREATORS');
model.createSiteVisible = createSiteVisible;

function userHasGroup(username, group) {
   var result = remote.call("/api/people/" + stringUtils.urlEncode(username) + "?groups=true");
   if (result.status == 200 && result != "{}")
   {
      var user = eval('(' + result + ')');

      var groups = new Array();
      groups = user.groups;
      var mygroups = "";
      for (i=0; i<groups.length; i++)
      {                   
         if (groups[i].itemName == "GROUP_"+group || groups[i].itemName == "GROUP_ALFRESCO_ADMINISTRATORS"){
        return true; // found group
      }else{
        mygroup = mygroups+groups[i].displayName;
      }
      }

      return false;
   }
   else return false;
}

在my-sites.get.html.ftl和sites.get.html.ftl中我将条件修改为

<#if createSiteVisible>
           <span class="align-right yui-button-align">
              <#if showCreateSite>
              <span class="first-child">
                 <a href="#" id="${id}-createSite-button" class="theme-color-1">
                    <img src="${url.context}/res/components/images/site-16.png" style="vertical-align: text-bottom" />
                    ${msg("link.createSite")}</a>
              </span>
              </#if>
           </span>   
</#if>

用户现在无法创建网站。但我仍然在标题菜单中获取创建网站链接。如何为用户隐藏创建网站。

!user.isAdmin指管理员用户。引用组的java脚本是什么?谢谢

2 个答案:

答案 0 :(得分:3)

Here是一个从标题,小面板和欢迎信息小程序中删除链接的版本(不要忘记那个)。此外,它还会更改基础权限以防止绕过UI。在我的版本中,我将创建网站功能限制为&#34; Site Creators&#34;基。

答案 1 :(得分:2)

我为此找到了解决方法。首先,我为除admin之外的所有人隐藏了创建网站。我添加了以下文件。

我在shared/classes/alfresco/web-extension/site-data/extension/remove-create-site-extension.xml创建了文件并输入了

<extension>
 <modules>
  <module>
   <id>Remove create site menu option for non admin users</id>
   <version>1.0</version>
   <customizations>
    <customization>
     <targetPackageRoot>org.alfresco.share.header</targetPackageRoot>
     <sourcePackageRoot>ingen.header</sourcePackageRoot>
    </customization>
    <customization>
     <targetPackageRoot>org.alfresco.components.dashlets</targetPackageRoot>
     <sourcePackageRoot>ingen.dashlets</sourcePackageRoot>
    </customization>
   </customizations>
  </module>
 </modules>
</extension>

然后我在shared/classes/alfresco/web-extension/site-webscripts/ingen/header/share-header.get.js创建了文件并添加了

//Find the "Sites" menu...
var sitesMenu = widgetUtils.findObject(model.jsonModel, "id", "HEADER_SITES_MENU");

if (sitesMenu != null) {
 if (!user.isAdmin) {
  sitesMenu.config.showCreateSite = false;
 }
}

然后我创建了文件shared / classes / alfresco / web-extension / site-webscripts / ingen / dashlets / my-sites.get.js

if (!user.isAdmin) {
 model.showCreateSite = false;
}