Sha256: e294d7ab71a24e88937ba42c1d3846afa44c0848c44e651dd5aa3d8f901e2911
Contents?: true
Size: 1.09 KB
Versions: 13
Compression:
Stored size: 1.09 KB
Contents
module Spotlight ## # Spotlight user mixins for roles module User extend ActiveSupport::Concern included do has_many :roles, class_name: 'Spotlight::Role', dependent: :destroy has_many :exhibits, class_name: 'Spotlight::Exhibit', through: :roles, source: 'resource', source_type: 'Spotlight::Exhibit' scope :with_roles, -> { where(id: Spotlight::Role.distinct.pluck(:user_id)) } before_create :add_default_roles end def superadmin? roles.where(role: 'admin', resource: Spotlight::Site.instance).any? end def exhibit_roles roles.where(resource_type: 'Spotlight::Exhibit') end def admin_roles exhibit_roles.where(role: 'admin') end def add_default_roles roles.build role: 'admin', resource: Spotlight::Site.instance unless self.class.any? end def invite_pending? invited_to_sign_up? && !invitation_accepted? end alias_attribute :user_key, :email ## # Class-level user mixins module ClassMethods def find_by_user_key(key) find_by email: key end end end end
Version data entries
13 entries across 13 versions & 1 rubygems