2012-09-06 41 views
2

我想自定義Surf Platform Root-Scoped API具體爲用戶對象。這意味着新的屬性或方法在header.inc.ftl [中分享]像添加到用戶對象來檢查用戶在某一組`<#如果user.isAdmin>自定義Surf平臺根範圍API

  1. 我如何能實現呢?
  2. Alfresco Root Scoped Objects是否可以用作Surf Platform Root-Scoped對象?

我不知道定製surf平臺根對象。誰能幫我???

+0

爲什麼你需要一個新的屬性添加到用戶對象?您是否可以不直接從要修改的組件調用存儲庫來執行is-admin檢查? –

回答

4

不太清楚你想要完成什麼,但角色安全模型是在spring-surf/spring webscripts中硬編碼的。有客人,用戶和管理員。如果你想要的是另一個類似的角色,你必須破解彈簧衝浪libaries,即:

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> 

只是檢查用戶是否在某個webscript中的某個組是一個完全不同的故事,並沒有提供相同的功能。

如果你想要的是後者,你應該打個電話給

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

小姐 並通過響應工作。

更新:項目權限屬性需要稍微調整一下。 在header.get.js,傳播到它得到header.inc.ftl正確處理新角色:

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

感謝您的建議。現在我可以通過在ScriptUser.java和User.java中添加一個新方法,在我的ftl文件中調用user.isPartialAdmin,如$ {user.isPartialAdmin?string}。我也修改PageView.java和Description.java。但我不能在頁面描述符中寫入權限=「partialAdmin」。我錯了什麼?你可以幫我嗎? – swemon

+0

我不認爲頁面描述符支持許可權屬性。對於頁面描述符(即site-data/pages/repository.xml),使用如圖所示的驗證元素。顯示permission屬性的item元素來自share-config-custom.xml。 –

+0

對不起,我的錯誤。我的意思是/people-finder in share-config-custom.xml。它不顯示人員查找使用是否是員工。讓我知道你的想法.. – swemon

-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} 

對不起,現在我注意到你說的是衝浪平臺根部的對象,但你放在那裏的鏈接,在3.3以上的Alfresco版本中被棄用。你還在用這麼古老的東西? 如果您設法使用JavaScript API,則可以使用「person」根對象,並使用boolean isAdmin()。

+0

感謝您的建議。但我想獲得ftl文件。 – swemon

+1

這個問題涉及Spring Surf,而不是JSF客戶端。此外,您引用的'JavaScript API'是存儲JS API,它不是Spring Surf內部直接可用的。從Surf中,您必須通過其遠程API訪問存儲庫。 –