public async Task<ActionResult> SetUserClaim(string userId) { if (userId == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } var user = await UserManager.FindByIdAsync(userId); if (user == null) { return HttpNotFound(); } SetUserClaimVM vm = new SetUserClaimVM(); var appClaims = claimManager.List().OrderBy(x => x.Name); vm.Types = new SelectList ( claimManager.List().OrderBy(x => x.Name), "Name", "Name" ); //pega os claim Types default e coloca junto com os da Aplicacao //se tiver o claimtype http://schemas.microsoft.com/ws/2008/06/identity/claims/role // da pra validat com o Authorize padrao [Authorize(Roles="blablabla")] var props = typeof(ClaimTypes).GetFields(); var b = from c in props select new { Name = c.Name + " (" + c.GetValue(null).ToString() + ")", Value = c.GetValue(null).ToString() }; vm.Types = vm.Types.Concat(new SelectList(b, "Value", "Name")); vm.Types = vm.Types.OrderBy(x => x.Text); vm.UserId = user.Id; vm.UserName = user.UserName; return View(vm); }
public async Task<ActionResult> SetUserClaim(SetUserClaimVM vm) { if (vm.UserId == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } var user = await UserManager.FindByIdAsync(vm.UserId); if (user == null) { return HttpNotFound(); } vm.Types = new SelectList ( claimManager.List().OrderBy(x=>x.Name) , "Name", "Name" ); var props = typeof(ClaimTypes).GetFields(); var b = from c in props select new { Name = c.Name + " (" + c.GetValue(null).ToString() + ")", Value = c.GetValue(null).ToString() }; vm.Types = vm.Types.Concat(new SelectList(b, "Value", "Name")); vm.Types = vm.Types.OrderBy(x => x.Text); try { var a = user.Claims.SingleOrDefault(x=>x.ClaimType==vm.Type&&x.ClaimValue==vm.Value); if (a != null) { ModelState.AddModelError("", "Usuário já possui este Claim!"); return View(vm); } IdentityResult result = await UserManager.AddClaimAsync(vm.UserId, new Claim(vm.Type, vm.Value)); if (!result.Succeeded) { ModelState.AddModelError("", result.Errors.ToString()); return View(vm); } return RedirectToAction("ListUserClaims","UsersAdmin", new { userId = vm.UserId }); } catch (Exception e) { ModelState.AddModelError("", e.Message); return View(vm); } }