public async Task ExecuteAsync(CreateAccount cmd) { var validator = new CreateAccountValidator(_context); var validationResult = validator.Validate(cmd); CommandHandlerException.ThrowIsNotValid("Ошибочные значения параметров", validationResult); var existsAccount = await _context.Accounts.Where(a => a.IP == cmd.IP) .OrderByDescending(a => a.CreatedAt) .FirstOrDefaultAsync(); var currentDateTime = DateTime.Now; var allowedInterval = _config.Value.AllowedIntervalInSeconds; if (existsAccount != null && currentDateTime.Subtract(existsAccount.CreatedAt).Seconds < allowedInterval) { var ex = new CommandHandlerException(403, $"С одного IP разрешено регистрироваться не более одного раза в {allowedInterval} сек."); _loggerService.LogError(ex, ex.Message); throw ex; } var account = new Account(currentDateTime, cmd.IP, cmd.Email.ToLower(), _passwordService.GetSha256Hash(cmd.Password), cmd.Country, cmd.Province); _context.Accounts.Add(account); await _context.SaveChangesAsync(); _domainEventDispatcher.Raise(new CreatedAccountEvent(account)); }
public void Setup() { var validator = new CreateAccountValidator(); AccountGateway = new AccountGatewaySpy(); PlayerGateway = new PlayerGatewaySpy(); Sut = new CreateAccountInteractor(validator, AccountGateway, PlayerGateway); }
public UsersController(IUsersApiClient usersApiClient, ISessionService sessionService, IHttpContextAccessor contextAccessor, CreateAccountValidator createAccountValidator) { _usersApiClient = usersApiClient; _sessionService = sessionService; _contextAccessor = contextAccessor; _createAccountValidator = createAccountValidator; }
public AccountController(ILogger <AccountController> logger, ILoginOrchestrator loginOrchestrator, ISessionService sessionService, IWebConfiguration config, IContactsApiClient contactsApiClient, IHttpContextAccessor contextAccessor, CreateAccountValidator createAccountValidator, IOrganisationsApiClient organisationsApiClient) { _logger = logger; _loginOrchestrator = loginOrchestrator; _sessionService = sessionService; _config = config; _contactsApiClient = contactsApiClient; _contextAccessor = contextAccessor; _createAccountValidator = createAccountValidator; _organisationsApiClient = organisationsApiClient; }
public async Task <ReturnResponse <RegisterAccountViewModel> > RegisterAsync(CreateAccount createAccount) { var returnResponse = new ReturnResponse <RegisterAccountViewModel>(); var validator = new CreateAccountValidator(_userRepository); ValidationResult validatorResult = await validator.ValidateAsync(createAccount); if (validatorResult.Errors.Any()) { returnResponse.Error = validatorResult.Errors.Join().ToString(); returnResponse.Succeeded = false; return(returnResponse); } var account = new Account(createAccount.CompanyName, 1); var responseAccount = await _accountRepository.CreateAccountAsync(account); returnResponse.Succeeded = responseAccount.Succeeded; returnResponse.Error = responseAccount.Error; if (responseAccount.Succeeded) { var salt = AccountExetions.GeneraSalt(); var user = _mapper.Map <CreateAccount, User>(createAccount); user.AccountId = account.AccountId; user.UserTypeId = 1; user.Password = AccountExetions.HashPassword(user.Password, salt); user.HashSalt = salt; var responseUser = await _userRepository.CreateUserAsync(user); returnResponse.Data = _mapper.Map <User, RegisterAccountViewModel>(responseUser.Data); returnResponse.Data.CompanyName = createAccount.CompanyName; returnResponse.Data.TokenInfo = await _tokenService.GenerateTokenAsync(user); returnResponse.Succeeded = responseUser.Succeeded; returnResponse.Error = responseUser.Error; } return(returnResponse); }