Exemple #1
0
        public JsonResult Edit(Menu entidad)
        {
            try
            {
                var menu = _menuService.Get(entidad.Id);
                menu.Codigo      = entidad.Codigo;
                menu.Nombre      = entidad.Nombre;
                menu.Descripcion = entidad.Descripcion;

                //Actualizados
                var actualizados = menu.Items.Where(c => entidad.Items.Any(d => c.Id == d.Id));

                foreach (var actualizado in actualizados)
                {
                    var elemento = entidad.Items.FirstOrDefault(i => i.Id == actualizado.Id);
                    if (elemento != null)
                    {
                        actualizado.Nombre          = elemento.Nombre;
                        actualizado.Codigo          = elemento.Codigo;
                        actualizado.Descripcion     = elemento.Descripcion;
                        actualizado.EstadoId        = elemento.EstadoId;
                        actualizado.FuncionalidadId = elemento.FuncionalidadId;
                        actualizado.Icono           = elemento.Icono;
                        actualizado.Orden           = elemento.Orden;
                        actualizado.PadreCodigo     = elemento.PadreCodigo;
                        actualizado.TipoId          = elemento.TipoId;
                        actualizado.Url             = elemento.Url;
                    }
                }

                //Nuevos
                var nuevos = entidad.Items.Where(c => c.Id == 0);
                foreach (var nuevo in nuevos)
                {
                    menu.Items.Add(nuevo);
                }

                //Eliminados
                var eliminados = menu.Items.Where(c => entidad.Items.All(d => c.Id != d.Id)).ToList();
                _menuService.EliminarItems(eliminados);

                _menuService.Guardar(menu);

                var catalogoVista = new
                {
                    menu.Id,
                    menu.Codigo,
                    menu.Nombre,
                    menu.Descripcion,
                    Items = getItems(menu.Items)
                };

                return(Json(catalogoVista, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                var result = ManejadorExcepciones.HandleException(ex);
                return(StatusResponseHelper.JsonErrorServidor(result.Message, true));
            }
        }
Exemple #2
0
        public JsonResult Create(Menu entidad)
        {
            try
            {
                entidad.SistemaId = _application.GetCurrentSistema().Id;
                _menuService.Guardar(entidad);

                var menuVista = new
                {
                    entidad.Id,
                    entidad.Codigo,
                    entidad.Nombre,
                    entidad.Descripcion,
                    Items = getItems(entidad.Items)
                };

                var result = new JsonResult
                {
                    Data = menuVista,
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet
                };
                return(result);
            }
            catch (Exception ex)
            {
                var result = ManejadorExcepciones.HandleException(ex);
                return(StatusResponseHelper.JsonErrorServidor(result.Message, true));
            }
        }
Exemple #3
0
        //[ValidateAntiForgeryToken]
        public JsonResult Create(Catalogo catalogo)
        {
            try
            {
                catalogo.SistemaId = _application.GetCurrentSistema().Id;
                foreach (var item in catalogo.Items)
                {
                    item.CodigoCatalogo = catalogo.Codigo;
                    item.Estado         = true;
                }
                _catalogoService.Guardar(catalogo, new List <ItemCatalogo>());

                var catalogoVista = new
                {
                    catalogo.Id,
                    catalogo.Codigo,
                    catalogo.Nombre,
                    catalogo.Descripcion,
                    catalogo.FechaCreacion,
                    Items = getItems(catalogo.Items)
                };

                var result = new JsonResult
                {
                    Data = catalogoVista,
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet
                };
                return(result);
            }
            catch (Exception ex)
            {
                var result = ManejadorExcepciones.HandleException(ex);
                return(StatusResponseHelper.JsonErrorServidor(result.Message, true));
            }
        }
Exemple #4
0
        public JsonResult DeleteConfirmed(int id)
        {
            try
            {
                _menuService.Eliminar(id);

                return(Json(true, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                var result = ManejadorExcepciones.HandleException(ex);
                return(StatusResponseHelper.JsonErrorServidor(result.Message, true));
            }
        }
Exemple #5
0
        /// <summary>
        /// Autentificar usuario
        /// </summary>
        /// <param name="usuario"></param>
        /// <param name="ipClient"></param>
        /// <param name="codigoRol"></param>
        /// <returns></returns>
        private JsonResult AutentificarUsuario(Usuario usuario, string ipClient, string codigoRol)
        {
            try
            {
                //TODO. JSA. Revisar el flujo si al momento de seleccionar un rol, este es externo, Por lo tanto no lo va tener asociado
                //al usuario.  (Fallas Seguridad)
                //opcion 1. Sincrionizar rol_usuario, (externoas y internos)
                //opcion 2. Pasar informacion en el model de la vista tipo (externo y interno), si es un rol externo pasar si verificacion o
                //recuperar de una sesion los roles externos del usuario

                JsonResult result;

                Rol rol = _rolService.GetList().Where(c => c.Codigo == codigoRol).FirstOrDefault();

                if (rol == null)
                {
                    string error = string.Format("No existe el rol con el codigo {0}", codigoRol);
                    result = StatusResponseHelper.JsonNoAutenticado(error, false);
                    return(result);
                }

                if (!rol.EsExterno)
                {
                    rol = usuario.Roles.Where(c => c.Codigo == codigoRol).SingleOrDefault();

                    if (rol == null)
                    {
                        string error = string.Format("El usuario {0}, no tiene asociado el rol con el codigo {1}", usuario.Cuenta, codigoRol);
                        result = StatusResponseHelper.JsonNoAutenticado(error, false);
                        return(result);
                    }
                }


                //Autentificar usuario
                //Obtener la direccion IP del cliente
                string ipAddress = ipClient;
                if (string.IsNullOrWhiteSpace(ipAddress))
                {
                    ipAddress = RequestHelpers.GetClientIpAddress(this.HttpContext.Request);
                }

                var claveEncriptar         = AppSettings.Get <string>(ConstantesWebConfig.CLAVE_ENCRYPTACION);
                var minutosExpiracionToken = Convert.ToInt32(AppSettings.Get <string>(ConstantesWebConfig.TOKEN_TIEMPOSESION));

                InitializeUserAccessServiciosWeb initializeUserAccessServiciosWeb = new InitializeUserAccessServiciosWeb();

                initializeUserAccessServiciosWeb.usuario   = usuario;
                initializeUserAccessServiciosWeb.rol       = rol;
                initializeUserAccessServiciosWeb.ipAddress = ipAddress;

                _accessService.InitializeUserAccess(initializeUserAccessServiciosWeb);

                var sesion = _application.GetCurrentSession();

                var token = Token.GenerateToken(Base64.Encode(claveEncriptar), usuario.Id, rol.Id, sesion.Id, minutosExpiracionToken);

                //FormsAuthentication.SetAuthCookie(usuario.Cuenta, false);

                var mensaje =
                    string.Format("El usuario {0}, ingresa de forma exitosa al sistema", usuario);
                //Registro Auditoria - Hora de inicio de sesión en el sistema.
                logAuditoria.Write(FUNCIONALIDAD_GESTION_USUARIOS.ACCION_LOGIN, mensaje);

                //Direccionar a la URL segun la configuración del ROL, o direccionar a URL Default
                //string URL = FormsAuthentication.DefaultUrl;
                //if (!string.IsNullOrWhiteSpace(rol.Url))
                //{
                //    URL = rol.Url;
                //}

                /*var miFarmacia = _iFarmaciaService.GetMisFarmacias().Select(mf => mf.Farmacia).FirstOrDefault();
                 * String fileBase64 = miFarmacia == null || miFarmacia.Logo == null
                 || (!rol.Codigo.Equals(ConstantesRoles.ROL_FARMACEUTICO_PROPIETARIO) && !rol.Codigo.Equals(ConstantesRoles.ROL_FARMACEUTICO2)) ?
                 || null : DataUrl.FromFileTypeAndBytes(miFarmacia.FileTypeLogo, miFarmacia.Logo);*/

                var rolView     = new { codigoRol = rol.Codigo, rolNombre = rol.Nombre, rolEsadministrador = rol.EsAdministrador };
                var usuarioView = new
                {
                    usuId             = usuario.Id,
                    version           = usuario.VersionRegistro,
                    usuNombres        = usuario.Nombres,
                    usuApellidos      = usuario.Apellidos,
                    usuIdentificacion = usuario.PersonaId,
                    usuDireccion      = "",
                    usuUsuario        = usuario.Cuenta,
                    usuClave          = "",
                    usuCorreo         = usuario.Correo,
                    usuEstado         = usuario.Estado,
                    //ImagenPerfil = fileBase64
                };

                result = new JsonResult
                {
                    Data = new
                    {
                        mensaje,
                        rol         = rolView,
                        usuario     = usuarioView,
                        miToken     = token,
                        autenticado = true
                    },
                    //ContentType = contentType,
                    //ContentEncoding = contentEncoding,
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet
                };
                return(result);
            }
            catch (Exception ex)
            {
                var result = ManejadorExcepciones.HandleException(ex);

                //TODO: DEPENDENCIAS DE REINICIAR. MEJOR GUARDAR EN SESSION LA IDENTIDAD
                FormsAuthentication.SignOut();

                Session.Clear();

                var result1 = StatusResponseHelper.JsonErrorServidor(result.Message, true);
                return(result1);
            }
        }
Exemple #6
0
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            //1. SISTEMA
            //   1.1 Funcionalidades
            //       1.1.1 Acciones
            //   1.2 Roles
            //       1.2.1 Permisos => Acciones => Funcionalidades
            //   1.3 Menus
            //      1.3.1. Items Menu => Funcionalidad

            //APLICAR AUTORIZACION BASADO EN EL NOMBRE DEL CONTROLADOR
            //controller/accion/parametros
            //{controller}/{action}/{id}
            //Mapear los nombres de los controllers a los menus y estos a las funcionalidades



            if (filterContext == null)
            {
                throw new ArgumentNullException("AuthorizeFilterAttribute");
            }


            //1. Saltar autorizacion, si el controlador o la accion tiene el atributo AllowAnonymousAttribute
            bool isAllowAnonymousAttribute =
                filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), inherit: true) ||
                filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(
                    typeof(AllowAnonymousAttribute), inherit: true);


            if (isAllowAnonymousAttribute)
            {
                return;
            }

            //2. Saltar autorizacion.
            //2.1 Controladores o acciones que no se debe verificar
            //2.2 Atributos explicitos en los controladores que indica que no se debe verificar la autorizacion

            if (SecurityControllerHelper.SkipControllerSecurity(filterContext.ActionDescriptor.ControllerDescriptor))
            {
                //log.InfoFormat("No aplicar autorización al controllador ", filterContext.ActionDescriptor.ControllerDescriptor.ControllerName);
                return;
            }

            if (SecurityControllerHelper.SkipActionSecurity(filterContext.ActionDescriptor))
            {
                //log.InfoFormat("No aplicar autorización a la action {0} del controller {1}", filterContext.ActionDescriptor.ActionName, filterContext.ActionDescriptor.ControllerDescriptor.ControllerName);
                return;
            }

            //Rol Administrador, tiene todos los permisos
            var _application = ServiceLocator.Current.GetInstance <IApplication>();
            var rol          = _application.GetCurrentRol();

            if (rol.EsAdministrador)
            {
                return;
            }

            //TODO: JSA, PARA MEJORAR RENDIMIENTO.. SE DEBE GUARDAR
            // (Controller/Action => Funcionalidad/accion Asociada), puesto que verifica esta combinacion por cada peticion al sistema.

            var servicioFuncionalidad = ServiceLocator.Current.GetInstance <IFuncionalidadService>();

            var funcionalidadRelacionada = SecurityControllerHelper.ControllerToFunctionality(servicioFuncionalidad.GetFuncionalidades(),
                                                                                              filterContext.ActionDescriptor.ControllerDescriptor);

            if (funcionalidadRelacionada == null)
            {
                var mensaje = string.Format("No existe funcionalidades asociadas al controlador {0}",
                                            filterContext.ActionDescriptor.ControllerDescriptor.ControllerName);
                filterContext.Result = StatusResponseHelper.JsonErrorServidor(mensaje, false);
            }
            else
            {
                var accion = SecurityControllerHelper.ActionControllerToActionFunctionality(funcionalidadRelacionada, filterContext.ActionDescriptor);

                var servicio = ServiceLocator.Current.GetInstance <IAuthorizationService>();
                if (!servicio.Authorize(accion))
                {
                    filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden;

                    var mensaje = string.Format("Acceso restringido a la funcionalidad [{0}], en la acción de [{1}]",
                                                funcionalidadRelacionada.Nombre, accion.Nombre);

                    filterContext.Result = StatusResponseHelper.JsonNoAutorizado(mensaje, true);
                }
            }
        }