Sha256: 5a630350007be0c87cf0faef2cb6e1477e892c7bc5d31ffc99dbb172e3f6a29a
Contents?: true
Size: 1.76 KB
Versions: 1
Compression:
Stored size: 1.76 KB
Contents
module DoorkeeperSequel module AccessGrantMixin extend ActiveSupport::Concern include SequelCompat include Doorkeeper::OAuth::Helpers include Doorkeeper::Models::Expirable include Doorkeeper::Models::Revocable include Doorkeeper::Models::Accessible include Doorkeeper::Models::Scopes included do plugin :validation_helpers plugin :timestamps many_to_one :application, class: 'Doorkeeper::Application' set_allowed_columns :resource_owner_id, :application_id, :expires_in, :redirect_uri, :scopes, :code_challenge, :code_challenge_method def before_validation generate_token if new? super end def validate super validates_presence [:resource_owner_id, :application_id, :token, :expires_in, :redirect_uri] validates_unique [:token] end def uses_pkce? pkce_supported? && code_challenge.present? end def pkce_supported? respond_to? :code_challenge end end module ClassMethods def by_token(token) first(token: token.to_s) end def revoke_all_for(application_id, resource_owner, clock = Time) where(application_id: application_id, resource_owner_id: resource_owner.id, revoked_at: nil) .update(revoked_at: clock.now.utc) end def generate_code_challenge(code_verifier) padded_result = Base64.urlsafe_encode64(Digest::SHA256.digest(code_verifier)) padded_result.split('=')[0] # Remove any trailing '=' end def pkce_supported? new.pkce_supported? end end private def generate_token self.token = UniqueToken.generate end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
doorkeeper-sequel-2.0.0 | lib/doorkeeper-sequel/mixins/access_grant_mixin.rb |