Sha256: 9d6c0d326386ff99b3af432500de41677c6a0f749ad010c2f3850d8407162abb

Contents?: true

Size: 1.1 KB

Versions: 16

Compression:

Stored size: 1.1 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

    validates :username, presence: true, uniqueness: true

    roles_table_name = Role.table_name

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

    def to_s
      username
    end

    # Override Devise::Models::Authenticatable#find_first_by_auth_conditions
    # so login can be authenticated against username or email
    def self.find_first_by_auth_conditions(warden_conditions)
      conditions = warden_conditions.dup
      login = conditions.delete(:login)
      if login
        where(conditions).where(
          ['lower(username) = :value OR lower(email) = :value',
           { value: login.downcase }]
        ).first
      else
        where(conditions).first
      end
    end

    def role?(role)
      roles.where(name: role.to_s.camelize).any?
    end
  end
end

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
gaku_core-0.3.0 app/models/gaku/user.rb
gaku_core-0.3.0.pre.4 app/models/gaku/user.rb
gaku_core-0.3.0.pre.3 app/models/gaku/user.rb
gaku_core-0.3.0.pre.2 app/models/gaku/user.rb
gaku_core-0.3.0.pre.1 app/models/gaku/user.rb
gaku_core-0.3.0.pre.0 app/models/gaku/user.rb
gaku-0.2.4 core/app/models/gaku/user.rb
gaku_core-0.2.4 app/models/gaku/user.rb
gaku-0.2.3 core/app/models/gaku/user.rb
gaku_core-0.2.3 app/models/gaku/user.rb
gaku-0.2.2 core/app/models/gaku/user.rb
gaku_core-0.2.2 app/models/gaku/user.rb
gaku-0.2.1 core/app/models/gaku/user.rb
gaku_core-0.2.1 app/models/gaku/user.rb
gaku-0.2.0 core/app/models/gaku/user.rb
gaku_core-0.2.0 app/models/gaku/user.rb