discourse/app/controllers/finish_installation_controller.rb
Sam Saffron 30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00

78 lines
1.9 KiB
Ruby

# frozen_string_literal: true
class FinishInstallationController < ApplicationController
skip_before_action :check_xhr, :preload_json, :redirect_to_login_if_required
layout 'finish_installation'
before_action :ensure_no_admins, except: ['confirm_email', 'resend_email']
def index
end
def register
@allowed_emails = find_allowed_emails
@user = User.new
if request.post?
email = params[:email].strip
raise Discourse::InvalidParameters.new unless @allowed_emails.include?(email)
if existing_user = User.find_by_email(email)
@user = existing_user
send_signup_email
return redirect_confirm(email)
end
@user.email = email
@user.username = params[:username]
@user.password = params[:password]
@user.password_required!
if @user.save
@user.change_trust_level!(1) if @user.trust_level < 1
send_signup_email
return redirect_confirm(@user.email)
end
end
end
def confirm_email
@email = session[:registered_email]
end
def resend_email
@email = session[:registered_email]
@user = User.find_by_email(@email)
send_signup_email if @user.present?
end
protected
def send_signup_email
email_token = @user.email_tokens.unconfirmed.active.first
if email_token.present?
Jobs.enqueue(:critical_user_email,
type: :signup,
user_id: @user.id,
email_token: email_token.token)
end
end
def redirect_confirm(email)
session[:registered_email] = email
redirect_to(finish_installation_confirm_email_path)
end
def find_allowed_emails
return [] unless GlobalSetting.respond_to?(:developer_emails) && GlobalSetting.developer_emails.present?
GlobalSetting.developer_emails.split(",").map(&:strip)
end
def ensure_no_admins
preload_anonymous_data
raise Discourse::InvalidAccess.new unless SiteSetting.has_login_hint?
end
end