Class: Ask::Auth::Providers::Database
- Inherits:
-
Object
- Object
- Ask::Auth::Providers::Database
- Defined in:
- lib/ask/auth/providers/database.rb
Overview
ActiveRecord-backed token storage per user.
Expects a model with user_id, name, token, expires_at, refresh_token. Handles expiry: if the token has expired and a refresh token is available, calls refresh! using the stored refresh token.
Only used when a model is configured or available. Safely returns nil otherwise.
Instance Attribute Summary collapse
-
#model ⇒ Object
readonly
The model class used for credential storage.
Instance Method Summary collapse
- #call(name, user: nil) ⇒ Object
-
#initialize(model: default_model) ⇒ Database
constructor
A new instance of Database.
Constructor Details
#initialize(model: default_model) ⇒ Database
Returns a new instance of Database.
17 18 19 |
# File 'lib/ask/auth/providers/database.rb', line 17 def initialize(model: default_model) @model = model end |
Instance Attribute Details
#model ⇒ Object (readonly)
The model class used for credential storage.
15 16 17 |
# File 'lib/ask/auth/providers/database.rb', line 15 def model @model end |
Instance Method Details
#call(name, user: nil) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/ask/auth/providers/database.rb', line 21 def call(name, user: nil) return nil unless @model return nil unless user.respond_to?(:id) record = @model.respond_to?(:find_by) ? @model.find_by(user_id: user.id, name: name.to_s) : nil return nil unless record if record.respond_to?(:expired?) && record.expired? return nil unless record.respond_to?(:refresh!) record.refresh! record.reload if record.respond_to?(:reload) end record.respond_to?(:token) ? record.token : record end |