Example #1
0
        // Processes a token response object and updates the user's record.
        // If the user doesn't exist in the database, it will create a record.
        public static async Task <User> AddOrUpdateUser(string email, TokenRequestSuccessResponse tokenResponse)
        {
            // Create a filter to find the record with this email
            var emailFilter = Builders <User> .Filter.Eq("Email", email);

            // See if the user exists
            User user = await userCollection.Find(emailFilter).FirstOrDefaultAsync();

            if (null != user)
            {
                // User exists, update tokens and expire time
                var update = Builders <User> .Update.Set("AccessToken", tokenResponse.AccessToken)
                             .Set("RefreshToken", tokenResponse.RefreshToken)
                             .Set("TokenExpires", DateTime.UtcNow.AddSeconds(Int32.Parse(tokenResponse.ExpiresIn) - 300));

                var result = await userCollection.UpdateOneAsync(emailFilter, update);
            }
            else
            {
                // User does not exist, create a new user and add to the database
                user = new User()
                {
                    Email        = email,
                    AccessToken  = tokenResponse.AccessToken,
                    RefreshToken = tokenResponse.RefreshToken,
                    TokenExpires = DateTime.UtcNow.AddSeconds(Int32.Parse(tokenResponse.ExpiresIn) - 300)
                };

                await userCollection.InsertOneAsync(user);
            }

            return(user);
        }
Example #2
0
        public void UpdateTokens(TokenRequestSuccessResponse tokenResponse)
        {
            double expireSeconds = double.Parse(tokenResponse.ExpiresIn);

            expireSeconds += -300;

            Tokens = new SessionTokenEntry()
            {
                AccessToken  = tokenResponse.AccessToken,
                RefreshToken = tokenResponse.RefreshToken,
                ExpiresOn    = DateTime.UtcNow.AddSeconds(expireSeconds)
            };

            Persist();
        }