com.liferay.users.admin.web.internal.display.context.UserDisplayContext.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.users.admin.web.internal.display.context.UserDisplayContext.java

Source

/**
 * 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.internal.display.context;

import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.model.Contact;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.model.Organization;
import com.liferay.portal.kernel.model.PasswordPolicy;
import com.liferay.portal.kernel.model.Role;
import com.liferay.portal.kernel.model.RoleConstants;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.model.UserGroup;
import com.liferay.portal.kernel.model.UserGroupGroupRole;
import com.liferay.portal.kernel.model.UserGroupRole;
import com.liferay.portal.kernel.security.permission.PermissionChecker;
import com.liferay.portal.kernel.service.GroupLocalServiceUtil;
import com.liferay.portal.kernel.service.OrganizationLocalServiceUtil;
import com.liferay.portal.kernel.service.PasswordPolicyLocalServiceUtil;
import com.liferay.portal.kernel.service.RoleLocalServiceUtil;
import com.liferay.portal.kernel.service.UserGroupGroupRoleLocalServiceUtil;
import com.liferay.portal.kernel.service.UserGroupRoleLocalServiceUtil;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.PortalUtil;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.users.admin.kernel.util.UsersAdminUtil;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import javax.servlet.http.HttpServletRequest;

/**
 * @author Pei-Jung Lan
 */
public class UserDisplayContext {

    public UserDisplayContext(HttpServletRequest request, InitDisplayContext initDisplayContext)
            throws PortalException {

        _request = request;
        _initDisplayContext = initDisplayContext;

        ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

        _permissionChecker = themeDisplay.getPermissionChecker();

        _selUser = PortalUtil.getSelectedUser(request);
        _themeDisplay = themeDisplay;
    }

    public List<Group> getAllGroups() throws PortalException {
        List<Group> allGroups = new ArrayList<>();

        allGroups.addAll(getGroups());
        allGroups.addAll(getInheritedSites());
        allGroups.addAll(_getOrganizationRelatedGroups());
        allGroups.addAll(GroupLocalServiceUtil.getOrganizationsGroups(getOrganizations()));
        allGroups.addAll(GroupLocalServiceUtil.getUserGroupsGroups(getUserGroups()));

        return allGroups;
    }

    public Contact getContact() throws PortalException {
        if (_selUser != null) {
            return _selUser.getContact();
        }

        return null;
    }

    public List<Group> getGroups() throws PortalException {
        List<Group> groups = Collections.emptyList();

        if (_selUser != null) {
            groups = _selUser.getGroups();

            if (_initDisplayContext.isFilterManageableGroups()) {
                groups = UsersAdminUtil.filterGroups(_themeDisplay.getPermissionChecker(), groups);
            }
        }

        return groups;
    }

    public List<UserGroupGroupRole> getInheritedSiteRoles() {
        List<UserGroupGroupRole> inheritedSiteRoles = Collections.emptyList();

        if (_selUser != null) {
            inheritedSiteRoles = UserGroupGroupRoleLocalServiceUtil
                    .getUserGroupGroupRolesByUser(_selUser.getUserId());
        }

        return inheritedSiteRoles;
    }

    public List<Group> getInheritedSites() throws PortalException {
        List<Group> inheritedSites = GroupLocalServiceUtil.getUserGroupsRelatedGroups(getUserGroups());

        for (Group group : _getOrganizationRelatedGroups()) {
            if (!inheritedSites.contains(group)) {
                inheritedSites.add(group);
            }
        }

        return inheritedSites;
    }

    public List<UserGroupRole> getOrganizationRoles() throws PortalException {
        List<UserGroupRole> userGroupRoles = getUserGroupRoles();

        Stream<UserGroupRole> stream = userGroupRoles.stream();

        stream = stream.filter(this::_isOrganizationRole);

        return stream.collect(Collectors.toList());
    }

    public List<Organization> getOrganizations() throws PortalException {
        List<Organization> organizations = Collections.emptyList();

        if (_selUser != null) {
            organizations = _selUser.getOrganizations();

            if (_initDisplayContext.isFilterManageableOrganizations()) {
                organizations = UsersAdminUtil.filterOrganizations(_themeDisplay.getPermissionChecker(),
                        organizations);
            }
        } else {
            String organizationIds = ParamUtil.getString(_request, "organizationsSearchContainerPrimaryKeys");

            if (Validator.isNotNull(organizationIds)) {
                long[] organizationIdsArray = StringUtil.split(organizationIds, 0L);

                organizations = OrganizationLocalServiceUtil.getOrganizations(organizationIdsArray);
            }
        }

        return organizations;
    }

    public PasswordPolicy getPasswordPolicy() throws PortalException {
        if (_selUser != null) {
            return _selUser.getPasswordPolicy();
        }

        return PasswordPolicyLocalServiceUtil.getDefaultPasswordPolicy(_themeDisplay.getCompanyId());
    }

    public List<Group> getRoleGroups() throws PortalException {
        List<Group> allGroups = getAllGroups();

        Stream<Group> stream = allGroups.stream();

        stream = stream.filter(group -> RoleLocalServiceUtil.hasGroupRoles(group.getGroupId()));

        return stream.collect(Collectors.toList());
    }

    public List<Role> getRoles() throws PortalException {
        List<Role> roles = Collections.emptyList();

        if (_selUser != null) {
            roles = _selUser.getRoles();

            if (_initDisplayContext.isFilterManageableRoles()) {
                roles = UsersAdminUtil.filterRoles(_permissionChecker, roles);
            }
        }

        return roles;
    }

    public User getSelectedUser() {
        return _selUser;
    }

    public List<UserGroupRole> getSiteRoles() throws PortalException {
        List<UserGroupRole> userGroupRoles = getUserGroupRoles();

        Stream<UserGroupRole> stream = userGroupRoles.stream();

        stream = stream.filter(this::_isSiteRole);

        return stream.collect(Collectors.toList());
    }

    public List<UserGroupRole> getUserGroupRoles() throws PortalException {
        List<UserGroupRole> userGroupRoles = Collections.emptyList();

        if (_selUser != null) {
            userGroupRoles = UserGroupRoleLocalServiceUtil.getUserGroupRoles(_selUser.getUserId());

            if (_initDisplayContext.isFilterManageableUserGroupRoles()) {
                userGroupRoles = UsersAdminUtil.filterUserGroupRoles(_permissionChecker, userGroupRoles);
            }
        }

        return userGroupRoles;
    }

    public List<UserGroup> getUserGroups() throws PortalException {
        List<UserGroup> userGroups = Collections.emptyList();

        if (_selUser != null) {
            userGroups = _selUser.getUserGroups();

            if (_initDisplayContext.isFilterManageableUserGroups()) {
                userGroups = UsersAdminUtil.filterUserGroups(_permissionChecker, userGroups);
            }
        }

        return userGroups;
    }

    private List<Group> _getOrganizationRelatedGroups() throws PortalException {
        List<Group> organizationsRelatedGroups = Collections.emptyList();
        List<Organization> organizations = getOrganizations();

        if (!organizations.isEmpty()) {
            organizationsRelatedGroups = GroupLocalServiceUtil.getOrganizationsRelatedGroups(organizations);
        }

        return organizationsRelatedGroups;
    }

    private boolean _isOrganizationRole(UserGroupRole userGroupRole) {
        long roleId = userGroupRole.getRoleId();

        Role role = RoleLocalServiceUtil.fetchRole(roleId);

        if ((role != null) && (role.getType() == RoleConstants.TYPE_ORGANIZATION)) {

            return true;
        }

        return false;
    }

    private boolean _isSiteRole(UserGroupRole userGroupRole) {
        long roleId = userGroupRole.getRoleId();

        Role role = RoleLocalServiceUtil.fetchRole(roleId);

        if ((role != null) && (role.getType() == RoleConstants.TYPE_SITE)) {
            return true;
        }

        return false;
    }

    private final InitDisplayContext _initDisplayContext;
    private final PermissionChecker _permissionChecker;
    private final HttpServletRequest _request;
    private final User _selUser;
    private final ThemeDisplay _themeDisplay;

}