2013-08-18 09:37:38 -05:00
|
|
|
class UserActivator
|
2013-11-12 16:37:38 -06:00
|
|
|
attr_reader :user, :request, :session, :cookies, :message
|
2013-10-08 23:10:37 -05:00
|
|
|
|
|
|
|
def initialize(user, request, session, cookies)
|
2013-08-18 09:37:38 -05:00
|
|
|
@user = user
|
|
|
|
@session = session
|
|
|
|
@cookies = cookies
|
2013-10-08 23:10:37 -05:00
|
|
|
@request = request
|
2013-11-12 16:37:38 -06:00
|
|
|
@message = nil
|
2013-08-18 09:37:38 -05:00
|
|
|
end
|
|
|
|
|
2013-11-12 16:37:38 -06:00
|
|
|
def start
|
|
|
|
end
|
|
|
|
|
|
|
|
def finish
|
|
|
|
@message = activator.activate
|
2013-08-18 09:37:38 -05:00
|
|
|
end
|
|
|
|
|
2017-10-03 13:08:37 -05:00
|
|
|
def success_message
|
|
|
|
activator.success_message
|
|
|
|
end
|
|
|
|
|
2013-08-18 09:37:38 -05:00
|
|
|
private
|
|
|
|
|
|
|
|
def activator
|
2013-10-08 23:10:37 -05:00
|
|
|
factory.new(user, request, session, cookies)
|
2013-08-18 09:37:38 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def factory
|
2015-06-25 14:51:26 -05:00
|
|
|
invite = Invite.find_by(email: Email.downcase(@user.email))
|
2017-09-12 14:04:39 -05:00
|
|
|
|
|
|
|
if !user.active?
|
2013-08-18 09:37:38 -05:00
|
|
|
EmailActivator
|
2017-09-12 14:04:39 -05:00
|
|
|
elsif SiteSetting.must_approve_users? && !(invite.present? && !invite.expired? && !invite.destroyed? && invite.link_valid?)
|
|
|
|
ApprovalActivator
|
2013-08-18 09:37:38 -05:00
|
|
|
else
|
|
|
|
LoginActivator
|
|
|
|
end
|
2013-11-12 16:37:38 -06:00
|
|
|
end
|
2013-08-18 09:37:38 -05:00
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
class ApprovalActivator < UserActivator
|
|
|
|
def activate
|
2017-10-03 13:08:37 -05:00
|
|
|
success_message
|
|
|
|
end
|
|
|
|
|
|
|
|
def success_message
|
2013-08-18 09:37:38 -05:00
|
|
|
I18n.t("login.wait_approval")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class EmailActivator < UserActivator
|
|
|
|
def activate
|
2015-08-24 01:21:34 -05:00
|
|
|
email_token = user.email_tokens.unconfirmed.active.first
|
|
|
|
email_token = user.email_tokens.create(email: user.email) if email_token.nil?
|
|
|
|
|
2016-04-06 23:38:43 -05:00
|
|
|
Jobs.enqueue(:critical_user_email,
|
2013-08-18 09:37:38 -05:00
|
|
|
type: :signup,
|
|
|
|
user_id: user.id,
|
2015-08-24 01:21:34 -05:00
|
|
|
email_token: email_token.token
|
2013-08-18 09:37:38 -05:00
|
|
|
)
|
2017-10-03 13:08:37 -05:00
|
|
|
|
|
|
|
success_message
|
|
|
|
end
|
|
|
|
|
|
|
|
def success_message
|
2016-08-05 11:01:16 -05:00
|
|
|
I18n.t("login.activate_email", email: Rack::Utils.escape_html(user.email))
|
2013-08-18 09:37:38 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class LoginActivator < UserActivator
|
|
|
|
include CurrentUser
|
|
|
|
|
|
|
|
def activate
|
|
|
|
log_on_user(user)
|
|
|
|
user.enqueue_welcome_message('welcome_user')
|
2017-10-03 13:08:37 -05:00
|
|
|
success_message
|
|
|
|
end
|
|
|
|
|
|
|
|
def success_message
|
2013-08-18 09:37:38 -05:00
|
|
|
I18n.t("login.active")
|
|
|
|
end
|
|
|
|
end
|