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()); }
public async Task PublishChangeName(Guid id, string newUsername) { await _messageQueuePublisher.PublishMessageAsync( _messageQueueSettings.Exchange , "authentication-service" , "change-username" , new { id, newUsername, } ); }
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 }); }