예제 #1
0
        public async Task <ActionResult <IEnumerable <UsuarioVerPermisosViewModel> > > GestionarPermisos(string id)
        {
            Usuario user = await _userManager.FindByIdAsync(id);

            if (user == null)
            {
                return(NotFound(new ApiResponseFormat()
                {
                    Estado = StatusCodes.Status404NotFound, Mensaje = "IUsuario invalido"
                }));
            }

            var permisos_activos = await _userManager.GetClaimsAsync(user);

            UsuarioVerPermisosViewModel permisos_agregar = new UsuarioVerPermisosViewModel()
            {
                IdUsuario = user.Id
            };

            foreach (Permiso permiso in await _context.Permisos.ToListAsync())
            {
                PermisoAsignado permisos = new PermisoAsignado()
                {
                    Type  = permiso.Tipo,
                    Value = permiso.Valor
                };

                if (permisos_activos.Any(p => p.Type == permiso.Tipo && p.Value.Equals("true")))
                {
                    permisos.Activo = true;
                }

                permisos_agregar.Permisos.Add(permisos);
            }

            return(Ok(new ApiResponseFormat()
            {
                Estado = StatusCodes.Status200OK, Dato = permisos_agregar
            }));
        }
예제 #2
0
        public async Task <ActionResult <IEnumerable <UsuarioVerPermisosViewModel> > > GestionarPermisos([FromBody] UsuarioVerPermisosViewModel model)
        {
            Usuario usuario = await _userManager.FindByIdAsync(model.IdUsuario);

            if (usuario == null)
            {
                return(NotFound(new ApiResponseFormat()
                {
                    Estado = StatusCodes.Status404NotFound, Mensaje = "IUsuario invalido"
                }));
            }

            var permisos_activos = await _userManager.GetClaimsAsync(usuario);

            var email_claim = permisos_activos.Where(p => p.Type == "Email").Select(p => p).FirstOrDefault();

            var result = await _userManager.RemoveClaimsAsync(usuario, permisos_activos);

            if (!result.Succeeded)
            {
                return(BadRequest(new ApiResponseFormat()
                {
                    Estado = StatusCodes.Status400BadRequest, Mensaje = "No se pueden modificar los permisos del usuario"
                }));
            }

            var permisos_seleccionado = model.Permisos.Select(p => new Claim(p.Type, p.Activo ? "true" : "false")).ToList();

            if (email_claim != null)
            {
                permisos_seleccionado.Add(email_claim);
            }
            else
            {
                permisos_seleccionado.Add(new Claim("Email", usuario.Email));
            }

            result = await _userManager.AddClaimsAsync(usuario, permisos_seleccionado);

            if (!result.Succeeded)
            {
                return(BadRequest(new ApiResponseFormat()
                {
                    Estado = StatusCodes.Status400BadRequest, Mensaje = "No se pueden agregar permisos al usuario"
                }));
            }

            return(StatusCode(StatusCodes.Status201Created, new ApiResponseFormat()
            {
                Estado = StatusCodes.Status201Created, Mensaje = "Permisos editados con exito", Dato = usuario
            }));
        }