Class: StandardId::Api::AuthenticationGuard
- Inherits:
-
Object
- Object
- StandardId::Api::AuthenticationGuard
- Defined in:
- lib/standard_id/api/authentication_guard.rb
Instance Method Summary collapse
- #require_scopes!(session_manager, *required_scopes) ⇒ Object
- #require_session!(session_manager, request: nil) ⇒ Object
Instance Method Details
#require_scopes!(session_manager, *required_scopes) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/standard_id/api/authentication_guard.rb', line 22 def require_scopes!(session_manager, *required_scopes) api_session = require_session!(session_manager) expected_scopes = normalize_scopes(required_scopes) return api_session if expected_scopes.empty? token_scopes = extract_session_scopes(api_session) unless (token_scopes & expected_scopes).any? raise StandardId::InvalidScopeError, "Access token missing required scope. Requires one of: #{expected_scopes.join(', ')}" end api_session end |
#require_session!(session_manager, request: nil) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/standard_id/api/authentication_guard.rb', line 4 def require_session!(session_manager, request: nil) api_session = session_manager.current_session emit_session_validating(api_session, request) if api_session.blank? raise StandardId::NotAuthenticatedError, "Invalid or missing access token" elsif api_session.respond_to?(:expired?) && api_session.expired? emit_session_expired(api_session) raise StandardId::ExpiredSessionError, "Session has expired" elsif api_session.respond_to?(:revoked?) && api_session.revoked? session_manager.clear_session! raise StandardId::RevokedSessionError, "Session has been revoked" end emit_session_validated(api_session) api_session end |