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.permission.PermissionChecker;
023 import com.liferay.portal.security.permission.PermissionThreadLocal;
024 import com.liferay.portal.service.UserLocalServiceUtil;
025 import com.liferay.portal.service.permission.UserPermissionUtil;
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 PermissionChecker permissionChecker =
070 PermissionThreadLocal.getPermissionChecker();
071
072 try {
073 if (UserPermissionUtil.hasMembershipProtected(
074 permissionChecker, _group, user)) {
075
076 return true;
077 }
078 }
079 catch (Exception e) {
080 _log.error(e, e);
081 }
082
083 return super.isDisabled(obj);
084 }
085
086 private static Log _log = LogFactoryUtil.getLog(UserGroupChecker.class);
087
088 private Group _group;
089
090 }