Class: Mumukit::Auth::Token

Inherits:
Object
  • Object
show all
Defined in:
lib/mumukit/auth/token.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(jwt) ⇒ Token

Returns a new instance of Token.



7
8
9
# File 'lib/mumukit/auth/token.rb', line 7

def initialize(jwt)
  @jwt = jwt
end

Instance Attribute Details

#jwtObject (readonly)

Returns the value of attribute jwt.



5
6
7
# File 'lib/mumukit/auth/token.rb', line 5

def jwt
  @jwt
end

Class Method Details

.decode(encoded) ⇒ Object



31
32
33
34
35
# File 'lib/mumukit/auth/token.rb', line 31

def self.decode(encoded)
  Token.new JWT.decode(encoded, decoded_secret)[0]
rescue JWT::DecodeError => e
  raise Mumukit::Auth::InvalidTokenError.new(e)
end

.decode_header(header) ⇒ Object



37
38
39
40
# File 'lib/mumukit/auth/token.rb', line 37

def self.decode_header(header)
  raise Mumukit::Auth::InvalidTokenError.new('missing authorization header') if header.nil?
  decode header.split(' ').last
end

.decoded_secretObject



42
43
44
# File 'lib/mumukit/auth/token.rb', line 42

def self.decoded_secret
  JWT.base64url_decode(Mumukit::Auth.config.client_secret)
end

.encode(metadata) ⇒ Object



27
28
29
# File 'lib/mumukit/auth/token.rb', line 27

def self.encode()
  JWT.encode({aud: Mumukit::Auth.config.client_id, metadata: }, decoded_secret)
end

.encode_dummy_auth_header(metadata) ⇒ Object



23
24
25
# File 'lib/mumukit/auth/token.rb', line 23

def self.encode_dummy_auth_header()
  'dummy token ' + encode()
end

.from_rack_env(env) ⇒ Object



19
20
21
# File 'lib/mumukit/auth/token.rb', line 19

def self.from_rack_env(env)
  new(env.dig('omniauth.auth', 'extra', 'raw_info') || {})
end

Instance Method Details

#metadataObject



11
12
13
# File 'lib/mumukit/auth/token.rb', line 11

def 
   ||= jwt['metadata'] || {}
end

#verify_client!Object



15
16
17
# File 'lib/mumukit/auth/token.rb', line 15

def verify_client!
  raise Mumukit::Auth::InvalidTokenError.new('aud mismatch') if Mumukit::Auth.config.client_id != jwt['aud']
end