Class: EmailToken
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- EmailToken
show all
- Defined in:
- app/models/email_token.rb
Defined Under Namespace
Classes: TokenAccessError
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.confirm(token, scope: nil, skip_reviewable: false) ⇒ Object
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'app/models/email_token.rb', line 55
def self.confirm(token, scope: nil, skip_reviewable: false)
User.transaction do
email_token = confirmable(token, scope: scope)
return if email_token.blank?
email_token.update!(confirmed: true)
user = email_token.user
user.send_welcome_message = !user.active?
user.email = email_token.email
user.active = true
user.custom_fields.delete("activation_reminder")
user.save!
user.create_reviewable if !skip_reviewable
user.set_automatic_groups
DiscourseEvent.trigger(:user_confirmed_email, user)
Invite.redeem_for_existing_user(user) if scope == EmailToken.scopes[:signup]
user.reload
end
rescue ActiveRecord::RecordInvalid
end
|
.confirmable(token, scope: nil) ⇒ Object
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'app/models/email_token.rb', line 79
def self.confirmable(token, scope: nil)
return nil if token.blank?
relation = unconfirmed.active.includes(:user).where(token_hash: hash_token(token))
if !scope
relation.first
else
relation.where(scope: scope).first || relation.where(scope: nil).first
end
end
|
.enqueue_signup_email(email_token, to_address: nil) ⇒ Object
92
93
94
95
96
97
98
99
100
|
# File 'app/models/email_token.rb', line 92
def self.enqueue_signup_email(email_token, to_address: nil)
Jobs.enqueue(
:critical_user_email,
type: "signup",
user_id: email_token.user_id,
email_token: email_token.token,
to_address: to_address,
)
end
|
.hash_token(token) ⇒ Object
102
103
104
|
# File 'app/models/email_token.rb', line 102
def self.hash_token(token)
Digest::SHA256.hexdigest(token)
end
|
.scopes ⇒ Object
45
46
47
|
# File 'app/models/email_token.rb', line 45
def self.scopes
@scopes ||= Enum.new(signup: 1, password_reset: 2, email_login: 3, email_update: 4)
end
|
Instance Method Details
#token ⇒ Object
49
50
51
52
53
|
# File 'app/models/email_token.rb', line 49
def token
raise TokenAccessError.new if @token.blank?
@token
end
|