module ApiGuard::JwtAuth::RefreshJwtToken

Common module for refresh token functionality

Public Instance Methods

destroy_all_refresh_tokens(resource) click to toggle source
# File lib/api_guard/jwt_auth/refresh_jwt_token.rb, line 39
def destroy_all_refresh_tokens(resource)
  return unless refresh_token_enabled?(resource)

  refresh_tokens_for(resource).destroy_all
end
find_refresh_token_of(resource, refresh_token) click to toggle source
# File lib/api_guard/jwt_auth/refresh_jwt_token.rb, line 20
def find_refresh_token_of(resource, refresh_token)
  refresh_tokens_for(resource).find_by_token(refresh_token)
end
new_refresh_token(resource) click to toggle source

Create a new refresh_token for the current resource

# File lib/api_guard/jwt_auth/refresh_jwt_token.rb, line 33
def new_refresh_token(resource)
  return unless refresh_token_enabled?(resource)

  refresh_tokens_for(resource).create(token: uniq_refresh_token(resource)).token
end
refresh_token_association(resource) click to toggle source
# File lib/api_guard/jwt_auth/refresh_jwt_token.rb, line 7
def refresh_token_association(resource)
  resource.class.refresh_token_association
end
refresh_token_enabled?(resource) click to toggle source
# File lib/api_guard/jwt_auth/refresh_jwt_token.rb, line 11
def refresh_token_enabled?(resource)
  refresh_token_association(resource).present?
end
refresh_tokens_for(resource) click to toggle source
# File lib/api_guard/jwt_auth/refresh_jwt_token.rb, line 15
def refresh_tokens_for(resource)
  refresh_token_association = refresh_token_association(resource)
  resource.send(refresh_token_association)
end
uniq_refresh_token(resource) click to toggle source

Generate and return unique refresh token for the resource

# File lib/api_guard/jwt_auth/refresh_jwt_token.rb, line 25
def uniq_refresh_token(resource)
  loop do
    random_token = SecureRandom.urlsafe_base64
    return random_token unless refresh_tokens_for(resource).exists?(token: random_token)
  end
end