Forums

Home » Liferay Portal » Deutsch

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Stephan H
Berechtigungsssystem in 6.1.1
November 7, 2012 5:09 AM
Answer

Stephan H

Rank: New Member

Posts: 15

Join Date: February 15, 2012

Recent Posts

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:
1resourceLocalService.addResources(newFoo.getCompanyId(), newFoo.getGroupId(), userId, Foo.class.getName(), foo.getPrimaryKey(), false, true, true);


Die Berechtigungs-Defaults für die Ressourcen sind ebenfalls vorhanden:
 1<?xml version="1.0" encoding="UTF-8"?>
 2
 3<resource-action-mapping>
 4
 5  <portlet-resource>
 6    <portlet-name>test-permissions</portlet-name>
 7    <permissions>
 8      <supports>
 9        <action-key>ADD_FOO</action-key>
10        <action-key>VIEW</action-key>
11      </supports>
12      <site-member-defaults>
13        <action-key>VIEW</action-key>
14      </site-member-defaults>
15      <guest-defaults>
16        <action-key>VIEW</action-key>
17      </guest-defaults>
18
19      <guest-unsupported>
20        <action-key>ADD_FOO</action-key>
21      </guest-unsupported>
22    </permissions>
23  </portlet-resource>
24
25  <model-resource>
26    <model-name>
27      de.gwdg.test.permission.model.Foo
28    </model-name>
29    <portlet-ref>
30      <portlet-name>test-permissions</portlet-name>
31    </portlet-ref>
32    <permissions>
33      <supports>
34        <action-key>DELETE</action-key>
35        <action-key>PERMISSIONS</action-key>
36        <action-key>UPDATE</action-key>
37        <action-key>VIEW</action-key>
38      </supports>
39      <site-member-defaults>
40        <action-key>VIEW</action-key>
41      </site-member-defaults>
42      <guest-defaults>
43        <action-key>VIEW</action-key>
44      </guest-defaults>
45      <guest-unsupported>
46        <action-key>UPDATE</action-key>
47      </guest-unsupported>
48    </permissions>
49  </model-resource>
50
51</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.

 1<%
 2ResultRow row = (ResultRow) request.getAttribute(WebKeys.SEARCH_CONTAINER_RESULT_ROW);
 3Foo myFoo = (Foo) row.getObject();
 4long groupId = themeDisplay.getLayout().getGroupId();
 5String name = Foo.class.getName();
 6String primKey = String.valueOf(myFoo.getPrimaryKey());
 7%>
 8<liferay-ui:icon-menu>
 9  <c:if test="<%= permissionChecker.hasPermission(groupId, name, primKey, ActionKeys.UPDATE) %>">
10    <portlet:actionURL name="editProduct" var="editURL">
11      <portlet:param name="resourcePrimKey" value="<%= primKey %>" />
12    </portlet:actionURL>
13
14    <liferay-ui:icon image="edit" message="Edit" url="<%= editURL.toString() %>" />
15  </c:if>
16
17 <c:if test="<%= permissionChecker.hasPermission(groupId, name, primKey, ActionKeys.PERMISSIONS) %>">
18    <liferay-security:permissionsURL
19        modelResource="<%= Foo.class.getName() %>"
20        modelResourceDescription="<%= String.valueOf(myFoo.getPrimaryKey()) %>"
21        resourcePrimKey="<%= primKey %>"
22        var="permissionsURL" />
23
24    <liferay-ui:icon image="permissions" url="<%= permissionsURL.toString() %>" />
25  </c:if>
26</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
Olaf Kock
RE: Berechtigungsssystem in 6.1.1
November 7, 2012 5:13 AM
Answer

Olaf Kock

LIFERAY STAFF

Rank: Liferay Legend

Posts: 1959

Join Date: September 23, 2008

Recent Posts

Moin,

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

1resource.actions.configs=resource-actions/default.xml
Stephan H
RE: Berechtigungsssystem in 6.1.1
November 7, 2012 5:29 AM
Answer

Stephan H

Rank: New Member

Posts: 15

Join Date: February 15, 2012

Recent Posts

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.