001
014
015 package com.liferay.portlet.usergroupsadmin.search;
016
017 import com.liferay.portal.kernel.dao.search.RowChecker;
018 import com.liferay.portal.kernel.log.Log;
019 import com.liferay.portal.kernel.log.LogFactoryUtil;
020 import com.liferay.portal.model.Group;
021 import com.liferay.portal.model.User;
022 import com.liferay.portal.security.membershippolicy.SiteMembershipPolicyUtil;
023 import com.liferay.portal.security.permission.PermissionChecker;
024 import com.liferay.portal.security.permission.PermissionThreadLocal;
025 import com.liferay.portal.service.UserLocalServiceUtil;
026
027 import javax.portlet.RenderResponse;
028
029
032 public class UserGroupChecker extends RowChecker {
033
034 public UserGroupChecker(RenderResponse renderResponse, Group group) {
035 super(renderResponse);
036
037 _group = group;
038 }
039
040 @Override
041 public boolean isChecked(Object obj) {
042 User user = null;
043
044 if (obj instanceof User) {
045 user = (User)obj;
046 }
047 else if (obj instanceof Object[]) {
048 user = (User)((Object[])obj)[0];
049 }
050 else {
051 throw new IllegalArgumentException(obj + " is not a User");
052 }
053
054 try {
055 return UserLocalServiceUtil.hasGroupUser(
056 _group.getGroupId(), user.getUserId());
057 }
058 catch (Exception e) {
059 _log.error(e, e);
060
061 return false;
062 }
063 }
064
065 @Override
066 public boolean isDisabled(Object obj) {
067 User user = (User)obj;
068
069 try {
070 PermissionChecker permissionChecker =
071 PermissionThreadLocal.getPermissionChecker();
072
073 if (isChecked(user)) {
074 if (SiteMembershipPolicyUtil.isMembershipProtected(
075 permissionChecker, user.getUserId(),
076 _group.getGroupId()) ||
077 SiteMembershipPolicyUtil.isMembershipRequired(
078 user.getUserId(), _group.getGroupId())) {
079
080 return true;
081 }
082 }
083 else {
084 if (!SiteMembershipPolicyUtil.isMembershipAllowed(
085 user.getUserId(), _group.getGroupId())) {
086
087 return true;
088 }
089 }
090 }
091 catch (Exception e) {
092 _log.error(e, e);
093 }
094
095 return super.isDisabled(obj);
096 }
097
098 private static Log _log = LogFactoryUtil.getLog(UserGroupChecker.class);
099
100 private Group _group;
101
102 }