public bool ResetPassword(Users user, string password) { if (password == null) { return(false); } if (!BasicFieldsValidator.IsPasswordLengthValid(password)) { return(false); } user.PasswordHash = Crypto.HashPassword(password); return(true); }
public async Task <IActionResult> Update(UserUpdateRequest request) { var errors = new List <string>(); var user = _unitOfWork.UsersRepository.GetByID(request.Id); if (user == null) { return(BadRequest(_localizer["InvalidUser"].Value)); } if (!BasicFieldsValidator.IsDocumentIdLengthValid(request.DocumentId)) { errors.Add(string.Format(_localizer["InvalidDocumentIdLength"].Value, BasicFieldsValidator.DocumentMinLength)); } if (!BasicFieldsValidator.IsStringValid(request.UserName)) { errors.Add(string.Format(_localizer["InvalidUserNameLength"].Value, BasicFieldsValidator.StandardStringMaxLength)); } if (request.Address.Trim() != string.Empty && !BasicFieldsValidator.IsStringValid(request.Address)) { errors.Add(string.Format(_localizer["InvalidUserAddressLength"].Value, BasicFieldsValidator.DatabaseStringMaxLength)); } if (request.PhoneNumber.Trim() != string.Empty && !BasicFieldsValidator.IsStringValid(request.PhoneNumber)) { errors.Add(string.Format(_localizer["InvalidUserPhoneNumberLength"].Value, BasicFieldsValidator.DatabaseStringMaxLength)); } if (request.BirthDate.Year < 1900 && request.BirthDate.Year > DateTime.Today.AddYears(1).Year) { errors.Add(string.Format(_localizer["InvalidBirthDateRange"].Value, 1900, DateTime.Today.AddYears(1).Year)); } if (errors.Any()) { return(BadRequest(string.Join(Environment.NewLine, errors.Select(e => "- " + e).ToArray()))); } user.UserName = request.UserName; user.DocumentId = request.DocumentId; user.BirthDate = request.BirthDate; user.PhoneNumber = request.PhoneNumber; user.Address = request.Address; try { _unitOfWork.UsersRepository.Update(user); await _unitOfWork.SaveAsync(); } catch (SqlException) { return(StatusCode((int)HttpStatusCode.InternalServerError, _localizer["DatabaseConnectionException"].Value)); } catch (Exception) { return(BadRequest(_localizer["InvalidUserUpdate"].Value)); } return(Ok(_localizer["UserUpdateConfirmationMessage"].Value)); }
public async Task <IActionResult> Register(RegisterRequest request) { List <string> errors = new List <string>(); if (!BasicFieldsValidator.IsDocumentIdLengthValid(request.DocumentId)) { errors.Add(string.Format(_localizer["InvalidDocumentIdLength"].Value, BasicFieldsValidator.DocumentMinLength)); } if (!BasicFieldsValidator.IsStringValid(request.UserName)) { errors.Add(string.Format(_localizer["InvalidUserNameLength"].Value, BasicFieldsValidator.StandardStringMaxLength)); } if (!BasicFieldsValidator.IsEmailValid(request.Email)) { errors.Add(_localizer["InvalidEmailFormat"].Value); } if (!BasicFieldsValidator.IsPasswordLengthValid(request.Password)) { errors.Add(string.Format(_localizer["InvalidPasswordLength"].Value, BasicFieldsValidator.PasswordMinLength, BasicFieldsValidator.PasswordMaxLength)); } if (request.Password != request.ConfirmPassword) { return(BadRequest(_localizer["InvalidPasswordsMatch"].Value)); } if (request.ConfirmationUrl == null) { return(BadRequest(_localizer["MissingHiddenDataMessage"].Value)); } if (errors.Any()) { return(BadRequest(string.Join(Environment.NewLine, errors.Select(e => "- " + e).ToArray()))); } var newUser = new Users { Id = Guid.NewGuid().ToString(), DocumentId = request.DocumentId, UserName = request.UserName, Email = request.Email, PasswordHash = Crypto.HashPassword(request.Password), EmailConfirmed = true // TODO: DELETE THIS AFTER DEPLOYING THE EMAILING SERVICE }; try { _unitOfWork.UsersRepository.Insert(newUser); await _unitOfWork.SaveAsync(); var roles = _unitOfWork.RolesRepository.Get(); _unitOfWork.UserRolesRepository.Insert(new UserRoles { RoleId = roles.First(r => r.Name == SystemRoles.Client.ToString()).Id, UserId = newUser.Id }); var emailToken = Guid.NewGuid().ToString(); _unitOfWork.UserTokensRepository.Insert(new UserTokens { LoginProvider = Globals.EmailLoginProvider, Name = Globals.EmailTokenName, UserId = newUser.Id, Value = emailToken }); await _unitOfWork.SaveAsync(); var tokenVerificationUrl = HttpUtility.UrlDecode(request.ConfirmationUrl) .Replace("#Id", newUser.Id) .Replace("#Token", emailToken); await _emailService.SendEmailAsync(request.Email, _localizer["EmailVerificationSubject"].Value, string.Format(_localizer["EmailVerificationMessage"].Value, tokenVerificationUrl)); } catch (SqlException) { return(StatusCode((int)HttpStatusCode.InternalServerError, _localizer["DatabaseConnectionException"].Value)); } catch (Exception) { return(BadRequest(_localizer["InvalidUserCreation"].Value)); } return(Ok(string.Format(_localizer["RegistrationConfirmationMessage"].Value, request.Email))); }