Пример #1
0
        public async Task <bool> AssignRole(ClaimsPrincipal claim, string userId, List <string> selectedRoles)
        {
            if (!selectedRoles.Any())
            {
                throw new WebApiApplicationException(StatusCodes.Status400BadRequest, ErrorMessages.EmptyData);
            }

            List <string> roleNames = _roleManager.Roles.Where(x => selectedRoles.Contains(x.Id) && x.Status).Select(x => x.Name).ToList();

            if (!roleNames.Any())
            {
                throw new WebApiApplicationException(StatusCodes.Status404NotFound, ErrorMessages.RecordNotFound);
            }

            ApplicationUser user =
                await Task.Run(() => _userManager.Users.FirstOrDefault(x => x.Id == userId));

            ExtBusinessLogic.CheckRecord(user);
            user.ModifiedBy = ExtBusinessLogic.UserValue(claim);
            var result = await _userManager.AddToRolesAsync(user, roleNames);

            if (!result.Succeeded)
            {
                throw new WebApiApplicationException(StatusCodes.Status400BadRequest, ErrorMessages.CommonErrorMessage,
                                                     result.Errors.ToList());
            }

            return(true);
        }
Пример #2
0
        public async Task <bool> GeneratePasswordResetTokenAsync(string userEmail)
        {
            ApplicationUser user =
                _userManager.Users.FirstOrDefault(x => x.UserName == userEmail);

            ExtBusinessLogic.CheckRecord(user);

            if (user != null && !user.EmailConfirmed)
            {
                throw new WebApiApplicationException(StatusCodes.Status403Forbidden, ErrorMessages.EmailNotVerified);
            }

            string passwordResetToken = await _userManager.GeneratePasswordResetTokenAsync(user);

            var    passwordReset        = System.IO.Path.Combine(_env.WebRootPath, EmailFiles.ResetPassword);
            string passwordResetContent = System.IO.File.ReadAllText(passwordReset);

            string callbackUrl = _httpContextAccessor.HttpContext.Request.Headers[HttpRequestHeaders.RequestUrl]
                                 .ToString().CreateRequestUrl(confirmationToken: HttpUtility.UrlEncode(passwordResetToken),
                                                              // ReSharper disable once PossibleNullReferenceException
                                                              userId: user.Id);

            passwordResetContent = passwordResetContent.Replace(EmailContentKeywords.ActivateLink, callbackUrl);
            await _emailSender.SendEmailAsync(user.Email, EmailSubject.ResetPassword, passwordResetContent);

            return(true);
        }
Пример #3
0
        public async Task <bool> AddNewUserAsync(ClaimsPrincipal claim, AddNewUserViewModel data)
        {
            string userId = ExtBusinessLogic.UserValue(claim);

            data.CreatedBy = userId;
            ApplicationUser user            = _mapper.Map <ApplicationUser>(data);
            bool            userAlreadyExit = _userManager.Users.Any(x => x.UserName == user.UserName);

            if (userAlreadyExit)
            {
                throw new WebApiApplicationException(StatusCodes.Status409Conflict, ErrorMessages.ErrorCreatingLocalUser,
                                                     new object[]
                {
                    new
                    {
                        Code        = ErrorMessages.UserExistCode,
                        Description = ErrorMessages.UserExistDescription.Replace("[USERNAME]", user.UserName)
                    }
                });
            }

            var result = await _userManager.CreateAsync(user);

            if (!result.Succeeded)
            {
                throw new WebApiApplicationException(StatusCodes.Status409Conflict, ErrorMessages.ErrorCreatingLocalUser, result.Errors.ToList());
            }

            await SendConfirmationEmail(user);

            return(true);
        }
Пример #4
0
        public async Task <bool> VerifyPasswordResetTokenAsync(string token, string userId)
        {
            ApplicationUser user =
                _userManager.Users.FirstOrDefault(x => x.Id == userId);

            ExtBusinessLogic.CheckRecord(user);

            return(await _userManager.VerifyUserTokenAsync(user, TokenOptions.DefaultProvider, "ResetPassword", token));
        }
Пример #5
0
        public async Task <bool> UserIsInRole(ClaimsPrincipal claim, string roleName)
        {
            ApplicationRole role = await Task.Run(() => _roleManager.Roles.FirstOrDefault(x => x.Name == roleName));

            ExtBusinessLogic.CheckRecord(role);
            ApplicationUser user =
                await Task.Run(() => _userManager.Users.FirstOrDefault(x => x.Id == ExtBusinessLogic.UserValue(claim, nameof(ApplicationUser.Id))));

            ExtBusinessLogic.CheckRecord(user);

            return(await _userManager.IsInRoleAsync(user, role.Name));
        }
Пример #6
0
        public async Task <bool> UserIsInRole(string userId, string roleId)
        {
            ApplicationRole role = await Task.Run(() => _roleManager.Roles.FirstOrDefault(x => x.Id == roleId));

            ExtBusinessLogic.CheckRecord(role);
            ApplicationUser user =
                await Task.Run(() => _userManager.Users.FirstOrDefault(x => x.Id == userId));

            ExtBusinessLogic.CheckRecord(user);

            return(await _userManager.IsInRoleAsync(user, role.Name));
        }
Пример #7
0
        public async Task <bool> UpdateRole(ClaimsPrincipal claim, ApplicationRoleViewModel data)
        {
            data.ModifiedBy = ExtBusinessLogic.UserValue(claim);
            ApplicationRole roleData = _mapper.Map <ApplicationRole>(data);

            var result = await _roleManager.UpdateAsync(roleData);

            if (!result.Succeeded)
            {
                throw new WebApiApplicationException(StatusCodes.Status400BadRequest, ErrorMessages.CommonErrorMessage, result.Errors.ToList());
            }

            return(true);
        }
Пример #8
0
        public async Task <bool> ChangePasswordAsync(ClaimsPrincipal claim, ChangePasswordViewModel data)
        {
            ApplicationUser user =
                _userManager.Users.FirstOrDefault(
                    x => x.Id == ExtBusinessLogic.UserValue(claim, nameof(ApplicationUser.Id)) && x.Status && !x.Trashed);
            IdentityResult result = await _userManager.ChangePasswordAsync(user, data.OldPassword, data.NewPassword);

            if (!result.Succeeded)
            {
                throw new WebApiApplicationException(StatusCodes.Status400BadRequest, ErrorMessages.ErrorSetPassword, result.Errors.ToList());
            }

            return(true);
        }
Пример #9
0
        public async Task <bool> ResetPasswordAsync(ResetPasswordWithTokenViewModel data)
        {
            ApplicationUser user = _userManager.Users.FirstOrDefault(x => x.Id == data.UserId);

            ExtBusinessLogic.CheckRecord(user);

            IdentityResult result = await _userManager.ResetPasswordAsync(user, data.Token, data.ConfirmPassword);

            if (!result.Succeeded)
            {
                throw new WebApiApplicationException(StatusCodes.Status400BadRequest, ErrorMessages.ErrorSetPassword, result.Errors.ToList());
            }

            return(true);
        }
Пример #10
0
        public async Task <bool> RemoveRole(ClaimsPrincipal claim, ApplicationRoleViewModel data)
        {
            ApplicationRole roleData = _roleManager.Roles.FirstOrDefault(x => x.Id == data.Id);

            ExtBusinessLogic.CheckRecord(roleData);

            // ReSharper disable once PossibleNullReferenceException
            roleData.ModifiedBy = ExtBusinessLogic.UserValue(claim);
            var result = await _roleManager.DeleteAsync(roleData);

            if (!result.Succeeded)
            {
                throw new WebApiApplicationException(StatusCodes.Status400BadRequest, ErrorMessages.CommonErrorMessage, result.Errors.ToList());
            }

            return(true);
        }
Пример #11
0
        public async Task <bool> RevokeToken(ClaimsPrincipal claim)
        {
            ApplicationUser user = _userManager.Users.FirstOrDefault(x =>
                                                                     x.Id == ExtBusinessLogic.UserValue(claim, nameof(ApplicationUser.Id)));

            if (user == null)
            {
                throw new WebApiApplicationException(StatusCodes.Status404NotFound, ErrorMessages.ErrorUserNotFound);
            }

            //CheckRecord(user);

            user.TokenNumber = null;
            await _userManager.UpdateAsync(user);

            //_userStore.Context.SaveChanges();

            await _tokenManager.DeactivateCurrentAsync();

            return(true);
        }
Пример #12
0
        public async Task <bool> CreateRole(ClaimsPrincipal claim, ApplicationRoleViewModel data)
        {
            data.CreatedBy  = ExtBusinessLogic.UserValue(claim);
            data.ModifiedBy = ExtBusinessLogic.UserValue(claim);
            ApplicationRole roleData  = _mapper.Map <ApplicationRole>(data);
            bool            roleExist = await _roleManager.RoleExistsAsync(roleData.Name);

            if (roleExist)
            {
                throw new WebApiApplicationException(StatusCodes.Status409Conflict, ErrorMessages.RoleAlreadyExist);
            }

            roleData.GenerateNewId();
            var result = await _roleManager.CreateAsync(roleData);

            if (!result.Succeeded)
            {
                throw new WebApiApplicationException(StatusCodes.Status400BadRequest, ErrorMessages.CommonErrorMessage, result.Errors.ToList());
            }

            return(true);
        }