Sha256: 3509be85cffed5b3892688652c5011d5f8bd56b63a8ad6f76ec71f42d100aab4

Contents?: true

Size: 1.55 KB

Versions: 7

Compression:

Stored size: 1.55 KB

Contents

module Ddr
  module Auth
    module User
      extend ActiveSupport::Concern

      included do
        include Blacklight::User

        has_many :events, inverse_of: :user, class_name: "Ddr::Events::Event"

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

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

        # TODO Remove :trackable, :validatable
        devise :remote_user_authenticatable, :database_authenticatable, :rememberable, :trackable, :validatable

        attr_writer :group_service
      end

      module ClassMethods
        def find_by_user_key(key)
          self.send("find_by_#{Devise.authentication_keys.first}", key)
        end
      end

      # Copied from Hydra::User
      def user_key
        send(Devise.authentication_keys.first)
      end

      def group_service
        @group_service ||= GroupService.new
      end

      def to_s
        user_key
      end

      def ability
        @ability ||= ::Ability.new(self)
      end

      def groups
        @groups ||= group_service.user_groups(self)
      end

      def member_of?(group)
        group ? self.groups.include?(group) : false
      end
      
      def authorized_to_act_as_superuser?
        member_of? group_service.superuser_group
      end

      def principal_name
        user_key
      end

      def principals
        groups.dup << principal_name
      end

      def has_role?(obj, role)
        obj.principal_has_role?(principals, role)
      end

    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
ddr-models-1.7.0 lib/ddr/auth/user.rb
ddr-models-1.6.0 lib/ddr/auth/user.rb
ddr-models-1.5.0 lib/ddr/auth/user.rb
ddr-models-1.4.0 lib/ddr/auth/user.rb
ddr-models-1.3.0 lib/ddr/auth/user.rb
ddr-models-1.2.1 lib/ddr/auth/user.rb
ddr-models-1.2.0 lib/ddr/auth/user.rb