예제 #1
0
        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
                       };
        }
예제 #2
0
        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;
        }
예제 #3
0
 private async Task ClearToken(UserAccount userAccount)
 {
     await _userTokens.DeleteOneAsync(ut => ut.Username == userAccount.Username);
 }