1
14
15 package com.liferay.portal.service.permission;
16
17 import com.liferay.portal.kernel.exception.PortalException;
18 import com.liferay.portal.kernel.exception.SystemException;
19 import com.liferay.portal.model.Group;
20 import com.liferay.portal.model.Organization;
21 import com.liferay.portal.security.auth.PrincipalException;
22 import com.liferay.portal.security.permission.ActionKeys;
23 import com.liferay.portal.security.permission.PermissionChecker;
24 import com.liferay.portal.service.GroupLocalServiceUtil;
25 import com.liferay.portal.service.OrganizationLocalServiceUtil;
26
27 import java.util.List;
28
29
34 public class GroupPermissionImpl implements GroupPermission {
35
36 public void check(
37 PermissionChecker permissionChecker, long groupId,
38 String actionId)
39 throws PortalException, SystemException {
40
41 if (!contains(permissionChecker, groupId, actionId)) {
42 throw new PrincipalException();
43 }
44 }
45
46 public boolean contains(
47 PermissionChecker permissionChecker, long groupId, String actionId)
48 throws PortalException, SystemException {
49
50 Group group = GroupLocalServiceUtil.getGroup(groupId);
51
52 if (group.isStagingGroup()) {
53 group = group.getLiveGroup();
54 }
55
56 if (group.isOrganization()) {
57 long organizationId = group.getClassPK();
58
59 return OrganizationPermissionUtil.contains(
60 permissionChecker, organizationId, actionId);
61 }
62 else if (group.isUser()) {
63
64
69 long userId = group.getClassPK();
70
71 List<Organization> organizations =
72 OrganizationLocalServiceUtil.getUserOrganizations(userId);
73
74 for (Organization organization : organizations) {
75 if (OrganizationPermissionUtil.contains(
76 permissionChecker, organization.getOrganizationId(),
77 ActionKeys.MANAGE_USERS)) {
78
79 return true;
80 }
81 }
82 }
83
84
86 return permissionChecker.hasPermission(
87 groupId, Group.class.getName(), groupId, actionId);
88 }
89
90 }