/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.users.admin.web.portlet; import com.liferay.portal.kernel.model.Group; import com.liferay.portal.kernel.model.Organization; import com.liferay.portal.kernel.model.Portlet; import com.liferay.portal.kernel.model.Role; import com.liferay.portal.kernel.model.RoleConstants; import com.liferay.portal.kernel.model.UserGroupRole; import com.liferay.portal.kernel.portlet.BaseControlPanelEntry; import com.liferay.portal.kernel.portlet.ControlPanelEntry; import com.liferay.portal.kernel.security.permission.ActionKeys; import com.liferay.portal.kernel.security.permission.PermissionChecker; import com.liferay.portal.kernel.service.OrganizationLocalService; import com.liferay.portal.kernel.service.UserGroupRoleLocalService; import com.liferay.portal.kernel.service.permission.OrganizationPermissionUtil; import com.liferay.users.admin.constants.UsersAdminPortletKeys; import java.util.List; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; /** * @author Jorge Ferrer * @author Zsolt Berentey */ @Component( property = { "javax.portlet.name=" + UsersAdminPortletKeys.MY_ORGANIZATIONS, "javax.portlet.name=" + UsersAdminPortletKeys.USERS_ADMIN }, service = ControlPanelEntry.class ) public class UsersControlPanelEntry extends BaseControlPanelEntry { @Override protected boolean hasPermissionImplicitlyGranted( PermissionChecker permissionChecker, Group group, Portlet portlet) throws Exception { List<UserGroupRole> userGroupRoles = _userGroupRoleLocalService.getUserGroupRoles( permissionChecker.getUserId()); for (UserGroupRole userGroupRole : userGroupRoles) { Role role = userGroupRole.getRole(); String roleName = role.getName(); if (roleName.equals(RoleConstants.ORGANIZATION_ADMINISTRATOR) || roleName.equals(RoleConstants.ORGANIZATION_OWNER)) { return true; } } List<Organization> organizations = _organizationLocalService.getUserOrganizations( permissionChecker.getUserId()); for (Organization organization : organizations) { if (OrganizationPermissionUtil.contains( permissionChecker, organization, ActionKeys.MANAGE_USERS)) { return true; } if (OrganizationPermissionUtil.contains( permissionChecker, organization, ActionKeys.MANAGE_SUBORGANIZATIONS)) { return true; } /*if (OrganizationPermissionUtil.contains( permissionChecker, organization.getOrganizationId(), ActionKeys.VIEW)) { return true; }*/ } return super.hasPermissionImplicitlyGranted( permissionChecker, group, portlet); } @Reference(unbind = "-") protected void setOrganizationLocalService( OrganizationLocalService organizationLocalService) { _organizationLocalService = organizationLocalService; } @Reference(unbind = "-") protected void setUserGroupRoleLocalService( UserGroupRoleLocalService userGroupRoleLocalService) { _userGroupRoleLocalService = userGroupRoleLocalService; } private OrganizationLocalService _organizationLocalService; private UserGroupRoleLocalService _userGroupRoleLocalService; }