1diff --git a/lib/tasks/admin.rake b/lib/tasks/admin.rake
2index 37ef651f2b..b775129498 100644
3--- a/lib/tasks/admin.rake
4+++ b/lib/tasks/admin.rake
5@@ -107,3 +107,43 @@ task "admin:create" => :environment do
6 end
7
8 end
9+
10+desc "Creates a forum administrator noninteractively"
11+task "admin:create_noninteractively" => :environment do
12+ email = ENV["ADMIN_EMAIL"]
13+ existing_user = User.find_by_email(email)
14+
15+ # check if user account already exixts
16+ if existing_user
17+ admin = existing_user
18+ else
19+ # create new user
20+ admin = User.new
21+ end
22+
23+ admin.email = email
24+ admin.name = ENV["ADMIN_NAME"]
25+ admin.username = ENV["ADMIN_USERNAME"]
26+
27+ password = ENV["ADMIN_PASSWORD"]
28+ unless admin.confirm_password?(password)
29+ admin.password = password
30+ puts "Admin password set!"
31+ end
32+
33+ admin.active = true
34+
35+ # save/update user account
36+ saved = admin.save
37+ raise admin.errors.full_messages.join("\n") unless saved
38+
39+ puts "Account created successfully with username #{admin.username}" unless existing_user
40+
41+ # grant admin privileges
42+ admin.grant_admin!
43+ if admin.trust_level < 1
44+ admin.change_trust_level!(1)
45+ end
46+ admin.email_tokens.update_all confirmed: true
47+ admin.activate
48+end