Sha256: c44245c349fae6f930f0f12799b76e6906181bf5a1b866a6b6fe6b4a9a778580

Contents?: true

Size: 1.11 KB

Versions: 4

Compression:

Stored size: 1.11 KB

Contents

module Gaku
  class User < ActiveRecord::Base

    has_many :user_roles
    has_many :roles, through: :user_roles

    devise :database_authenticatable, :registerable,
           :recoverable, :rememberable, :trackable, :validatable

    store :settings, accessors: [:locale]

    attr_accessor :login

    before_create :default_language

    validates :username, presence: true, uniqueness: true

    roles_table_name = Role.table_name

    scope :admin, -> { includes(:roles).where("#{roles_table_name}.name" => 'admin') }

    def self.find_first_by_auth_conditions(warden_conditions)
      conditions = warden_conditions.dup
      if login = conditions.delete(:login)
        where(conditions).where(['lower(username) = :value OR lower(email) = :value', { value: login.downcase }]).first
      else
        where(conditions).first
      end
    end

    def has_role?(role_sym)
      roles.any? { |r| r.name.underscore.to_sym == role_sym }
    end

    def role?(role)
      !!self.roles.find_by_name(role.to_s.camelize)
    end

    private

    def default_language
      settings[:locale] = Preset.get('language')
    end

  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
gaku-0.0.2 core/app/models/gaku/user.rb
gaku_core-0.0.2 app/models/gaku/user.rb
gaku-0.0.1 core/app/models/gaku/user.rb
gaku_core-0.0.1 app/models/gaku/user.rb