Package com.cosmo.security.auth

Source Code of com.cosmo.security.auth.AuthorizationFactory

package com.cosmo.security.auth;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

import com.cosmo.Workspace;
import com.cosmo.util.PluginProperties;
import com.cosmo.util.StringUtils;

/**
* Interface para los proveedores de autorizaci�n de Cosmo.
*
* @author Gerard Llort
*/
public abstract class AuthorizationFactory
{
   private static Authorization instance = null;
  
  
   //==============================================
   // Methods
   //==============================================
  
   /**
    * Carga la informaci�n de autorizaci�n de un usuario determinado.
    *
    * @param login Una cadena que contiene el <em>login</em> del usuario.
    *
    * @throws AuthorizationException
    */
   //public abstract SecurityInfo loadAuthorizationData(String login, SecurityInfo si) throws AuthorizationException;
  
   /**
    * Determina si un usuario tiene un rol especifico.
    *
    * @param login Una cadena que contiene el <em>login</em> del usuario.
    * @param role Una cadena que contiene el nombre (ID) del rol.
    *
    * @return {@code true} si el usuario tiene asignado el rol o {@code false} en cualquier otro caso.
    */
   //public abstract boolean isUserInRole(String login, String role) throws AuthorizationException;
  
   /**
    * Determina si un usuario tiene un rol especifico entre una lista de roles.
    *
    * @param login Una cadena que contiene el <em>login</em> del usuario.
    * @param roles Un array con los identificadores de rol.
    *
    * @return {@code true} si el usuario tiene asignado al menos un rol de los contenidos en la lista o {@code false} en cualquier otro caso.
    *
    * @throws AuthorizationException
    */
   //public abstract boolean isUserInRole(String login, ArrayList<String> roles) throws AuthorizationException;

   /**
    * Determina si un usuario tiene permiso para ejecutar determinada actividad.
    *
    * @param login Una cadena que contiene el <em>login</em> del usuario.
    * @param activityId Una cadena que contiene el nombre (ID) de la actividad.
    *
    * @return @return {@code true} si el usuario tiene permiso para ejecutar la actividad o {@code false} en cualquier otro caso.
    */
   // public abstract boolean isActivityGranted(String login, String activityId);

   /**
    * Obtiene la lista de roles asignados al usuario.
    *
    * @param login Una cadena que contiene el <em>login</em> del usuario.
    *
    * @return Un array con los nombres (IDs) de los roles asignados al usuario.
    */
   // public abstract ArrayList<Role> getRolesByUser(String login) throws AuthorizationException;
  
   //==============================================
   // Static members
   //==============================================
  
   /**
    * Devuelve una instancia de {@link AuthorizationFactory} convenientemente instanciada y con
    * el proveedor de autenticaci�n de usuarios cargado.
    *
    * @param workspace Una instancia de {@link Workspace} que representa el workspace actual.
    * @return Una instancia �nica de {@link AuthorizationFactory} (sigleton).
    *
    * @throws AuthorizationException
    */
   public static Authorization getInstance(Workspace workspace) throws AuthorizationException
   {
      if (instance == null)
      {
         instance = loadProvider(workspace);
      }

      return instance;
   }
  
  
   //==============================================
   // Private members
   //==============================================
  
   /**
    * Carga el controlador de usuarios.
    *
    * @throws AuthorizationException
    */
   private static Authorization loadProvider(Workspace workspace) throws AuthorizationException
   {
      PluginProperties agent;
      String className = "-- no authorization provider defined in proprties --";
      Authorization provider;
     
      // Obtiene el agente de autorizaci�n
      agent = workspace.getProperties().getSecurityProperties().getAuthorizationAgent();
      if (agent == null)
      {
         throw new AuthorizationException("Security Configuration Exception: No authorization agent found");
      }
     
      // Obtiene el driver de autorizaci�n
      className = agent.getModuleClass();
      if (StringUtils.isNullOrEmptyTrim(className))
      {
         throw new AuthorizationException("Security Configuration Exception: No authorization driver found");
      }
     
      try
    {
         Class<?> cls = Class.forName(className);
         Constructor<?> cons = cls.getConstructor(Workspace.class);
         provider = (Authorization) cons.newInstance(workspace);
        
         return provider;
    }
      catch (NoSuchMethodException ex)
    {
         throw new AuthorizationException("NoSuchMethodException: " + className, ex);
      }
      catch (InvocationTargetException ex)
    {
         throw new AuthorizationException("InvocationTargetException: " + className, ex);
      }
    catch (ClassNotFoundException ex)
    {
         throw new AuthorizationException("ClassNotFoundException: " + className, ex);
    }
      catch (InstantiationException ex)
      {
         throw new AuthorizationException("InstantiationException: " + className, ex);
      }
      catch (IllegalAccessException ex)
      {
         throw new AuthorizationException("IllegalAccessException: " + className, ex);
      }
   }
}
TOP

Related Classes of com.cosmo.security.auth.AuthorizationFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.