Ejemplo n.º 1
0
        public async Task <IActionResult> GestionarPermisos([FromBody] RolPermisoVerViewModel model)
        {
            IdentityRole rol = await _roleManager.FindByIdAsync(model.IdRol);

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

            var permisos_activos = await _roleManager.GetClaimsAsync(rol);

            try
            {
                foreach (Claim claim in permisos_activos)
                {
                    await _roleManager.RemoveClaimAsync(rol, claim);
                }

                var permisos_seleccionado = model.Permisos.Where(p => p.Activo).Select(p => new Claim(p.Type, p.Value)).ToList();

                foreach (Claim claim in permisos_seleccionado)
                {
                    await _roleManager.AddClaimAsync(rol, claim);
                }

                var rolmodificado = await _roleManager.FindByIdAsync(model.IdRol);

                return(Ok(new ApiResponseFormat()
                {
                    Estado = StatusCodes.Status200OK, Mensaje = "Rol modificado con exito", Dato = rolmodificado
                }));
            }
            catch (Exception ex)
            {
                return(StatusCode(ex.HResult, new ApiResponseFormat()
                {
                    Estado = ex.HResult, Mensaje = ex.Message
                }));
            }
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> GestionarPermisos(string id)
        {
            IdentityRole rol = await _roleManager.FindByIdAsync(id);

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

            var permisos_activos = await _roleManager.GetClaimsAsync(rol);

            RolPermisoVerViewModel rolConPermisos = new RolPermisoVerViewModel()
            {
                IdRol = rol.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))
                {
                    permisos.Activo = true;
                }

                rolConPermisos.Permisos.Add(permisos);
            }

            return(Ok(new ApiResponseFormat()
            {
                Estado = StatusCodes.Status200OK, Dato = rolConPermisos
            }));
        }