コード例 #1
0
        public async Task <IActionResult> Details(Guid?id)
        {
            var validateToken = await ValidatedToken(_configuration, _getHelper, "contacto");

            if (validateToken != null)
            {
                return(validateToken);
            }

            if (!await ValidateModulePermissions(_getHelper, moduloId, eTipoPermiso.PermisoLectura))
            {
                return(RedirectToAction(nameof(Index)));
            }

            if (id == null)
            {
                TempData["toast"] = "Identificacor incorrecto, verifique.";
                return(RedirectToAction(nameof(Index)));
            }

            var usuario = await _context.Usuarios
                          .Include(c => c.Administrador)
                          .Include(c => c.Colaborador)
                          .FirstOrDefaultAsync(u => u.UsuarioID == id);

            if (usuario == null)
            {
                TempData["toast"] = "Identificacor incorrecto, verifique.";
                return(RedirectToAction(nameof(Index)));
            }

            var usuarioModulos = await(from um in _context.UsuariosModulos
                                       join m in _context.Modulos on um.ModuloID equals m.ModuloID
                                       where um.UsuarioID == id && m.Activo == true &&
                                       m.ModuloPadreID != Guid.Empty
                                       select um)
                                 .Include(m => m.Modulo)
                                 .OrderBy(m => m.Modulo.Descripcion)
                                 .ToListAsync();

            var usuarioDetails = new UsuarioDetailsViewModelUsuario()
            {
                Activo            = usuario.Activo,
                Administrador     = usuario.Administrador,
                AdministradorID   = usuario.AdministradorID,
                Colaborador       = usuario.Colaborador,
                ColaboradorID     = usuario.ColaboradorID,
                FechaInicio       = usuario.FechaInicio,
                FechaTermino      = usuario.FechaTermino,
                FechaUltimoAcceso = usuario.FechaUltimoAcceso,
                PermisoEscritura  = permisosModulo.PermisoEscritura,
                UsuarioID         = usuario.UsuarioID,
                UsuarioModulos    = usuarioModulos
            };

            return(View(usuarioDetails));
        }
コード例 #2
0
        public async Task <IActionResult> EditPermissions(UsuarioDetailsViewModelUsuario usuarioDetailsViewModelUsuario)
        {
            var validateToken = await ValidatedToken(_configuration, _getHelper, "contacto");

            if (validateToken != null)
            {
                return(validateToken);
            }

            if (!await ValidateModulePermissions(_getHelper, moduloId, eTipoPermiso.PermisoEscritura))
            {
                return(RedirectToAction(nameof(Index)));
            }

            if (usuarioDetailsViewModelUsuario.UsuarioModulos != null)
            {
                foreach (var modulo in usuarioDetailsViewModelUsuario.UsuarioModulos)
                {
                    if (modulo.UsuarioModuloID == Guid.Empty)
                    {
                        if (modulo.PermisoEscritura || modulo.PermisoImprimir || modulo.PermisoLectura)
                        {
                            _context.UsuariosModulos.Add(new UsuarioModulo {
                                ModuloID         = modulo.ModuloID,
                                PermisoEscritura = modulo.PermisoEscritura,
                                PermisoImprimir  = modulo.PermisoImprimir,
                                PermisoLectura   = modulo.PermisoLectura,
                                UsuarioID        = usuarioDetailsViewModelUsuario.UsuarioID,
                                UsuarioModuloID  = Guid.NewGuid()
                            });
                        }
                    }
                    else
                    {
                        var moduloExist = _context.UsuariosModulos.Find(modulo.UsuarioModuloID);
                        if (moduloExist != null)
                        {
                            if (!modulo.PermisoEscritura && !modulo.PermisoImprimir && !modulo.PermisoLectura)
                            {
                                _context.Remove(moduloExist);
                            }
                            else
                            {
                                moduloExist.PermisoEscritura = modulo.PermisoEscritura;
                                moduloExist.PermisoImprimir  = modulo.PermisoImprimir;
                                moduloExist.PermisoLectura   = modulo.PermisoLectura;

                                _context.Update(moduloExist);
                            }
                        }
                    }
                }

                try
                {
                    var sesiones = _context.Sesiones.Where(s => s.UsuarioID == usuarioDetailsViewModelUsuario.UsuarioID);
                    if (sesiones != null)
                    {
                        string directorioSesion = _configuration.GetValue <string>("DirectorioSesion");
                        string rutaSesion       = "";

                        foreach (var s in sesiones)
                        {
                            //_context.Remove(s);
                            rutaSesion = $"{directorioSesion}//{s.SessionID}.config";
                            if (System.IO.File.Exists(rutaSesion))
                            {
                                System.IO.File.Delete(rutaSesion);
                            }
                        }
                    }

                    await _context.SaveChangesAsync();

                    TempData["toast"] = "Permisos actualizados con éxito.";
                    await BitacoraAsync("Permisos", usuarioDetailsViewModelUsuario.UsuarioModulos, usuarioDetailsViewModelUsuario.UsuarioID.ToString());

                    return(RedirectToAction(nameof(Details), new { id = usuarioDetailsViewModelUsuario.UsuarioID }));
                }
                catch (Exception ex)
                {
                    string excepcion = ex.InnerException != null?ex.InnerException.Message.ToString() : ex.ToString();

                    TempData["toast"] = "Error al actualizar los permisos seleccionados.";
                    await BitacoraAsync("Permisos", usuarioDetailsViewModelUsuario.UsuarioModulos, usuarioDetailsViewModelUsuario.UsuarioID.ToString(), excepcion);
                }
            }
            else
            {
                TempData["toast"] = "Permisos no actualizados";
            }

            var usuario = await _context.Usuarios
                          .Include(c => c.Administrador)
                          .Include(c => c.Colaborador)
                          .FirstOrDefaultAsync(u => u.UsuarioID == usuarioDetailsViewModelUsuario.UsuarioID);

            if (usuario == null)
            {
                TempData["toast"] = "Identificacor incorrecto, verifique.";
                return(RedirectToAction(nameof(Index)));
            }

            var usuarioDetails = new UsuarioDetailsViewModelUsuario()
            {
                Activo            = usuario.Activo,
                Administrador     = usuario.Administrador,
                AdministradorID   = usuario.AdministradorID,
                Colaborador       = usuario.Colaborador,
                ColaboradorID     = usuario.ColaboradorID,
                FechaInicio       = usuario.FechaInicio,
                FechaTermino      = usuario.FechaTermino,
                FechaUltimoAcceso = usuario.FechaUltimoAcceso,
                UsuarioID         = usuario.UsuarioID,
                UsuarioModulos    = usuarioDetailsViewModelUsuario.UsuarioModulos
            };

            return(View(usuarioDetails));
        }
コード例 #3
0
        //Edit Permissions
        public async Task <IActionResult> EditPermissions(Guid id)
        {
            var validateToken = await ValidatedToken(_configuration, _getHelper, "contacto");

            if (validateToken != null)
            {
                return(validateToken);
            }

            if (!await ValidateModulePermissions(_getHelper, moduloId, eTipoPermiso.PermisoEscritura))
            {
                return(RedirectToAction(nameof(Index)));
            }

            var usuario = await _context.Usuarios
                          .Include(c => c.Administrador)
                          .Include(c => c.Colaborador)
                          .FirstOrDefaultAsync(u => u.UsuarioID == id);

            if (usuario == null)
            {
                TempData["toast"] = "Identificacor incorrecto, verifique.";
                return(RedirectToAction(nameof(Index)));
            }

            if (usuario.AdministradorID == "SA" || usuario.AdministradorID == "GA")
            {
                TempData["toast"] = "Usuario administrador no requiere asignación de permisos.";
                return(RedirectToAction(nameof(Details), new { id }));
            }

            var usuarioModulos = await(from um in _context.UsuariosModulos
                                       join m in _context.Modulos on um.ModuloID equals m.ModuloID
                                       where um.UsuarioID == id && m.Activo == true &&
                                       m.ModuloPadreID != Guid.Empty
                                       select um)
                                 .Include(m => m.Modulo)
                                 .OrderBy(m => m.Modulo.Descripcion)
                                 .ToListAsync();

            var modulosAsignados   = usuarioModulos.Select(m => m.ModuloID);
            var modulosNoAsignados = await _context.Modulos
                                     .Where(m => !modulosAsignados.Contains(m.ModuloID) &&
                                            m.ModuloPadreID != Guid.Empty)
                                     .ToListAsync();

            if (modulosNoAsignados.Any())
            {
                foreach (var modulo in modulosNoAsignados)
                {
                    usuarioModulos.Add(new UsuarioModulo
                    {
                        Modulo           = modulo,
                        ModuloID         = modulo.ModuloID,
                        PermisoEscritura = false,
                        PermisoImprimir  = false,
                        PermisoLectura   = false,
                        UsuarioID        = id,
                        UsuarioModuloID  = Guid.Empty
                    });
                }
            }

            var usuarioDetails = new UsuarioDetailsViewModelUsuario()
            {
                Activo            = usuario.Activo,
                Administrador     = usuario.Administrador,
                AdministradorID   = usuario.AdministradorID,
                Colaborador       = usuario.Colaborador,
                ColaboradorID     = usuario.ColaboradorID,
                FechaInicio       = usuario.FechaInicio,
                FechaTermino      = usuario.FechaTermino,
                FechaUltimoAcceso = usuario.FechaUltimoAcceso,
                UsuarioID         = usuario.UsuarioID,
                UsuarioModulos    = usuarioModulos.OrderBy(m => m.Modulo.Descripcion).ToList()
            };

            return(View(usuarioDetails));
        }