Package com.cosmo.web.pages

Source Code of com.cosmo.web.pages.SecurityTestsPage

package com.cosmo.web.pages;

import java.util.ArrayList;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.cosmo.security.Activity;
import com.cosmo.security.Role;
import com.cosmo.security.annotations.AuthenticationRequired;
import com.cosmo.security.auth.AuthorizationException;
import com.cosmo.security.auth.AuthorizationFactory;
import com.cosmo.security.auth.impl.PostgreSqlAuthorizationImpl;
import com.cosmo.ui.Page;
import com.cosmo.ui.PageContext;
import com.cosmo.ui.PageContext.ContentColumns;
import com.cosmo.ui.PageContext.PageLayout;
import com.cosmo.ui.controls.BreadcrumbsControl;
import com.cosmo.ui.controls.BreadcrumbsItem;
import com.cosmo.ui.controls.DynamicMessageControl;
import com.cosmo.ui.controls.DynamicMessageControl.MessageTypes;
import com.cosmo.ui.controls.HeaderControl;
import com.cosmo.ui.controls.Icon;
import com.cosmo.ui.controls.XhtmlControl;

/**
* P�gina ejecuta todos los tests de seguridad para comprobar el correcto funcionamiento del m�dulo de seguridad de Cosmo.
*
* @author Gerard Llort
*/
@AuthenticationRequired
@WebServlet( description = "Tests de seguretat", urlPatterns = { "/SecurityTestsPage" } )
public class SecurityTestsPage extends Page
{
   /** Serial Version UID */
   private static final long serialVersionUID = -1863993648152701220L;
  
   @Override
   public PageContext initPageEvent(PageContext pc, HttpServletRequest request, HttpServletResponse response)
   {
      pc.setLayout(PageLayout.TwoColumnsLeft);
      pc.setTitle("Cosmo - Tests de seguretat");
     
      BreadcrumbsControl navbar = new BreadcrumbsControl(getWorkspace());
      navbar.addItem(new BreadcrumbsItem("Inici", "HomePage", Icon.ICON_IMAGE_HOME));
      navbar.addItem(new BreadcrumbsItem("Tests de seguretat"));
      pc.addContent(navbar, ContentColumns.MAIN);
     
      HeaderControl header = new HeaderControl(getWorkspace(), "head");
      header.setTitle("Tests de seguretat");
      pc.addContent(header, ContentColumns.MAIN);

      XhtmlControl xhtml = new XhtmlControl(getWorkspace(), "content");
      xhtml.appendParagraph("Aquesta p�gina cont� els tests per verificar que el m�dul de seguretat de de '''Cosmo Framework''' est� funcionant correctament.");
      pc.addContent(xhtml, ContentColumns.MAIN);
     
      // Informaci� de l'usuari autenticat
     
      XhtmlControl xUser = new XhtmlControl(getWorkspace(), "xUser");
      pc.addContent(xUser, ContentColumns.MAIN);
     
      // Informaci�n sobre roles
     
      XhtmlControl xhtmlRoles = new XhtmlControl(getWorkspace(), "content-roles");
      pc.addContent(xhtmlRoles, ContentColumns.MAIN);
     
      DynamicMessageControl msgRoles = new DynamicMessageControl(getWorkspace(), "msg-roles");
      msgRoles.setType(MessageTypes.Warning);
      pc.addContent(msgRoles, ContentColumns.MAIN);
     
      // Roles efectivos
     
      XhtmlControl xRolList = new XhtmlControl(getWorkspace(), "xRolList");
      pc.addContent(xRolList, ContentColumns.MAIN);
     
      DynamicMessageControl xRolMsg = new DynamicMessageControl(getWorkspace(), "xRolMsg");
      xRolMsg.setType(MessageTypes.Warning);
      pc.addContent(xRolMsg, ContentColumns.MAIN);
     
      // Informaci�n sobre actividades
     
      XhtmlControl xhtmlAct = new XhtmlControl(getWorkspace(), "content-act");
      pc.addContent(xhtmlAct, ContentColumns.MAIN);
     
      DynamicMessageControl msgAct = new DynamicMessageControl(getWorkspace(), "msg-act");
      msgAct.setType(MessageTypes.Warning);
      pc.addContent(msgAct, ContentColumns.MAIN);
     
      // Permisos efectivos
     
      XhtmlControl xhtmlActLst = new XhtmlControl(getWorkspace(), "act-list");
      pc.addContent(xhtmlActLst, ContentColumns.MAIN);
     
      DynamicMessageControl xActMsg = new DynamicMessageControl(getWorkspace(), "xActMsg");
      xActMsg.setType(MessageTypes.Warning);
      pc.addContent(xActMsg, ContentColumns.MAIN);
     
      return pc;
   }
  
   @Override
   public PageContext loadPageEvent(PageContext pc, HttpServletRequest request, HttpServletResponse response)
   {
      ArrayList<String> list;
     
      if (getWorkspace().isValidUserSession())
      {
         // Muestra los detalles del usuario actual
         list = new ArrayList<String>();
         list.add("Login: " + getUserSession().getCurrentUser().getLogin());
         list.add("Mail: " + getUserSession().getCurrentUser().getMail());
         list.add("Nom: " + getUserSession().getCurrentUser().getName());

         XhtmlControl xUser = (XhtmlControl) pc.getControl("xUser");
         xUser.clear();
         xUser.appendHeadder(Icon.render(Icon.ICON_IMAGE_USER) + " usuari autenticat", 4).
               appendParagraph("A continuaci� es mostren les dades de l'usuari autenticat actualment.").
               appendUnorderedList(list, "alt");
        
         // Muestra los roles del usuario
         XhtmlControl xhtmlRoles = (XhtmlControl) pc.getControl("content-roles");
         xhtmlRoles.clear();
         xhtmlRoles.appendHeadder(Icon.render(Icon.ICON_IMAGE_GROUP) + " Rols d'usuari", 4).
                    appendParagraph("La seg�ent llista cont� els rols que t� l'usuari:");
         if (!getUserSession().getRoles().isEmpty())
         {
            xhtmlRoles.appendUnorderedList(getUserSession().getRoles(), "alt");
         }
         else
         {
            DynamicMessageControl msgRoles = (DynamicMessageControl) pc.getControl("msg-roles");
            msgRoles.setMessage("L'usuari " + XhtmlControl.formatBold(getUserSession().getCurrentUser().getLogin()) + " no t� cap rol associat.");
            msgRoles.setVisible(true);
         }
        
         // Muestra los roles efectivos del usuario
         try
         {
            // Se instancia s�lo para disponer de la lista completa de roles
            PostgreSqlAuthorizationImpl auth = (PostgreSqlAuthorizationImpl) AuthorizationFactory.getInstance(getWorkspace());
           
            // Se recorre la lista completa de actividades y se comprueba si el usuario dispone o no de permiso sobre cada una de ellas
            ArrayList<String> lst = new ArrayList<String>();
            for (Role role : auth.getRoles())
            {
               // Comprueba si el usuario dispone de permisos para la actividad
               lst.add((getUserSession().isInRole(role.getId()) ? Icon.render(Icon.ICON_IMAGE_OK_SIGN, Icon.ICON_SIZE_SMALL, Icon.ICON_COLOR_GREEN) : Icon.render(Icon.ICON_IMAGE_REMOVE_SIGN, Icon.ICON_SIZE_SMALL, Icon.ICON_COLOR_RED)) + " " +
                        role.getId() + " (" + role.getDescription() + ")");
            }
           
            XhtmlControl xRolList = (XhtmlControl) pc.getControl("xRolList");
            xRolList.clear();
            xRolList.appendHeadder(Icon.render(Icon.ICON_IMAGE_CHECK) + " Rols efectius d'usuari", 4).
                     appendParagraph("La seg�ent llista mostra els rols efectius de l'usuari. S'agafa la llista complerta de rols i un per un es comprova per l'usuari a trav�s la API de seguretat.").
                     appendUnorderedList(lst, "alt");
         }
         catch (AuthorizationException ex)
         {
            DynamicMessageControl xRolMsg = (DynamicMessageControl) pc.getControl("xRolMsg");
            xRolMsg.setMessage(ex.getMessage());
            xRolMsg.setVisible(true);
         }
        
         // Muestra los permisos del usuario
         XhtmlControl xhtmlAct = (XhtmlControl) pc.getControl("content-act");
         xhtmlAct.clear();
         xhtmlAct.appendHeadder(Icon.render(Icon.ICON_IMAGE_SHARE) + " Permisos de l'usuari", 4).
                  appendParagraph("La seg�ent llista cont� les activitats sobre les que l'usuari t� permisos especificats:");
         if (!getUserSession().getPermissions().isEmpty())
         {
            xhtmlAct.appendUnorderedList(getUserSession().getPermissions(), "alt");
         }
         else
         {
            DynamicMessageControl msgAct = (DynamicMessageControl) pc.getControl("msg-act");
            msgAct.setVisible(true);
           
            if (!getUserSession().isSuperUser())
            {
               msgAct.setMessage("L'usuari " + XhtmlControl.formatBold(getUserSession().getCurrentUser().getLogin()) + " no t� perm�s d'execuci� per cap activitat.");
            }
            else
            {
               msgAct.setMessage("L'usuari " + XhtmlControl.formatBold(getUserSession().getCurrentUser().getLogin()) + " t� perm�s d'execuci� per totes les activitats (SuperUser).");
            }
         }
        
         // Muestra los permisos efectivos del usuario
         try
         {
            // Se instancia s�lo para disponer de la lista completa de permisos
            PostgreSqlAuthorizationImpl auth = (PostgreSqlAuthorizationImpl) AuthorizationFactory.getInstance(getWorkspace());
           
            // Se recorre la lista completa de actividades y se comprueba si el usuario dispone o no de permiso sobre cada una de ellas
            ArrayList<String> lst = new ArrayList<String>();
            for (Activity activity : auth.getActivities())
            {
               // Comprueba si el usuario dispone de permisos para la actividad
               lst.add((getUserSession().isActivityAllowed(activity.getId()) ? Icon.render(Icon.ICON_IMAGE_OK_SIGN, Icon.ICON_SIZE_SMALL, Icon.ICON_COLOR_GREEN) : Icon.render(Icon.ICON_IMAGE_REMOVE_SIGN, Icon.ICON_SIZE_SMALL, Icon.ICON_COLOR_RED)) + " " +
                        activity.getId() + " (" + activity.getDescription() + ")");
            }
           
            XhtmlControl xhtmlActLst = (XhtmlControl) pc.getControl("act-list");
            xhtmlActLst.clear();
            xhtmlActLst.appendHeadder(Icon.render(Icon.ICON_IMAGE_CHECK) + " Permisos efectius d'usuari", 4).
                        appendParagraph("La seg�ent llista mostra els permisos efectius de l'usuari. S'agafa la llista complerta d'activitats i una per una es comprova per l'usuari a trav�s la API de seguretat.").
                        appendUnorderedList(lst, "alt");
         }
         catch (AuthorizationException ex)
         {
            DynamicMessageControl xActMsg = (DynamicMessageControl) pc.getControl("xActMsg");
            xActMsg.setMessage(ex.getMessage());
            xActMsg.setVisible(true);
         }
      }
     
      return pc;
   }
  
   @Override
   public PageContext formSendedEvent(PageContext pc, HttpServletRequest request, HttpServletResponse response)
   {
      return pc;
   }
  
   @Override
   public PageContext pageException(PageContext pc, Exception exception)
   {
      pc.showException(getWorkspace(), exception);
     
      return pc;
   }
}
TOP

Related Classes of com.cosmo.web.pages.SecurityTestsPage

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.