Ich bin ein JSF-Portlets in Liferay-6.2 zu entwickeln und ich bin Berechtigungen einrichten. Ich habe meine default.xml
Datei erstellt und ich denke, es funktioniert, da es in der Datenbank die richtigen Berechtigungen speichert. Auch ich denke, resourceLocalService.addResources(...)
funktioniert, da es auch in der Datenbank die richtigen Zeilen speichert, jedenfalls mache ich es als Administrator, ich weiß nicht, ob es etwas mit meinem Problem zu tun hat.Liferay PermissionChecker kehrt Gast Berechtigungen anstelle von Website-Mitglied
Mein Problem ist, wenn ich versuche, die Erlaubnis für ein Website-Mitglied zu überprüfen, verweigert es die Erlaubnis, wie es ein Gast war. Hier
ist der wesentliche Teil meines default.xml
<model-resource>
<model-name>org.lrc.liferay.toolbuilder.model</model-name>
<portlet-ref>
<portlet-name>tool-builder</portlet-name>
</portlet-ref>
<permissions>
<supports>
<action-key>ADD_TOOL_DEF</action-key>
<action-key>ADD_TOOL_INSTANCE</action-key>
</supports>
<site-member-defaults>
<action-key>ADD_TOOL_INSTANCE</action-key>
</site-member-defaults>
<guest-defaults />
<guest-unsupported>
<action-key>ADD_TOOL_DEF</action-key>
<action-key>ADD_TOOL_INSTANCE</action-key>
</guest-unsupported>
</permissions>
</model-resource>
, die als Ergebnis, das ich nehme an, es speichert diese zwei Zeilen in der Ressourcenaktion Tabelle:
| resourceActionId | name | actionId | bitwiseValue |
| 2705 | org.lrc.liferay.toolbuilder.model | ADD_TOOL_DEF | 2 |
| 2706 | org.lrc.liferay.toolbuilder.model | ADD_TOOL_INSTANCE | 4 |
| 2707 | org.lrc.liferay.toolbuilder.model | PERMISSIONS | 4 |
Wenn ich meine Ressource speichere ich
User user = userPersistence.findByPrimaryKey(liferayFacesContext.getUserId());
resourceLocalService.addResources(user.getCompanyId(),
toolDefDBE.getGroupId(),
liferayFacesContext.getScopeGroupId(),
"org.lrc.liferay.toolbuilder.model",
toolDef.getToolDefId(), false, true, true);
Was, wenn ich nicht falsch liege, speichert dies in der Datenbank:
| resourcePermissionId | companyId | name | primKey | roleId | ownerId | actionIds |
| 6101 | 10154 | org.lrc.liferay.toolbuilder.model | 5201 | 10163 | 10158 | 14 |
| 6102 | 10154 | org.lrc.liferay.toolbuilder.model | 5201 | 10170 | 0 | 4 |
Nach Role_ Tabelle, 10163 ist der RoleID Besitzer und 10170 ist die RoleID Website unseres Mitglied
Schließlich, wenn ich die Erlaubnis überprüfen will ich dies ist mein requestBean:
public Boolean getHasAddPermission() {
if (this.hasAddPermission == null) {
LiferayFacesContext liferayFacesContext = LiferayFacesContext.getInstance();
long scopeGroupId = liferayFacesContext.getScopeGroupId();
System.out.println("El scopeGroupId es " + scopeGroupId);
this.hasAddPermission = liferayFacesContext.getThemeDisplay().getPermissionChecker().hasPermission
(scopeGroupId, ToolSession.MODEL, toolSession.getToolDef().getToolDefDBEId(), "ADD_TOOL_INSTANCE");
}
return this.hasAddPermission;
}
Aber für ein Website-Mitglied gibt es mich falsch statt wahr zurück. Weiß jemand, was ich falsch mache?
Vielen Dank!