TYPO3 - 通过流体

时间:2016-09-12 18:44:36

标签: typo3 typoscript

通过BE,如果她/他所属的fe_group具有作为子组的fe_group,则可以给予fe_user访问内容,该fe_group被定义为可以访问内容的组。

所以,例如如果我定义产品组02' (uid = 2)应该可以通过BE访问特定内容,BE是属于'用户组03'的用户组。 (uid = 6),其作为子组'产品组02' (uid = 2),fe_user可以访问内容。

fe_groups设置:

uid|title|subgroup
1|Product Group 01|
2|Product Group 02|
3|Product Group 03|
4|User Group 01|1
5|User Group 02|
6|User Group 03|2,3

但是如果我直接在我的flowtemplate中定义{f:cObject(typoscriptObjectPath:' lib.usergroup')} ==' 2'应该可以访问内容并随后访问用户组03'提到的fe_user无法访问它:

typoscript:

lib.usergroup = TEXT
lib.usergroup.data = TSFE:fe_user|user|usergroup

partial.html

<f:if condition="{f:cObject(typoscriptObjectPath: 'lib.usergroup')} == '2'">
...
</f:if>

// ...当然,如果fe_user属于&#39;产品组02&#39;他可以访问它。

但是,是否有可能坚持上述fe_groups结构并仍然通过流体提供上述fe_user对内容的访问权限?

1 个答案:

答案 0 :(得分:3)

TSFE:fe_user|user|usergroup获取用户的用户组中存储的内容。在您的情况下,存储了6,并将其与2进行比较,后者返回false

此外,如果为用户设置的用户组多于一个用户组,这样的解决方案可能会带来更多麻烦。在这种情况下,TSFE:fe_user|user|usergroup将返回以逗号分隔的用户组uid列表,例如6,2,3,您的条件将再次导致false

正确的方法是使用f:security.ifHasRole ViewHelper。 所以,这样的事情可以帮助你:

<f:security.ifHasRole role="2">
  Your stuff here
</f:security.ifHasRole>