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