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.security.permission.PermissionCheckerImpl;
30 import com.liferay.portal.service.UserLocalServiceUtil;
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 PermissionCheckerImpl permissionCheckerImpl =
101 (PermissionCheckerImpl)permissionChecker;
102
103 if (permissionCheckerImpl.getUserId() == userId) {
104 return true;
105 }
106 else if (permissionChecker.hasPermission(
107 0, User.class.getName(), userId, actionId)) {
108
109 return true;
110 }
111 else {
112 try {
113 if (organizationIds == null) {
114 User user = UserLocalServiceUtil.getUserById(userId);
115
116 organizationIds = user.getOrganizationIds();
117 }
118
119 for (int i = 0; i < organizationIds.length; i++) {
120 long organizationId = organizationIds[i];
121
122 if (OrganizationPermissionUtil.contains(
123 permissionChecker, organizationId,
124 ActionKeys.MANAGE_USERS)) {
125
126 return true;
127 }
128 }
129 }
130 catch (Exception e) {
131 _log.error(e, e);
132 }
133 }
134
135 return false;
136 }
137
138 private static Log _log = LogFactory.getLog(UserPermissionImpl.class);
139
140 }