authlogic_email_token 0.0.0 → 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 57a2824d5e5150536475eedf6d5307381d851dbd
|
4
|
+
data.tar.gz: 45b526b5dbf9e00ba96773ac3f1a54b708356b0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2d3a5f2de18520957d3efe718879c72fa64cb78684f1b71a011f63b0ab56fe95293c3b0e029e03443279704f34e9d9d20f1405330afaa3473646e755f7bebcb
|
7
|
+
data.tar.gz: dacab199324c87d1c0d7b33c0a2dc971fc5da3dc73bf44a369a7a0dc6680c2ea11457b491eb49a67a3f8c6a26f96cbd1b51f26cab28d0f4056d85c9b2c69d2e6
|
@@ -4,7 +4,7 @@
|
|
4
4
|
# Include this module in your +User+ model and add a +new_email+ column to the +users+
|
5
5
|
# table:
|
6
6
|
#
|
7
|
-
# add_column :users, :new_email, :string,
|
7
|
+
# add_column :users, :new_email, :string, after: :email
|
8
8
|
#
|
9
9
|
# You can then use the +new_email+ attribute in your account settings form like so:
|
10
10
|
#
|
@@ -25,7 +25,6 @@
|
|
25
25
|
#
|
26
26
|
|
27
27
|
module Authlogic::ActsAsAuthentic::EmailToken::Confirmation
|
28
|
-
|
29
28
|
# Call this when you have verified the user's email address. (Typically, as a result of
|
30
29
|
# the user clicking the link in a confirmation email.)
|
31
30
|
#
|
@@ -42,7 +41,7 @@ module Authlogic::ActsAsAuthentic::EmailToken::Confirmation
|
|
42
41
|
# +activation_method+.)
|
43
42
|
def confirm_email
|
44
43
|
send(self.class.activation_method) if respond_to?(self.class.activation_method)
|
45
|
-
if new_email.present?
|
44
|
+
if read_attribute(:new_email).present?
|
46
45
|
self.email = new_email
|
47
46
|
self.new_email = nil
|
48
47
|
end
|
@@ -84,6 +83,13 @@ module Authlogic::ActsAsAuthentic::EmailToken::Confirmation
|
|
84
83
|
# MyOtherMailer.whatever_message(user).deliver
|
85
84
|
# end
|
86
85
|
#
|
86
|
+
# Or, instead of providing a block, you can override the default names like so:
|
87
|
+
#
|
88
|
+
# acts_as_authentic do |c|
|
89
|
+
# c.confirmation_mailer_class = :MyOtherMailer
|
90
|
+
# c.confirmation_mailer_method = :whatever_message
|
91
|
+
# end
|
92
|
+
#
|
87
93
|
# Recommended usage looks something like this:
|
88
94
|
#
|
89
95
|
# class UsersController < ApplicationController
|
@@ -115,7 +121,11 @@ module Authlogic::ActsAsAuthentic::EmailToken::Confirmation
|
|
115
121
|
if block_given?
|
116
122
|
yield
|
117
123
|
else
|
118
|
-
|
124
|
+
name = self.class.confirmation_mailer_class.to_s
|
125
|
+
klass = name.split('::').inject(Object) do |mod, klass|
|
126
|
+
mod.const_get klass
|
127
|
+
end
|
128
|
+
klass.send(self.class.confirmation_mailer_method, self, controller).deliver
|
119
129
|
end
|
120
130
|
true
|
121
131
|
else
|
@@ -30,16 +30,33 @@ module Authlogic::ActsAsAuthentic::EmailToken
|
|
30
30
|
rw_config(:activation_method, value, :activate)
|
31
31
|
end
|
32
32
|
alias_method :activation_method=, :activation_method
|
33
|
+
|
34
|
+
# Configures the name of the confirmation mailer class.
|
35
|
+
# +Authlogic::ActsAsAuthentic::EmailToken::maybe_deliver_email_confirmation!+
|
36
|
+
# for more info.
|
37
|
+
def confirmation_mailer_class(value = nil)
|
38
|
+
rw_config(:confirmation_mailer_class, value, :UserMailer)
|
39
|
+
end
|
40
|
+
alias_method :confirmation_mailer_class=, :confirmation_mailer_class
|
41
|
+
|
42
|
+
# Configures the name of the confirmation mailer method.
|
43
|
+
# +Authlogic::ActsAsAuthentic::EmailToken::maybe_deliver_email_confirmation!+
|
44
|
+
# for more info.
|
45
|
+
def confirmation_mailer_method(value = nil)
|
46
|
+
rw_config(:confirmation_mailer_method, value, :email_confirmation)
|
47
|
+
end
|
48
|
+
alias_method :confirmation_mailer_method=, :confirmation_mailer_method
|
33
49
|
end
|
34
50
|
|
35
51
|
module Methods
|
36
52
|
def self.included(klass)
|
37
53
|
# Do nothing if the email_token column is missing. If the email_token column
|
38
54
|
# is present but not email_token_updated_at, raise.
|
39
|
-
if !klass.column_names.include? 'email_token'
|
55
|
+
if !klass.column_names.map(&:to_s).include? 'email_token'
|
40
56
|
return
|
41
|
-
elsif !klass.column_names.include? 'email_token_updated_at'
|
57
|
+
elsif !klass.column_names.map(&:to_s).include? 'email_token_updated_at'
|
42
58
|
raise(
|
59
|
+
::Authlogic::ActsAsAuthentic::EmailToken::DBStructureError,
|
43
60
|
"#{klass.name} has an email_token column but not email_token_updated_at. " +
|
44
61
|
" You must add the latter. (Should be :datetime, null: false.)"
|
45
62
|
)
|
@@ -80,6 +97,8 @@ module Authlogic::ActsAsAuthentic::EmailToken
|
|
80
97
|
age = age.to_i
|
81
98
|
|
82
99
|
# Authlogic builds its SQL by hand, but I prefer Arel. The logic is the same.
|
100
|
+
# No need to add an IS NOT NULL clause, because above, we return if the given
|
101
|
+
# token is blank.
|
83
102
|
t = arel_table
|
84
103
|
conditions = t[:email_token].eq(token)
|
85
104
|
if age > 0
|
@@ -104,7 +123,7 @@ module Authlogic::ActsAsAuthentic::EmailToken
|
|
104
123
|
self.email_token_updated_at = Time.now
|
105
124
|
self.email_token = Authlogic::Random.friendly_token
|
106
125
|
end
|
107
|
-
|
126
|
+
|
108
127
|
# Same as reset_email_token, but then saves the record afterwards.
|
109
128
|
def reset_email_token!
|
110
129
|
reset_email_token
|
@@ -112,4 +131,6 @@ module Authlogic::ActsAsAuthentic::EmailToken
|
|
112
131
|
end
|
113
132
|
end
|
114
133
|
end
|
134
|
+
|
135
|
+
class DBStructureError < StandardError; end
|
115
136
|
end
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: authlogic_email_token
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jarrett Colby
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-08-
|
11
|
+
date: 2014-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: authlogic
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +52,48 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: timecop
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: mocha
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: database_cleaner
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1'
|
55
97
|
description: Adds email_token and email_token_updated_at columns. Works like Authlogic's
|
56
98
|
perishable_token, but doesn't reset on every request. Designed primarily for verifying
|
57
99
|
users' email addresses.
|