mirror of
https://github.com/discourse/discourse.git
synced 2025-04-02 08:05:59 +08:00
FEATURE: API endpoint for inviting an admin
This commit is contained in:
parent
c139498235
commit
1c498eb491
@ -288,6 +288,35 @@ class Admin::UsersController < Admin::AdminController
|
|||||||
render json: success_json
|
render json: success_json
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def invite_admin
|
||||||
|
|
||||||
|
email = params[:email]
|
||||||
|
unless user = User.find_by_email(email)
|
||||||
|
name = params[:name] if params[:name].present?
|
||||||
|
username = params[:username] if params[:username].present?
|
||||||
|
|
||||||
|
user = User.new(email: email)
|
||||||
|
user.password = SecureRandom.hex
|
||||||
|
user.username = UserNameSuggester.suggest(username || name || email)
|
||||||
|
user.name = User.suggest_name(name || username || email)
|
||||||
|
end
|
||||||
|
|
||||||
|
user.active = true
|
||||||
|
user.save!
|
||||||
|
user.grant_admin!
|
||||||
|
user.change_trust_level!(4)
|
||||||
|
user.email_tokens.update_all confirmed: true
|
||||||
|
|
||||||
|
email_token = user.email_tokens.create(email: user.email)
|
||||||
|
Jobs.enqueue(:user_email,
|
||||||
|
type: :account_created,
|
||||||
|
user_id: user.id,
|
||||||
|
email_token: email_token.token)
|
||||||
|
|
||||||
|
render json: success_json
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def fetch_user
|
def fetch_user
|
||||||
|
@ -84,6 +84,7 @@ Discourse::Application.routes.draw do
|
|||||||
|
|
||||||
|
|
||||||
post "users/sync_sso" => "users#sync_sso", constraints: AdminConstraint.new
|
post "users/sync_sso" => "users#sync_sso", constraints: AdminConstraint.new
|
||||||
|
post "users/invite_admin" => "users#invite_admin", constraints: AdminConstraint.new
|
||||||
|
|
||||||
resources :impersonate, constraints: AdminConstraint.new
|
resources :impersonate, constraints: AdminConstraint.new
|
||||||
|
|
||||||
|
@ -427,6 +427,18 @@ describe Admin::UsersController do
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context ".invite_admin" do
|
||||||
|
it 'should invite admin' do
|
||||||
|
xhr :post, :invite_admin, name: 'Bill', username: 'bill22', email: 'bill@bill.com'
|
||||||
|
response.should be_success
|
||||||
|
|
||||||
|
u = User.find_by(email: 'bill@bill.com')
|
||||||
|
u.name.should == "Bill"
|
||||||
|
u.username.should == "bill22"
|
||||||
|
u.admin.should == true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'can sync up sso' do
|
it 'can sync up sso' do
|
||||||
|
Loading…
x
Reference in New Issue
Block a user