udistrital / Cumplidos_y_certificaciones_documentacion

0 stars 0 forks source link

Ajustes de pruebas de carga y seguridad del módulo de históricos cumplidos CPS - Parte II #66

Closed JuanCamiloMartinezLopez closed 4 months ago

JuanCamiloMartinezLopez commented 4 months ago

Se requiere realizar los siguientes ajustes resultantes de las pruebas de carga y seguridad:

  1. Investigar e implementar (de ser posible totalmente) guards para prevenir el routing directo sin el rol/permisos en el cliente de cumplidos CPS.
  2. Eliminar variables, servicios y referencia de nuxeo, la única conexión a nuxeo es por el gestor_documental.

Sub Tareas

Criterios de aceptación

Requerimientos

No aplica

Definition of Ready - DoR

Definition of Done - DoD - Desarrollo

stevencol commented 4 months ago

Se inicio con la actividad, No se pudo aplicar a todas las rutas como se deseaba debido a la falta de certeza sobre los roles con permisos en otras rutas, ya que algunos usuarios no tienen roles asignados.

Token perosnal: image } Token Pruebas: image

stevencol commented 4 months ago

Se eliminaron variables de entorno de nuxeo. en environment, environment_test y environment_prod

stevencol commented 4 months ago

Para la protección de rutas se propone , crear servico para obtener lo roles del token y así dar acceso las rutas;

Service

angular.module('contractualClienteApp').factory('RoleCheckService', ['$location', '$q', 'token_service', function($location, $q, token_service) {
    var RoleCheckService = {};

    RoleCheckService.checkRole = function(roles) {
        var deferred = $q.defer();

        var playLoad = token_service.getPayload();

        var userRoles = playLoad.role;

        if(!playLoad || !playLoad.role){

            $location.path("/");
            deferred.reject();
            return deferred.promise;
        }

        var hasPermission = roles.some(function(role) {
            return userRoles.includes(role);
        });

        console.log("Has Permission:", hasPermission);

        if (hasPermission) {
            deferred.resolve();
        } else {
            $location.path('/');
            deferred.reject();
        }

        return deferred.promise;
    };

    return RoleCheckService;
}]);

App

 .when("/seguimientoycontrol/tecnico/historico_pagos", {
          templateUrl: "views/seguimientoycontrol/tecnico/historico_cumplidos.html",
          controller: "HistoricoCumplidosCtrl",
          controllerAs: "HistoricoCumplidos",

          resolve: {
              checkRole: ['RoleCheckService', function(RoleCheckService) {
                  return RoleCheckService.checkRole([
                      "ORDENADOR_DEL_GASTO",
                      "SUPERVISOR",
                      "CONTROL_INTERNO"
                  ]);
              }]
          }
      }
stevencol commented 4 months ago

Propuesta 2

Servicio

angular.module('contractualClienteApp')
  .factory('NavigationService', ['$rootScope', function($rootScope) {
    var internalNavigation = false;

    $rootScope.$on('$routeChangeSuccess', function(event, current, previous) {
      internalNavigation = true; 
    });

    console.log("Se ejecutoEl service");

    function checkNavigation() {
      return internalNavigation;
    }

    return {
      checkNavigation: checkNavigation
    };
  }]);

implementacion

  .when("/seguimientoycontrol/tecnico/historico_pagos", {
          templateUrl:
            "views/seguimientoycontrol/tecnico/historico_cumplidos.html",
          controller: "HistoricoCumplidosCtrl",
          controllerAs: "HistoricoCumplidos",
          resolve: {
            checkNavigation: ['NavigationService', '$location', function(NavigationService, $location) {
              if (!NavigationService.checkNavigation()) {
                $location.path('/');
              }
            }]
          }

        })
stevencol commented 4 months ago

feat: Eliminación de variables de Nuxeo en environment.js y environment_test.js

Se eliminaron las variables de Nuxeo en los archivos environment.js y environment_test.js.

JuanCamiloMartinezLopez commented 4 months ago

@stevencol Buen trabajo.