Exemplo n.º 1
0
        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;
 }
Exemplo n.º 4
0
 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);
        }