private List <AccountValidateErrorType> GetValidationMessages(AccountPersistParams accountParams) { var errors = new List <AccountValidateErrorType>(); if (string.IsNullOrEmpty(accountParams.EmailAddress)) { errors.Add(AccountValidateErrorType.EmailAddressEmpty); } var emailPattern = @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z"; if (!Regex.IsMatch(accountParams.EmailAddress, emailPattern)) { errors.Add(AccountValidateErrorType.EmailAddressInvalidFormat); } if (string.IsNullOrEmpty(accountParams.Password) || accountParams.Password?.Length < 8) { errors.Add(AccountValidateErrorType.PasswordEmpty); } if (string.IsNullOrEmpty(accountParams.AccountName)) { errors.Add(AccountValidateErrorType.UsernameEmpty); } if (_context.Accounts.Any(x => x.EmailAddress == accountParams.EmailAddress && !x.Deleted)) { errors.Add(AccountValidateErrorType.EmailAddressAlreadyExists); } if (_context.Accounts.Any(x => x.AccountName == accountParams.AccountName && !x.Deleted)) { errors.Add(AccountValidateErrorType.UsernameExists); } var regexItem = new Regex("^[a-zA-Z0-9 ]*$"); if (!string.IsNullOrEmpty(accountParams.Password) && regexItem.IsMatch(accountParams.Password)) { errors.Add(AccountValidateErrorType.PasswordNotComplicatedEnough); } if (accountParams.Password != accountParams.ConfirmPassword) { errors.Add(AccountValidateErrorType.ConfirmPasswordInvalid); } return(errors); }
public JsonResult OnPostValidateAsync(string userName, string emailAddress, string password, string confirmPassword) { try { var param = new AccountPersistParams() { AccountName = userName, EmailAddress = emailAddress, Password = password, ConfirmPassword = confirmPassword, }; var result = _accountService.CreateAccount(param); return(new JsonResult(new { success = result.Result, json = string.Join(" ", result.Messages) })); } catch (Exception ex) { return(new JsonResult(new { success = false, json = ex.Message })); } }
public AccountPersistResult CreateAccount(AccountPersistParams accountParams) { if (!string.IsNullOrEmpty(accountParams.BogusData)) { _authenticationHistoryService.LogAuthentication(AuthAttemptType.Bot, accountParams.AccountName, accountParams.EmailAddress, accountParams.ClientId, accountParams.BogusData); return(null); } var result = new AccountPersistResult(); var validationMessages = GetValidationMessages(accountParams); if (validationMessages.Count > 0) { result.Result = false; result.Messages = validationMessages; return(result); } var hashedPassword = BCrypt.Net.BCrypt.HashPassword(accountParams.Password, BCrypt.Net.SaltRevision.Revision2Y); var account = GetAccountForCreate(accountParams.FirstName, accountParams.FirstName, accountParams.AccountName, accountParams.EmailAddress, hashedPassword); _context.Accounts.Add(account); _context.SaveChanges(); var userRole = _roleService.GetRoleByType(RoleType.User); _accountRoleService.AddRoleToAccount(userRole.RoleId, account.AccountId, account.AccountId); _accountVerificationService.SendAccountVerificationEmail(account.AccountId, accountParams.EmailAddress, accountParams.AccountName); var accountModel = GetAccountModel(account); accountModel.Roles.Add(userRole); result.Result = true; result.Account = accountModel; return(result); }