我使用的是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脚本是什么?谢谢
答案 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;
}