private async Task <IdentityResult> EnableRoleClaim(string userId, string roleId, int claimId, ApplicationUser user) { try { ApplicationUser registration = await _userManager.FindByIdAsync(userId); if (registration != null) { bool addRoleClaim = true; foreach (AspNetUserRoleClaim roleClaim in registration.RoleClaims) { if (roleClaim.RoleId == roleId && roleClaim.RoleClaimId == claimId) { roleClaim.Status = AspNetUserRoleClaim.RoleClaimStatus.Approved; AspNetUserRoleClaimHistory history = new AspNetUserRoleClaimHistory(); history.ActionOn = DateTime.Now; history.ActionBy = user; history.Status = AspNetUserRoleClaim.RoleClaimStatus.Approved; history.UserRoleClaim = roleClaim; roleClaim.History.Add(history); addRoleClaim = false; } } if (addRoleClaim) { AspNetUserRoleClaim userRoleClaim = new AspNetUserRoleClaim(); userRoleClaim.UserId = registration.Id; userRoleClaim.User = registration; userRoleClaim.RoleId = roleId; userRoleClaim.RoleClaimId = claimId; userRoleClaim.Status = AspNetUserRoleClaim.RoleClaimStatus.Approved; AspNetUserRoleClaimHistory history = new AspNetUserRoleClaimHistory(); history.ActionOn = DateTime.Now; history.ActionBy = user; history.Status = AspNetUserRoleClaim.RoleClaimStatus.Approved; history.UserRoleClaim = userRoleClaim; userRoleClaim.History.Add(history); registration.RoleClaims.Add(userRoleClaim); } IdentityResult identityResult = await _userManager.UpdateAsync(registration); if (!identityResult.Succeeded) { throw new Exception(identityResult.Errors.First().Description); } } return(IdentityResult.Success); } catch (Exception exception) { _logger.Exception(exception); return(IdentityResult.Failed( new IdentityError { Code = exception.Source, Description = exception.Message } )); } }
private async Task <AdministrationModel> Reject(AdministrationModel model, ApplicationUser user) { var registration = await _userManager.FindByIdAsync(model.Id); if (registration == null) { throw new Exception($"Invalid Registration.Id: {model.Id}"); } registration.ApprovedById = null; registration.ApprovedBy = null; registration.ApprovedDate = DateTime.MinValue; registration.RevokedById = user.Id; registration.RevokedBy = user; registration.RevokedDate = DateTime.Now; ApplicationRole role = await _roleManager.FindByNameAsync("User"); foreach (ApplicationRoleClaim roleClaim in role.RoleClaims) { AspNetUserRoleClaim userRoleClaim = registration.RoleClaims .Where(x => x.UserId == registration.Id && x.RoleId == roleClaim.RoleId && x.RoleClaim.ClaimType == roleClaim.ClaimType ) .FirstOrDefault(); if (userRoleClaim != null) { userRoleClaim.Status = AspNetUserRoleClaim.RoleClaimStatus.Rejected; AspNetUserRoleClaimHistory history = new AspNetUserRoleClaimHistory(); history.ActionOn = DateTime.Now; history.ActionById = user.Id; history.ActionBy = user; history.Status = AspNetUserRoleClaim.RoleClaimStatus.Rejected; history.UserRoleClaimId = userRoleClaim.Id; history.UserRoleClaim = userRoleClaim; userRoleClaim.History.Add(history); } else { userRoleClaim = new AspNetUserRoleClaim(); userRoleClaim.UserId = registration.Id; userRoleClaim.User = registration; userRoleClaim.RoleId = role.Id; userRoleClaim.Role = role; userRoleClaim.RoleClaimId = roleClaim.Id; userRoleClaim.RoleClaim = roleClaim; userRoleClaim.Status = AspNetUserRoleClaim.RoleClaimStatus.Rejected; AspNetUserRoleClaimHistory history = new AspNetUserRoleClaimHistory(); history.ActionOn = DateTime.Now; history.ActionById = user.Id; history.ActionBy = user; history.Status = AspNetUserRoleClaim.RoleClaimStatus.Rejected; history.UserRoleClaimId = userRoleClaim.Id; history.UserRoleClaim = userRoleClaim; userRoleClaim.History.Add(history); registration.RoleClaims.Add(userRoleClaim); } } IdentityResult identityResult = await _userManager.UpdateAsync(registration); if (!identityResult.Succeeded) { throw new Exception(identityResult.Errors.First().Description); } return(model); }