public async Task<RegistrationResult> Register(string username, string password) { username = username?.Trim().ToLower(); var existingUserAccount = await _userAccounts.Find(ua => ua.Username == username).FirstOrDefaultAsync(); if (existingUserAccount != null) { return new RegistrationResult { Success = false, Message = $"The username is already in use." }; } var userAccount = new UserAccount { Username = username, Password = password }; await _userAccounts.InsertOneAsync(userAccount); return new RegistrationResult { Success = true }; }
private async Task<UserToken> GenerateToken(UserAccount userAccount) { await ClearToken(userAccount); var userToken = new UserToken { Username = userAccount.Username, Created = DateTime.UtcNow, Token = Guid.NewGuid().ToString("D") }; await _userTokens.InsertOneAsync(userToken); return userToken; }
private async Task ClearToken(UserAccount userAccount) { await _userTokens.DeleteOneAsync(ut => ut.Username == userAccount.Username); }