public Account FacebookAuthenticate(string accessToken) { var userInfo = GetFacebookUserInformation(accessToken); if (userInfo == null) { return(null); } var user = _accountRepository.GetByFacebookId(userInfo.Id); if (user != null) { user.Token = JwtToken.Generate(_settings.Value.Secret, user); user.Password = null; user.PasswordSalt = null; return(user); } else { var salt = Salt.Generate(); var newAccount = new Account() { Password = Hash.HashPassword(GenerateRandomPassword(), salt), PasswordSalt = salt, Role = "member", UserId = ObjectId.GenerateNewId().ToString(), FacebookId = userInfo.Id }; _accountRepository.Add(newAccount); newAccount.Password = null; newAccount.PasswordSalt = null; newAccount.Token = JwtToken.Generate(_settings.Value.Secret, newAccount); return(newAccount); } }
public Account Authenticate(string email, string password) { var account = _accountRepository.GetByEmail(email); if (account != null) { var isValid = Hash.HashPassword(password, account.PasswordSalt) == account.Password; if (isValid) { account.Token = JwtToken.Generate(_settings.Value.Secret, account); } // Set important fields to null account.Password = null; account.PasswordSalt = null; } return(account); }
public Account Register(Account account) { if (_accountRepository.GetByEmail(account.Email) != null) { return(null); } var salt = Salt.Generate(); var encryptedAccount = new Account() { Email = account.Email, Password = Hash.HashPassword(account.Password, salt), PasswordSalt = salt, Role = "unverified", UserId = ObjectId.GenerateNewId().ToString(), Id = ObjectId.GenerateNewId().ToString() }; var result = _accountRepository.Add(encryptedAccount); // Generate token result.Token = JwtToken.Generate(_settings.Value.Secret, encryptedAccount); if (result != null) { Mail mail = new Mail() { Subject = "Thanks for joining TripSharing", To = result.Email, Url = $"https://trip-sharing.net/xac-nhan-email/{result.Token}", EmailType = "EmailConfirm" }; // Commment this if run in local _publishToTopic.PublishEmail(mail); } return(result); }