Module: SqlChatbot::Auth::Jwt

Defined in:
lib/sql_chatbot/auth/jwt.rb

Defined Under Namespace

Classes: TokenExpired, TokenInvalid

Constant Summary collapse

ALGORITHM =
"HS256"
DEFAULT_LIFETIME =

15 minutes

900

Class Method Summary collapse

Class Method Details

.generate_token(secret:, sub: nil, origin: nil, lifetime_seconds: DEFAULT_LIFETIME) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/sql_chatbot/auth/jwt.rb', line 14

def self.generate_token(secret:, sub: nil, origin: nil, lifetime_seconds: DEFAULT_LIFETIME)
  now = Time.now.to_i
  payload = {
    "iat" => now,
    "exp" => now + lifetime_seconds
  }
  payload["sub"] = sub if sub
  payload["origin"] = origin if origin
  ::JWT.encode(payload, secret, ALGORITHM)
end

.verify_token(token:, secret:) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/sql_chatbot/auth/jwt.rb', line 25

def self.verify_token(token:, secret:)
  ::JWT.decode(token, secret, true, algorithm: ALGORITHM).first
rescue ::JWT::ExpiredSignature
  raise TokenExpired, "Token expired"
rescue ::JWT::DecodeError
  raise TokenInvalid, "Invalid token"
end