自定义Surf Platform Root-Scoped API

时间:2012-09-06 05:13:14

标签: share alfresco alfresco-share

我想自定义Surf Platform Root-Scoped API具体用户对象。这意味着向用户对象添加新属性或方法,以检查用户是否在header.inc.ftl [in share]中的特定组中,例如`< #if user.isAdmin>

  1. 我该如何实现?
  2. Alfresco Root Scoped Objects可以用作Surf Platform Root-Scoped对象吗?
  3. 我不知道自定义冲浪平台根对象。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

不太确定您要完成的任务,但角色安全模型在spring-surf / spring网页中是硬编码的。有来宾,用户和管理员。如果你想要的是另一个类似的角色,你将需要破解弹簧库,即:

org/springframework/extensions/surf/mvc/PageView.java
org/springframework/extensions/webscripts/ScriptUser.java
org/springframework/extensions/webscripts/Description.java
org/springframework/extensions/webscripts/connector/User.java

这是我实施user.isEmployee所必须做的。这种方法可以让你像其他人一样对待你的新角色。

你可以使用

<authentication>employee</authentication>
页面描述符中的

<item type="link" permission="employee" id="people">/people-finder</item>
导航上的

只是检查用户是否在特定网页中的特定群组中,这是一个完全不同的故事,并不提供相同的功能。

如果你想要的是后者,你应该打电话给

/alfresco/service/api/groups/{shortName}

未命中 并通过回应工作。

更新:项目权限属性需要稍微调整一下。 在header.get.js中,将新角色传播到该角色,并在header.inc.ftl中正确处理:

model.permissions =
{
    guest: user.isGuest,
    admin: user.isAdmin,
    employee : user.isEmployee
};

答案 1 :(得分:-1)

你可以尝试(在JavaScript中我管理过类似的东西):

user = Application.getCurrentUser(context);
       String userName = user.getUserName();
       user.isAdmin() >>> result return true if user logining is admin

或在JSP中:

#{NavigationBean.currentUser.admin == true}

很抱歉,我注意到你现在谈论的是Surf Platform根对象,但你放在那里的链接已经弃用了3.3以上的Alfresco版本。你还在用这么老的东西吗? 如果您设法使用JavaScript API,则可以使用&#34; person&#34; root对象,使用boolean isAdmin()。