Sha256: 9e17d86f22525742034a42f0adcafd323f38e2394bc46a7f40e2930f07f47dde

Contents?: true

Size: 1.32 KB

Versions: 1

Compression:

Stored size: 1.32 KB

Contents

class User < Forest::ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  store :settings, accessors: [:page_settings], coder: JSON

  before_create :assign_default_user_groups

  has_and_belongs_to_many :user_groups

  scope :by_email, -> (orderer = :asc) { order(email: orderer) }
  scope :by_first_name, -> (orderer = :asc) { order(first_name: orderer) }
  scope :by_last_name, -> (orderer = :asc) { order(last_name: orderer) }
  scope :for_user_group_name, -> (group_name) { joins(:user_groups).where('user_groups.name = ?', group_name).limit(1) }

  def self.resource_description
    "Users are the website editors, administrators and content managers who have access to the CMS. Users are organized by user groups."
  end

  def display_name
    [first_name, email].reject(&:blank?).first
  end

  def name
    [first_name, last_name].reject(&:blank?).join(' ')
  end

  def admin?
    in_group? 'admin'
  end

  def in_group?(name)
    user_groups.any? { |ug| ug.name == name }
  end

  private

    def assign_default_user_groups
      if self.class.count == 0
        self.user_groups << UserGroup.find_by_name('admin')
      end
    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
forest_cms-0.98.1 app/models/user.rb