/** * Licensed to Apereo under one or more contributor license agreements. See the NOTICE file * distributed with this work for additional information regarding copyright ownership. Apereo * licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use * this file except in compliance with the License. You may obtain a copy of the License at the * following location: * * <p>http://www.apache.org/licenses/LICENSE-2.0 * * <p>Unless required by applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing permissions and * limitations under the License. */ package org.apereo.portal.portlets.fragmentadmin; import java.util.List; import java.util.Map; import java.util.TreeMap; import javax.portlet.PortletRequest; import org.apereo.portal.layout.dlm.ConfigurationLoader; import org.apereo.portal.layout.dlm.FragmentDefinition; import org.apereo.portal.security.IdentitySwapperManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.webflow.execution.RequestContext; /** * Helper class for the FragmentAdministration web flow. */ @Service("fragmentAdministrationHelper") public class FragmentAdministrationHelper { private ConfigurationLoader configurationLoader; private IdentitySwapperManager identitySwapperManager; @Autowired public void setConfigurationLoader(ConfigurationLoader configurationLoader) { this.configurationLoader = configurationLoader; } @Autowired public void setIdentitySwapperManager(IdentitySwapperManager identitySwapperManager) { this.identitySwapperManager = identitySwapperManager; } /** * @param remoteUser * @return */ public Map<String, String> getAuthorizedDlmFragments(String remoteUser) { List<FragmentDefinition> fragments = this.configurationLoader.getFragments(); Map<String, String> results = new TreeMap<String, String>(); for (FragmentDefinition frag : fragments) { if (this.identitySwapperManager.canImpersonateUser(remoteUser, frag.getOwnerId())) { results.put(frag.getOwnerId(), frag.getName()); } } return results; } /** * @param remoteUser * @param targetFragmentOwner * @return "yes" for success, "no" otherwise */ public String swapToFragmentOwner( final String remoteUser, final String targetFragmentOwner, RequestContext requestContext) { PortletRequest portletRequest = (PortletRequest) requestContext.getExternalContext().getNativeRequest(); this.identitySwapperManager.impersonateUser( portletRequest, remoteUser, targetFragmentOwner); return "yes"; } }