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
- .generate_token(secret:, sub: nil, origin: nil, lifetime_seconds: DEFAULT_LIFETIME) ⇒ Object
- .verify_token(token:, secret:) ⇒ Object
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 |