Method: Sorcery::Model::Submodules::UserActivation.included

Defined in:
lib/sorcery/model/submodules/user_activation.rb

.included(base) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/sorcery/model/submodules/user_activation.rb', line 9

def self.included(base)
  base.sorcery_config.class_eval do
    attr_accessor :activation_state_attribute_name,               # the attribute name to hold activation state
                                                                  # (active/pending).
                                                                  
                  :activation_token_attribute_name,               # the attribute name to hold activation code
                                                                  # (sent by email).
                                                                  
                  :activation_token_expires_at_attribute_name,    # the attribute name to hold activation code
                                                                  # expiration date. 
                                                                  
                  :activation_token_expiration_period,            # how many seconds before the activation code
                                                                  # expires. nil for never expires.
                                                                  
                  :user_activation_mailer,                        # your mailer class. Required.
                  :activation_needed_email_method_name,           # activation needed email method on your
                                                                  # mailer class.
                                                                  
                  :activation_success_email_method_name,          # activation success email method on your
                                                                  # mailer class.
                                                                  
                  :prevent_non_active_users_to_login              # do you want to prevent or allow users that
                                                                  # did not activate by email to login?
  end
  
  base.sorcery_config.instance_eval do
    @defaults.merge!(:@activation_state_attribute_name             => :activation_state,
                     :@activation_token_attribute_name             => :activation_token,
                     :@activation_token_expires_at_attribute_name  => :activation_token_expires_at,
                     :@activation_token_expiration_period          => nil,
                     :@user_activation_mailer                      => nil,
                     :@activation_needed_email_method_name         => :activation_needed_email,
                     :@activation_success_email_method_name        => :activation_success_email,
                     :@prevent_non_active_users_to_login           => true)
    reset!
  end
  
  base.class_eval do
    # don't setup activation if no password supplied - this user is created automatically
    before_create :setup_activation, :if => Proc.new { |user| user.send(sorcery_config.password_attribute_name).present? }
    # don't send activation needed email if no crypted password created - this user is external (OAuth etc.)
    after_create  :send_activation_needed_email!, :if => Proc.new { |user| !user.external?}
  end
  
  base.sorcery_config.after_config << :validate_mailer_defined
  base.sorcery_config.after_config << :define_user_activation_mongoid_fields if defined?(Mongoid) and base.ancestors.include?(Mongoid::Document)
  base.sorcery_config.before_authenticate << :prevent_non_active_login
  
  base.extend(ClassMethods)
  base.send(:include, InstanceMethods)


end