class FIS::Auth::Client

OAuth2 + PKCE helper class for authenticating against portal.flatironschool.com

Constants

CODE_CHALLENGE_METHOD

Public Class Methods

new() click to toggle source
# File lib/fis/auth/client.rb, line 12
def initialize
  @client = OAuth2::Client.new(
    Auth::CLIENT_ID,
    nil,
    site: Auth::PROVIDER_URL,
    redirect_uri: Auth::REDIRECT_URI
  )
end

Public Instance Methods

authorize_url() click to toggle source
# File lib/fis/auth/client.rb, line 21
def authorize_url
  @client.auth_code.authorize_url(
    code_challenge: code_challenge,
    code_challenge_method: CODE_CHALLENGE_METHOD
  )
end
get_token(code:) click to toggle source
# File lib/fis/auth/client.rb, line 28
def get_token(code:)
  @client.auth_code.get_token(code, code_verifier: code_verifier)
end

Private Instance Methods

code_challenge() click to toggle source
# File lib/fis/auth/client.rb, line 34
def code_challenge
  padded_result = Base64.urlsafe_encode64(Digest::SHA256.digest(code_verifier))
  padded_result.split('=')[0] # Remove trailing '='
end
code_verifier() click to toggle source
# File lib/fis/auth/client.rb, line 39
def code_verifier
  @code_verifier ||= SecureRandom.hex(128)
end