Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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 }));
            }
        }
Ejemplo n.º 3
0
        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);
        }