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 })); } }
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 })); }