module Devise::Models::Approvable

Public Class Methods

included(base) click to toggle source
# File lib/devise_approvable/model.rb, line 5
def self.included(base)
  puts "Devise::Models::Approvable module injected into #{self.class} class"

  base.class_eval do
    extend ClassMethods

    before_create :generate_approval_token, :if => :approval_required?
    after_create  :send_approval_instructions, :unless => :approved?
  end
end

Public Instance Methods

active_for_authentication?() click to toggle source

override

Calls superclass method
# File lib/devise_approvable/model.rb, line 17
def active_for_authentication? 
    super && approved? 
end
approve!() click to toggle source
# File lib/devise_approvable/model.rb, line 31
def approve!
  self.approved_at = Time.now.utc
  self.approval_token = nil
  save(:validate => false)
end
approved?() click to toggle source

Verifies whether a user is confirmed or not

# File lib/devise_approvable/model.rb, line 38
def approved?
  !!self.approved_at
end
inactive_message() click to toggle source

override

Calls superclass method
# File lib/devise_approvable/model.rb, line 22
def inactive_message 
  if !approved? 
    :not_approved 
  else 
    super # Use whatever other message
  end 
end
send_approval_instructions() click to toggle source

Send approval instructions by email

# File lib/devise_approvable/model.rb, line 48
def send_approval_instructions
  unless @raw_approval_token
    generate_approval_token!
  end
  
  opts = { to: self.class.admin_email }
  send_devise_notification(:approval_instructions, @raw_approval_token, opts)
end
skip_approval!() click to toggle source
# File lib/devise_approvable/model.rb, line 42
def skip_approval!
  self.approved_at = Time.now.utc
  @skip_approval = true
end

Protected Instance Methods

approval_required?() click to toggle source
# File lib/devise_approvable/model.rb, line 59
def approval_required?
  !@skip_approval
end
generate_approval_token() click to toggle source
# File lib/devise_approvable/model.rb, line 67
def generate_approval_token
  raw, enc = Devise.token_generator.generate(self.class, :approval_token)
  @raw_approval_token   = raw
  self.approval_token   = enc
  self.approval_sent_at = Time.now.utc
end
generate_approval_token!() click to toggle source
# File lib/devise_approvable/model.rb, line 63
def generate_approval_token!
  generate_approval_token && save(validate: false)
end