Package com.cosmo.manager.pages

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

package com.cosmo.manager.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.manager.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.