Module: Challah::AuthableUser

Defined in:
lib/challah/authable/user.rb

Defined Under Namespace

Modules: ClassMethods, InstanceMethods

Instance Method Summary (collapse)

Instance Method Details

- (Object) authable_user



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/challah/authable/user.rb', line 3

def authable_user
  unless included_modules.include?(InstanceMethods)
    include InstanceMethods
    extend ClassMethods
  end
  
  class_eval do
    cattr_accessor :protected_attributes
    
    validates_presence_of :first_name, :last_name, :email, :role_id, :username
    validates_uniqueness_of :email, :username
    validate :validate_new_password
    
    before_save :before_save_password
    
    belongs_to :role, :touch => true
    has_many :permission_users, :dependent => :destroy
    has_many :permissions, :through => :permission_users, :order => 'permissions.name'
    
    scope :active, where(:active => true).order('users.first_name, users.last_name')
    scope :inactive, where(:active => false).order('users.first_name, users.last_name')
    scope :with_role, lambda { |role| where([ "users.role_id = ?", role ]) }
    scope :search, lambda { |q| where([ 'users.first_name like ? OR users.last_name like ? OR users.email like ? OR users.username LIKE ?', "%#{q}%", "%#{q}%", "%#{q}%", "%#{q}%" ]) }
    after_save :save_permission_keys
    
    protect_attributes :api_key, :created_by, :crypted_password, :failed_login_count, :id, :last_login_at, :login_count, :permissions, :permissions_attributes, :permission_users, :permission_users_attributes, :persistence_token, :role_id, :updated_by
  end
end