1
22
23 package com.liferay.portal.service.permission;
24
25 import com.liferay.portal.model.User;
26 import com.liferay.portal.security.auth.PrincipalException;
27 import com.liferay.portal.security.permission.ActionKeys;
28 import com.liferay.portal.security.permission.PermissionChecker;
29 import com.liferay.portal.service.UserLocalServiceUtil;
30
31 import org.apache.commons.logging.Log;
32 import org.apache.commons.logging.LogFactory;
33
34
41 public class UserPermissionImpl implements UserPermission {
42
43 public void check(
44 PermissionChecker permissionChecker, long userId, String actionId)
45 throws PrincipalException {
46
47 if (!contains(permissionChecker, userId, actionId)) {
48 throw new PrincipalException();
49 }
50 }
51
52
55 public void check(
56 PermissionChecker permissionChecker, long userId,
57 long organizationId, long locationId, String actionId)
58 throws PrincipalException {
59
60 check(
61 permissionChecker, userId, new long[] {organizationId, locationId},
62 actionId);
63 }
64
65 public void check(
66 PermissionChecker permissionChecker, long userId,
67 long[] organizationIds, String actionId)
68 throws PrincipalException {
69
70 if (!contains(
71 permissionChecker, userId, organizationIds, actionId)) {
72
73 throw new PrincipalException();
74 }
75 }
76
77 public boolean contains(
78 PermissionChecker permissionChecker, long userId, String actionId) {
79
80 return contains(permissionChecker, userId, null, actionId);
81 }
82
83
86 public boolean contains(
87 PermissionChecker permissionChecker, long userId, long organizationId,
88 long locationId, String actionId) {
89
90 return contains(
91 permissionChecker, userId, new long[] {organizationId, locationId},
92 actionId);
93 }
94
95 public boolean contains(
96 PermissionChecker permissionChecker, long userId,
97 long[] organizationIds, String actionId) {
98
99 if (permissionChecker.getUserId() == userId) {
100 return true;
101 }
102 else if (permissionChecker.hasPermission(
103 0, User.class.getName(), userId, actionId)) {
104
105 return true;
106 }
107 else {
108 try {
109 if (organizationIds == null) {
110 User user = UserLocalServiceUtil.getUserById(userId);
111
112 organizationIds = user.getOrganizationIds();
113 }
114
115 for (int i = 0; i < organizationIds.length; i++) {
116 long organizationId = organizationIds[i];
117
118 if (OrganizationPermissionUtil.contains(
119 permissionChecker, organizationId,
120 ActionKeys.MANAGE_USERS)) {
121
122 return true;
123 }
124 }
125 }
126 catch (Exception e) {
127 _log.error(e, e);
128 }
129 }
130
131 return false;
132 }
133
134 private static Log _log = LogFactory.getLog(UserPermissionImpl.class);
135
136 }