blob: f6e7fd2c6cd732881960d391d16ca8aff9a7feb1 [file] [log] [blame]
/*
* 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;
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.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
/**
* Utility class that can be used from flow script to access the different
* application functions of Cocoon Authentication.
* The easiest way to use this class in flow script is to create an instance
* using cocoon.createObject():
* var util = cocoon.createObject("org.apache.cocoon.auth.ApplicationUtil");
* and then you can invoke one of the instance methods like
* var user = util.getUser();
*
* @version $Id$
*/
public class ApplicationUtil
implements Contextualizable {
/** The Avalon 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;
}
/**
* Return the current user.
* @param objectModel The object model of the current request.
* @return The current user or null.
*/
public static User getUser(final Map objectModel) {
return (User)objectModel.get(ApplicationManager.USER);
}
/**
* Return the current application.
* @param objectModel The object model of the current request.
* @return The current application or null.
*/
public static Application getApplication(final Map objectModel) {
return (Application)objectModel.get(ApplicationManager.APPLICATION);
}
/**
* Return the current user data.
* @param objectModel The object model of the current request.
* @return The current user data or null.
*/
public static Object getData(final Map objectModel) {
return objectModel.get(ApplicationManager.APPLICATION_DATA);
}
/**
* Checks if the user has the given role.
* First {@link User#isUserInRole(String)} is invoked. If the result is false,
* the {@link Request#isUserInRole(java.lang.String)} is called.
*
* @param user The user to test.
* @param role The role.
* @param objectModel The Cocoon object model.
* @return This returns true, if the user has the role; otherwise false is returned.
*/
public static boolean isUserInRole(final User user, final String role, final Map objectModel) {
boolean result = false;
if (user != null) {
result = user.isUserInRole(role);
}
if ( !result ) {
final Request req = ObjectModelHelper.getRequest(objectModel);
result = req.isUserInRole(role);
}
return result;
}
/**
* Return the current user.
* @return The current user or null.
*/
public User getUser() {
final Map objectModel = ContextHelper.getObjectModel(this.context);
return (User)objectModel.get(ApplicationManager.USER);
}
/**
* Return the current application.
* @return The current application or null.
*/
public Application getApplication() {
final Map objectModel = ContextHelper.getObjectModel(this.context);
return (Application)objectModel.get(ApplicationManager.APPLICATION);
}
/**
* Return the current user data.
* @return The current user data or null.
*/
public Object getData() {
final Map objectModel = ContextHelper.getObjectModel(this.context);
return objectModel.get(ApplicationManager.APPLICATION_DATA);
}
/**
* Checks if the user has the given role.
* First {@link User#isUserInRole(String)} is invoked. If the result is false,
* the {@link Request#isUserInRole(java.lang.String)} is called.
*
* @param user The user to test.
* @param role The role.
* @return This returns true, if the user has the role; otherwise false is returned.
*/
public boolean isUserInRole(final User user, final String role) {
final Map objectModel = ContextHelper.getObjectModel(this.context);
return isUserInRole(user, role, objectModel);
}
}