Sha256: 125e26dbae7c37f3e8f8858c56cfb118b6513d17f4832e95407df7c2c4ee4cad

Contents?: true

Size: 1.74 KB

Versions: 5

Compression:

Stored size: 1.74 KB

Contents

require_relative '../validators/redirect_uri_validator'

module Doorkeeper
  module Orm
    module Sequel
      module ApplicationMixin
        extend ActiveSupport::Concern

        include SequelCompat
        include OAuth::Helpers
        include Models::Scopes
        include Doorkeeper::Orm::Sequel::RedirectUriValidator

        included do
          plugin :validation_helpers
          plugin :timestamps
          plugin :association_dependencies

          one_to_many :access_grants, class: 'Doorkeeper::AccessGrant'
          one_to_many :access_tokens, class: 'Doorkeeper::AccessToken'

          add_association_dependencies access_grants: :delete, access_tokens: :delete

          set_allowed_columns :name, :redirect_uri, :scopes

          def before_validation
            generate_uid
            generate_secret
            super
          end

          def validate
            super
            validates_presence [:name, :secret, :uid]
            validates_unique [:uid]
            validates_redirect_uri :redirect_uri

            if respond_to?(:validate_owner?)
              validates_presence [:owner_id] if validate_owner?
            end
          end
        end

        module ClassMethods
          def by_uid_and_secret(uid, secret)
            first(uid: uid.to_s, secret: secret.to_s)
          end

          def by_uid(uid)
            first(uid: uid.to_s)
          end
        end

        private

        def has_scopes?
          Doorkeeper::Application.columns.include?('scopes')
        end

        def generate_uid
          self.uid = UniqueToken.generate if uid.blank? && new?
        end

        def generate_secret
          self.secret = UniqueToken.generate if secret.blank? && new?
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
doorkeeper-sequel-1.4.0 lib/doorkeeper/orm/sequel/models/application_mixin.rb
doorkeeper-sequel-1.3.1 lib/doorkeeper/orm/sequel/models/application_mixin.rb
doorkeeper-sequel-1.3.0 lib/doorkeeper/orm/sequel/models/application_mixin.rb
doorkeeper-sequel-1.2.3 lib/doorkeeper/orm/sequel/models/application_mixin.rb
doorkeeper-sequel-1.2.2 lib/doorkeeper/orm/sequel/models/application_mixin.rb