Remember that we concented.
This commit is contained in:
34
app/models/oidc_user_consent.rb
Normal file
34
app/models/oidc_user_consent.rb
Normal file
@@ -0,0 +1,34 @@
|
||||
class OidcUserConsent < ApplicationRecord
|
||||
belongs_to :user
|
||||
belongs_to :application
|
||||
|
||||
validates :user, :application, :scopes_granted, :granted_at, presence: true
|
||||
validates :user_id, uniqueness: { scope: :application_id }
|
||||
|
||||
before_validation :set_granted_at, on: :create
|
||||
|
||||
# Parse scopes_granted into an array
|
||||
def scopes
|
||||
scopes_granted.split(' ')
|
||||
end
|
||||
|
||||
# Set scopes from an array
|
||||
def scopes=(scope_array)
|
||||
self.scopes_granted = Array(scope_array).uniq.join(' ')
|
||||
end
|
||||
|
||||
# Check if this consent covers the requested scopes
|
||||
def covers_scopes?(requested_scopes)
|
||||
requested = Array(requested_scopes).map(&:to_s)
|
||||
granted = scopes
|
||||
|
||||
# All requested scopes must be included in granted scopes
|
||||
(requested - granted).empty?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_granted_at
|
||||
self.granted_at ||= Time.current
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user