/* * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * The Original Code is available at http://www.abiquo.com/..... * * The Initial Developer of the Original Code is Soluciones Grid, S.L. (www.abiquo.com), * Consell de Cent 296, Principal 2�, 08007 Barcelona, Spain. * * No portions of the Code have been created by third parties. * All Rights Reserved. * * Contributor(s): ______________________________________. * * Graphical User Interface of this software may be used under the terms * of the Common Public Attribution License Version 1.0 (the "CPAL License", * available at http://cpal.abiquo.com/), in which case the * provisions of CPAL License are applicable instead of those above. In relation * of this portions of the Code, a Legal Notice according to Exhibits A and B of * CPAL Licence should be provided in any distribution of the corresponding Code * to Graphical User Interface. */ package com.abiquo.abiserver.business; import com.abiquo.abiserver.business.authentication.AuthenticationManagerDB; import com.abiquo.abiserver.business.authentication.IAuthenticationManager; import com.abiquo.abiserver.business.authorization.IAuthorizationManager; import com.abiquo.abiserver.pojo.authentication.Login; import com.abiquo.abiserver.pojo.authentication.LoginResult; import com.abiquo.abiserver.pojo.authentication.UserSession; import com.abiquo.abiserver.pojo.result.BasicResult; import com.abiquo.abiserver.pojo.result.DataResult; /** * This class provides authentication and authorization features, making a bridge between a class * that needs these features, and the classes that provides them. * * @author Oliver */ public class Proxy { // Singleton class private static Proxy instance; // Object that provides the authentication features private IAuthenticationManager authenticationManager; // Object that provides the authorization features private IAuthorizationManager authorizationManager; private Proxy() { // TODO Instantiate convenient authentication and authorization managers authenticationManager = new AuthenticationManagerDB(); } public static Proxy getInstance() { if (instance == null) instance = new Proxy(); return instance; } /** * Calls the Authentication Manager to perform a controlled login. * * @param login * @return A Session object with session information if the login process had success Null if * login action was unsuccessful */ public DataResult<LoginResult> doLogin(Login login) { return authenticationManager.doLogin(login); } /** * Calls the Authentication Manager to perform a controlled logout * * @param session The session that wants to logout from the server * @return */ public BasicResult doLogout(UserSession session) { return authenticationManager.doLogout(session); } /** * Calls the Authentication Manager to check if a session is valid * * @param session The session to check * @return true if a session is still valid */ public BasicResult checkSession(UserSession session) { return authenticationManager.checkSession(session); } /** * Calls the Authorization Manager to check if this method can be used without a session * * @param methodName * @return true if this method can be used without start a session */ public boolean doAuthorization(String methodName) { return authorizationManager.checkAuthorization(null, methodName); } /** * Calls the Authorization Manager to check if this session is authorized to use this method * * @param session * @param methodName * @return true if this session is authorized to use this method */ public boolean doAuthorization(UserSession session, String methodName) { // TODO return authorizationManager.checkAuthorization(session, methodName); return true; } }