Fórumok

Berechtigungsssystem in 6.1.1

Stephan H, módosítva 11 év-val korábban

Berechtigungsssystem in 6.1.1

New Member Bejegyzések: 16 Csatlakozás dátuma: 2012.02.15. Legújabb bejegyzések
Hallo zusammen,

mit Hilfe des Buches "Liferay in Action" und des Developers Guides versuche ich seit zwei Tagen ein Test-Portlet zu schreiben, dass das Berechtigungssystem von Liferay nutzt.

Ich habe das Beispiel des Service Builders (Foo) um ein Feld mit der groupId für das Scope erweitert und angelegt.

Beim Anlegen eines Objektes wird eine Ressource für dieses nach dem Beispiel in LiA erzeugt:
resourceLocalService.addResources(newFoo.getCompanyId(), newFoo.getGroupId(), userId, Foo.class.getName(), foo.getPrimaryKey(), false, true, true);


Die Berechtigungs-Defaults für die Ressourcen sind ebenfalls vorhanden:
<!--?xml version="1.0" encoding="UTF-8"?-->

<resource-action-mapping>

  <portlet-resource>
    <portlet-name>test-permissions</portlet-name>
    <permissions>
      <supports>
        <action-key>ADD_FOO</action-key>
        <action-key>VIEW</action-key>
      </supports>
      <site-member-defaults>
        <action-key>VIEW</action-key>
      </site-member-defaults>
      <guest-defaults>
        <action-key>VIEW</action-key>
      </guest-defaults>

      <guest-unsupported>
        <action-key>ADD_FOO</action-key>
      </guest-unsupported>
    </permissions>
  </portlet-resource>

  <model-resource>
    <model-name>
      de.gwdg.test.permission.model.Foo
    </model-name>
    <portlet-ref>
      <portlet-name>test-permissions</portlet-name>
    </portlet-ref>
    <permissions>
      <supports>
        <action-key>DELETE</action-key>
        <action-key>PERMISSIONS</action-key>
        <action-key>UPDATE</action-key>
        <action-key>VIEW</action-key>
      </supports>
      <site-member-defaults>
        <action-key>VIEW</action-key>
      </site-member-defaults>
      <guest-defaults>
        <action-key>VIEW</action-key>
      </guest-defaults>
      <guest-unsupported>
        <action-key>UPDATE</action-key>
      </guest-unsupported>
    </permissions>
  </model-resource>

</resource-action-mapping>


Nur die Abfrage einer Berechtigung für ein bestimmtes Objekt funktioniert nicht. Ich erwarte mit dieser Abfrage eigentlich, dass der Inhaber, also der User der den "Foo" angelegt hat, automatisch auch Berechtigungen auf dem Objekt erhält. Zumindest wird das in den "Permissions" für das Objekt so angezeigt.
Aus dem Code-Beispiel unten werden die Schaltflächen aber nur dem Administrator angezeigt.

&lt;%
ResultRow row = (ResultRow) request.getAttribute(WebKeys.SEARCH_CONTAINER_RESULT_ROW);
Foo myFoo = (Foo) row.getObject();
long groupId = themeDisplay.getLayout().getGroupId();
String name = Foo.class.getName();
String primKey = String.valueOf(myFoo.getPrimaryKey());
%&gt;
<liferay-ui:icon-menu>
  <c:if test="<%= permissionChecker.hasPermission(groupId, name, primKey, ActionKeys.UPDATE) %>">
    <portlet:actionurl name="editProduct" var="editURL">
      <portlet:param name="resourcePrimKey" value="<%= primKey %>" />
    </portlet:actionurl>

    <liferay-ui:icon image="edit" message="Edit" url="<%= editURL.toString() %>" />
  </c:if>

 <c:if test="<%= permissionChecker.hasPermission(groupId, name, primKey, ActionKeys.PERMISSIONS) %>">
    <liferay-security:permissionsurl modelResource="<%= Foo.class.getName() %>" modelResourceDescription="<%= String.valueOf(myFoo.getPrimaryKey()) %>" resourcePrimKey="<%= primKey %>" var="permissionsURL" />

    <liferay-ui:icon image="permissions" url="<%= permissionsURL.toString() %>" />
  </c:if>
</liferay-ui:icon-menu>


Das Beispiel aus LiA haut scheinbar nicht hin. Oder ich übersehe etwas. Gibt es dazu vielleicht noch ein vernünftiges Howto?
Oder hat jemand einen hilfreichen Tip, was ich übersehe?

Gruß
Stephan
thumbnail
Olaf Kock, módosítva 11 év-val korábban

RE: Berechtigungsssystem in 6.1.1

Liferay Legend Bejegyzések: 6403 Csatlakozás dátuma: 2008.09.23. Legújabb bejegyzések
Moin,

hast du die xml Datei in portlet.properties (im root-sourcefolder) referenziert?

resource.actions.configs=resource-actions/default.xml
Stephan H, módosítva 11 év-val korábban

RE: Berechtigungsssystem in 6.1.1

New Member Bejegyzések: 16 Csatlakozás dátuma: 2012.02.15. Legújabb bejegyzések
Hallo Olaf,

jap, habe ich. Ohne Änderung aus LiA übernommen.

Edit: Ich denke auch, dass die Ressourcen korrekt angelegt werden. Habe mich schon in der DB rumgetrieben und die Berechtigungen in ihre bitweisen Werte zerlegt und mit den Einträgen in der "resourceaction" verglichen. Das sieht gut aus. Prinzipiell scheint der Owner volle Berechtigung zu erhalten.