Пример #1
0
        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
                }
                           ));
            }
        }
Пример #2
0
        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);
        }