001
014
015 package com.liferay.portlet.rolesadmin.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.Role;
021 import com.liferay.portal.model.User;
022 import com.liferay.portal.security.auth.MembershipPolicyUtil;
023 import com.liferay.portal.service.UserLocalServiceUtil;
024
025 import java.util.Set;
026
027 import javax.portlet.RenderResponse;
028
029
032 public class UserRoleChecker extends RowChecker {
033
034 public UserRoleChecker(RenderResponse renderResponse, Role role) {
035 super(renderResponse);
036
037 _role = role;
038 }
039
040 @Override
041 public boolean isChecked(Object obj) {
042 User user = (User)obj;
043
044 try {
045 return UserLocalServiceUtil.hasRoleUser(
046 _role.getRoleId(), user.getUserId());
047 }
048 catch (Exception e) {
049 _log.error(e, e);
050
051 return false;
052 }
053 }
054
055 @Override
056 public boolean isDisabled(Object obj) {
057 User user = (User)obj;
058
059 Set<Role> mandatoryRoles = MembershipPolicyUtil.getMandatoryRoles(user);
060
061 if ((isChecked(user) && mandatoryRoles.contains(_role)) ||
062 (!isChecked(user) &&
063 !MembershipPolicyUtil.isMembershipAllowed(_role, user))) {
064
065 return true;
066 }
067
068 return super.isDisabled(obj);
069 }
070
071 private static Log _log = LogFactoryUtil.getLog(UserRoleChecker.class);
072
073 private Role _role;
074
075 }