mirror of
https://github.com/discourse/discourse.git
synced 2024-11-27 03:10:46 -06:00
54 lines
1.5 KiB
Ruby
54 lines
1.5 KiB
Ruby
|
class FinishInstallationController < ApplicationController
|
||
|
skip_before_filter :check_xhr, :preload_json, :redirect_to_login_if_required
|
||
|
layout 'finish_installation'
|
||
|
|
||
|
before_filter :ensure_no_admins, except: ['confirm_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)
|
||
|
|
||
|
return redirect_confirm(email) if User.where(email: email).exists?
|
||
|
|
||
|
@user.email = email
|
||
|
@user.username = params[:username]
|
||
|
@user.password = params[:password]
|
||
|
@user.password_required!
|
||
|
|
||
|
if @user.save
|
||
|
@email_token = @user.email_tokens.unconfirmed.active.first
|
||
|
Jobs.enqueue(:critical_user_email, type: :signup, user_id: @user.id, email_token: @email_token.token)
|
||
|
return redirect_confirm(@user.email)
|
||
|
end
|
||
|
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def confirm_email
|
||
|
@email = session[:registered_email]
|
||
|
end
|
||
|
|
||
|
protected
|
||
|
|
||
|
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
|
||
|
raise Discourse::InvalidAccess.new unless SiteSetting.has_login_hint?
|
||
|
end
|
||
|
end
|