You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
docuseal/app/services/token_refresh_service.rb

33 lines
659 B

# frozen_string_literal: true
class TokenRefreshService
def initialize(params)
@params = params
end
def refresh_token
user = find_user
return nil unless user
user.access_token&.destroy
user.association(:access_token).reset
user.reload
user.create_access_token!
user.access_token.token
end
private
def find_user
external_user_id = @params.dig(:user, :external_id)&.to_i
return nil unless external_user_id
user = User.find_by(external_user_id: external_user_id)
Rails.logger.warn "Token refresh requested for non-existent user: external_id #{external_user_id}" unless user
user
end
end