public async Task <User> RegisterPasswordAsync(string username, string email, string password)
        {
            if (!_regexValidator.IsValidEmail(email))
            {
                throw new InvalidEmailException();
            }

            if (!_regexValidator.IsValidPassword(password))
            {
                throw new InvalidPasswordException();
            }

            if (await _repository.ReadByUsernameAsync(username) != null)
            {
                throw new UsernameAlreadyExistsException();
            }

            if (await _repository.ReadByEmailAsync(email) != null)
            {
                throw new EmailAlreadyExistsException();
            }

            var salt           = _hashGenerator.Salt();
            var hashedPassword = _hashGenerator.Hash(password, salt);

            var user = await _repository.CreateAsync(
                new User
            {
                Username = username,
                Email    = email,
                Password = hashedPassword,
                Salt     = salt
            }
                );

            await _messageQueuePublisher.PublishMessageAsync(
                "Dwetter",
                "EmailMicroservice",
                "RegisterUser",
                JsonConvert.SerializeObject(new
            {
                email    = user.Email,
                username = user.Username
            }
                                            ));

            await _messageQueuePublisher.PublishMessageAsync(
                "Dwetter",
                "ProfileMicroservice",
                "RegisterUser",
                new
            {
                userId   = user.Id,
                username = user.Username
            }
                );

            return(user.WithoutSensitiveData());
        }
示例#2
0
 public async Task PublishChangeName(Guid id, string newUsername)
 {
     await _messageQueuePublisher.PublishMessageAsync(
         _messageQueueSettings.Exchange
         , "authentication-service"
         , "change-username"
         , new
     {
         id,
         newUsername,
     }
         );
 }
示例#3
0
        public async Task <User> Insert(string viewName, string viewEmail, string viewPassword)
        {
            var tempemail = await _repository.Get(viewEmail);

            if (tempemail != null)
            {
                throw new ArgumentException("This email address is already in use, please use another email address.");
            }

            var salt     = _hasher.CreateSalt();
            var password = await _hasher.HashPassword(viewPassword, salt);

            var user = new User()
            {
                Name     = viewName,
                Email    = viewEmail,
                Salt     = salt,
                Password = password
            };

            var messageQSendable = new RegisterMessageView()
            {
                Email = viewEmail
            };

            await _messageQueuePublisher.PublishMessageAsync(_messageQueueSettings.Exchange, "EmailService", "RegisterUser", messageQSendable);

            return(await _repository.Create(user));
        }
        public async Task <Account> Create(string name, string email, string username, string password)
        {
            var accountByEmail = await _repository.GetByEmail(email.ToLower());

            if (accountByEmail != null)
            {
                throw new AlreadyInUseException("A user with this email is already registered.");
            }

            if (await _repository.GetByUsername(username.ToLower()) != null)
            {
                throw new AlreadyInUseException("A user with this username is already registered.");
            }

            var salt      = _hasher.CreateSalt();
            var _password = await _hasher.HashPassword(password, salt);

            var account = new Account()
            {
                Email   = email.ToLower(),
                Name    = name,
                Salt    = salt,
                Profile = new Profile()
                {
                    Username  = username.ToLower(),
                    Created   = DateTime.Now,
                    Followers = new List <User>(),
                    Following = new List <User>()
                },
                Password    = _password,
                OauthIssuer = "none",
            };

            await _repository.Create(account);

            await _messageQueuePublisher.PublishMessageAsync(_messageQueueSettings.Exchange, "email-service",
                                                             "RegisterUser", new { Email = account.Email });

            return(account.RemovePassword().RemoveSalt());
        }
        public async Task <Account> CreateAccount(CreateAccountModel model)
        {
            var account = await _repository.Get(model.Email);

            if (account != null)
            {
                throw new EmailAlreadyExistsException();
            }

            if (!_regexHelper.IsValidEmail(model.Email))
            {
                throw new InvalidEmailException();
            }

            if (!_regexHelper.IsValidPassword(model.Password))
            {
                throw new InvalidPasswordException("Password does not meet the minimum requirements.");
            }

            //hash the password.
            var salt           = _hasher.CreateSalt();
            var hashedPassword = await _hasher.HashPassword(model.Password, salt);

            //Create new User object and send to repository
            var newAccount = new Account()
            {
                Id       = Guid.NewGuid(),
                Email    = model.Email,
                Password = hashedPassword,
                Salt     = salt
            };

            newAccount = await _repository.Create(newAccount);

            await _messageQueuePublisher.PublishMessageAsync(_messageQueueSettings.Exchange, "EmailService", "RegisterUser", new { Email = newAccount.Email });

            return(newAccount.WithoutSensitiveData());
        }
 public async Task PublishUpdateUser(Account updatedAccount)
 {
     await _messageQueuePublisher.PublishMessageAsync(_messageQueueSettings.Exchange, "kwet-service", "update-user", new { Id = updatedAccount.Id, NewUsername = updatedAccount.Profile.Username });
 }
 public async Task PublishDeleteUser(Guid id)
 {
     await _messageQueuePublisher.PublishMessageAsync(_messageQueueSettings.Exchange, "MarketplaceService", "delete-user", new { Id = id });
 }
        public async Task PublishNewWorld(World world)
        {
            await _messageQueuePublisher.PublishMessageAsync(_messageQueueSettings.Exchange, "cell-service", "new-world", new { Id = world.Id, Title = world.Title });

            await _messageQueuePublisher.PublishMessageAsync(_messageQueueSettings.Exchange, "verhaal-service", "new-world", new { Id = world.Id, Title = world.Title });
        }