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