Class: Mumukit::Auth::Token
- Inherits:
-
Object
- Object
- Mumukit::Auth::Token
- Defined in:
- lib/mumukit/auth/token.rb
Instance Attribute Summary collapse
-
#jwt ⇒ Object
readonly
Returns the value of attribute jwt.
Class Method Summary collapse
- .decode(encoded) ⇒ Object
- .decode_header(header) ⇒ Object
- .decoded_secret ⇒ Object
- .encode(metadata) ⇒ Object
- .encode_dummy_auth_header(metadata) ⇒ Object
- .from_rack_env(env) ⇒ Object
Instance Method Summary collapse
-
#initialize(jwt) ⇒ Token
constructor
A new instance of Token.
- #metadata ⇒ Object
- #verify_client! ⇒ Object
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
#jwt ⇒ Object (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_secret ⇒ Object
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
#metadata ⇒ Object
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 |