public async Task <IActionResult> RefreshTokens(RefreshTokenRequest response)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            Console.WriteLine("Refreshing Token");

            SeriesUser user = await _userManager.FindByEmailAsync(response.Email);

            if (user == null)
            {
                return(Unauthorized());
            }

            RefreshToken refreshToken = _context.RefreshTokens.SingleOrDefault(m => m.Token == response.RefreshToken);

            if (refreshToken == null || !refreshToken.IsValid() || refreshToken.Email != user.Email)
            {
                if (refreshToken == null)
                {
                    return(Unauthorized());
                }

                _context.RefreshTokens.Remove(refreshToken);
                await _context.SaveChangesAsync();

                return(Unauthorized());
            }

            refreshToken.Token    = Guid.NewGuid().ToString();
            refreshToken.Provided = DateTime.UtcNow;

            _context.RefreshTokens.Update(refreshToken);
            await _context.SaveChangesAsync();

            string token = _jwtGenerator.GenerateEncodedToken(user.Id);

            Console.WriteLine("Sending new token!");
            return(Ok(new TokensResponse {
                Token = token, RefreshToken = refreshToken.Token, Success = true
            }));
        }