| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF 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 |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * 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.apache.cocoon.auth.portal; |
| |
| import java.util.Map; |
| |
| import org.apache.avalon.framework.context.Context; |
| import org.apache.avalon.framework.context.ContextException; |
| import org.apache.avalon.framework.context.Contextualizable; |
| import org.apache.cocoon.components.ContextHelper; |
| import org.apache.cocoon.portal.profile.impl.UserInfo; |
| import org.apache.cocoon.portal.profile.impl.UserInfoProvider; |
| import org.apache.cocoon.auth.ApplicationUtil; |
| import org.apache.cocoon.auth.User; |
| |
| /** |
| * Get the information about the current user. |
| * This implementation uses CAuth. |
| * Note: This class belongs to cauth but has to be defined in the portal block for now. |
| * This will be cleaned up with Cocoon 2.2. |
| * @version $Id$ |
| */ |
| public class UserInfoProviderImpl |
| implements UserInfoProvider, Contextualizable { |
| |
| /** The component context. */ |
| protected Context context; |
| |
| /** |
| * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context) |
| */ |
| public void contextualize(final Context aContext) throws ContextException { |
| this.context = aContext; |
| } |
| |
| /** |
| * @see org.apache.cocoon.portal.profile.impl.UserInfoProvider#getUserInfo(java.lang.String, java.lang.String) |
| */ |
| public UserInfo getUserInfo(final String portalName, final String layoutKey) |
| throws Exception { |
| final Map objectModel = ContextHelper.getObjectModel(this.context); |
| final User user = ApplicationUtil.getUser(objectModel); |
| |
| final UserInfo info = new PortalUserInfo(portalName, layoutKey, user); |
| |
| info.setUserName(user.getId()); |
| info.setGroup((String)user.getAttribute("group")); |
| final PortalApplication app = |
| (PortalApplication)ApplicationUtil.getApplication(objectModel); |
| info.setConfigurations(app.getPortalConfiguration()); |
| |
| return info; |
| } |
| |
| /** |
| * The user info for the portal engine. |
| */ |
| public static final class PortalUserInfo extends UserInfo { |
| |
| /** The CAuth user object. */ |
| protected final User user; |
| |
| /** |
| * Create a new user info object. |
| * @param portalName The current portal name. |
| * @param layoutKey The layout information. |
| * @param aUser The CAuth user object. |
| */ |
| public PortalUserInfo(final String portalName, final String layoutKey, final User aUser) { |
| super(portalName, layoutKey); |
| this.user = aUser; |
| } |
| |
| /** |
| * @see org.apache.cocoon.portal.profile.PortalUser#isUserInRole(java.lang.String) |
| */ |
| public boolean isUserInRole(final String role) { |
| return user.isUserInRole(role); |
| } |
| } |
| } |