【问题标题】:How to hide create site link for particular user如何隐藏为特定用户创建站点链接
【发布时间】:2014-03-20 11:27:41
【问题描述】:

我使用的是 Alfresco 4.2e 社区版。我可以通过修改以下文件来限制特定组的站点创建。

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 脚本?谢谢

【问题讨论】:

    标签: alfresco-share


    【解决方案1】:

    Here 是一个从标题、dashlet 和欢迎 dashlet 中删除链接的版本(不要忘记那个)。此外,它还更改了底层权限以防止绕过 UI。在我的版本中,我将创建站点功能限制为“站点创建者”组的成员。

    【讨论】:

    • 我已经浏览了你提供的链接,我能够构建 .amp 文件并在 alfresco 5.0.c 社区版本中安装此 amp 文件,但安装此文件后我无法看到创建站点选项。我创建了一个名为“GROUP_SITE_CREATORS”的组,并将管理员用户添加到该组。但它仍然无法正常工作。您能否建议我如何在 alfresco 5.0.c 社区版本中实现它?
    • 我没有用我认为不是稳定版本的 5.0.c 测试插件。但是,请确保您已从共享模块部署控制台部署了该模块。如果你已经部署了它仍然无法工作,请在 git hub 项目页面上创建一个问题,我会查看它。
    • 感谢您的回复。我已经在 alfresco 5.0.c 中完成了它的实现,并且它的工作正常。
    【解决方案2】:

    我找到了解决此问题的方法。首先,我为除管理员之外的所有人隐藏了“从标题中创建站点”。我添加了以下文件。

    我在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;
    }
    

    【讨论】:

    • 您只是复制了我所指的代码,但使用了不同的包名称。不同之处在于您将创建站点限制为管理员,而我将其限制为一个名为 Site Creators 的组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    相关资源
    最近更新 更多