示例#1
0
        public async Task <bool> ValidateModulePermissions(IGetHelper getHelper, Guid moduloId, eTipoPermiso tipoPermiso)
        {
            permisosModulo = new UsuarioModulo()
            {
                ModuloID         = moduloId,
                PermisoEscritura = false,
                PermisoImprimir  = false,
                PermisoLectura   = false
            };

            if (token.Administrador == "SA" || token.Administrador == "GA")
            {
                permisosModulo.PermisoEscritura = true;
                permisosModulo.PermisoImprimir  = true;
                permisosModulo.PermisoLectura   = true;
                return(true);
            }

            if (token.UsuariosModulos.Contains(moduloId))
            {
                return(true);
            }

            var permisos = await getHelper.GetUsuarioModuloByUsuarioAndModuloIDAsync(token.UsuarioID, moduloId);

            if (permisos == null)
            {
                TempData["toast"] = "No tiene privilegios en el módulo";
                return(false);
            }

            permisosModulo = permisos;

            switch (tipoPermiso)
            {
            case eTipoPermiso.PermisoLectura:
                if (!permisos.PermisoLectura)
                {
                    TempData["toast"] = "No tiene privilegios de acceso al módulo";
                    return(false);
                }
                break;

            case eTipoPermiso.PermisoEscritura:
                if (!permisos.PermisoLectura || !permisos.PermisoEscritura)
                {
                    TempData["toast"] = "No tiene privilegios de escritura en el módulo";
                    return(false);
                }
                break;

            case eTipoPermiso.PermisoImprimir:
                if (!permisos.PermisoLectura || !permisos.PermisoImprimir)
                {
                    TempData["toast"] = "No tiene privilegios de imprimir en el módulo";
                    return(false);
                }
                break;
            }

            return(true);
        }