mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-12-01 12:24:28 +01:00
73 lines
1.1 KiB
Ruby
73 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# Add role-based functionalities to the user model
|
|
module UserRoleConcern
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
def admin?
|
|
has_role? :admin
|
|
end
|
|
|
|
def member?
|
|
has_role? :member
|
|
end
|
|
|
|
def manager?
|
|
has_role? :manager
|
|
end
|
|
|
|
def partner?
|
|
has_role? :partner
|
|
end
|
|
|
|
def privileged?
|
|
admin? || manager?
|
|
end
|
|
|
|
def role
|
|
if admin?
|
|
'admin'
|
|
elsif manager?
|
|
'manager'
|
|
elsif member?
|
|
'member'
|
|
else
|
|
'other'
|
|
end
|
|
end
|
|
end
|
|
|
|
class_methods do
|
|
def admins
|
|
User.with_role(:admin)
|
|
end
|
|
|
|
def members
|
|
User.with_role(:member)
|
|
end
|
|
|
|
def partners
|
|
User.with_role(:partner)
|
|
end
|
|
|
|
def managers
|
|
User.with_role(:manager)
|
|
end
|
|
|
|
def admins_and_managers
|
|
User.with_any_role(:admin, :manager)
|
|
end
|
|
|
|
def online_payers
|
|
User.with_any_role(:admin, :manager, :member)
|
|
end
|
|
|
|
def adminsys
|
|
return if Rails.application.secrets.adminsys_email.blank?
|
|
|
|
User.find_by('lower(email) = ?', Rails.application.secrets.adminsys_email&.downcase)
|
|
end
|
|
end
|
|
end
|