2016-07-23 43 views
0

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!

Antwort

0

Gelöst !! Das Problem war, dass der Benutzer kein Mitglied der Site war. Liferay unterscheidet zwischen angemeldeten Benutzern und Site-Mitgliedern. Um ein Site-Mitglied zu sein, müssen Sie den neuen Benutzern standardmäßig eine Rolle dieser Site zuweisen oder sie später mit dem Websitebesitzer-Benutzer

zuweisen