Sha256: 5aa9d9c90623d83abe595fdc7092324b985f243080df9d6ad5fc0f14eb4f8f17

Contents?: true

Size: 1.28 KB

Versions: 115

Compression:

Stored size: 1.28 KB

Contents

module Ddr::Auth
  module User
    extend ActiveSupport::Concern

    included do
      delegate :can, :can?, :cannot, :cannot?, to: :ability

      validates_uniqueness_of :username, case_sensitive: false
      validates_format_of :email, with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/

      devise :database_authenticatable, :omniauthable, omniauth_providers: [:shibboleth]

      class_attribute :user_key_attribute
      self.user_key_attribute = Devise.authentication_keys.first
    end

    module ClassMethods
      def find_by_user_key(key)
        send("find_by_#{user_key_attribute}", key)
      end

      def from_omniauth(auth)
        user = find_by_user_key(auth.uid) ||
               new(user_key_attribute => auth.uid, :password => Devise.friendly_token)
        user.update!(email: auth.info.email,
                     display_name: auth.info.name,
                     first_name: auth.info.first_name,
                     last_name: auth.info.last_name,
                     nickname: auth.info.nickname)
        user
      end
    end

    # Copied from Hydra::User
    def user_key
      send(user_key_attribute)
    end

    def to_s
      user_key
    end

    def agent
      user_key
    end

    def ability
      @ability ||= AbilityFactory.call(self)
    end

  end
end

Version data entries

115 entries across 115 versions & 1 rubygems

Version Path
ddr-models-2.1.1 lib/ddr/auth/user.rb
ddr-models-2.1.0 lib/ddr/auth/user.rb
ddr-models-2.1.0.rc2 lib/ddr/auth/user.rb
ddr-models-2.1.0.rc1 lib/ddr/auth/user.rb
ddr-models-2.0.1 lib/ddr/auth/user.rb
ddr-models-2.0.0 lib/ddr/auth/user.rb
ddr-models-2.0.0.rc6 lib/ddr/auth/user.rb
ddr-models-2.0.0.rc5 lib/ddr/auth/user.rb
ddr-models-2.0.0.rc4 lib/ddr/auth/user.rb
ddr-models-2.0.0.rc3 lib/ddr/auth/user.rb
ddr-models-2.0.0.rc2 lib/ddr/auth/user.rb
ddr-models-2.0.0.rc1 lib/ddr/auth/user.rb
ddr-models-2.0.0.pre.5 lib/ddr/auth/user.rb
ddr-models-2.0.0.pre.4 lib/ddr/auth/user.rb
ddr-models-2.0.0.pre.3 lib/ddr/auth/user.rb