mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Configure Admin Account
Adds a "Step 0" to the wizard if the site has no admin accounts where the user is prompted to finish setting up their admin account from the list of acceptable email addresses. Once confirmed, the wizard begins.
This commit is contained in:
53
app/controllers/finish_installation_controller.rb
Normal file
53
app/controllers/finish_installation_controller.rb
Normal file
@@ -0,0 +1,53 @@
|
||||
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
|
||||
Reference in New Issue
Block a user