Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'db/fixtures/production/002_admin.rb')
-rw-r--r--db/fixtures/production/002_admin.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/db/fixtures/production/002_admin.rb b/db/fixtures/production/002_admin.rb
new file mode 100644
index 00000000000..1c7c89f7bbd
--- /dev/null
+++ b/db/fixtures/production/002_admin.rb
@@ -0,0 +1,40 @@
+user_args = {
+ email: ENV['GITLAB_ROOT_EMAIL'].presence || 'admin@example.com',
+ name: 'Administrator',
+ username: 'root',
+ admin: true
+}
+
+if ENV['GITLAB_ROOT_PASSWORD'].blank?
+ user_args[:password_automatically_set] = true
+ user_args[:force_random_password] = true
+else
+ user_args[:password] = ENV['GITLAB_ROOT_PASSWORD']
+end
+
+# Only admins can create other admin users in Users::CreateService so to solve
+# the chicken-and-egg problem, we pass a non-persisted admin user to the service.
+transient_admin = User.new(admin: true)
+user = Users::CreateService.new(transient_admin, user_args.merge!(skip_confirmation: true)).execute
+
+if user.persisted?
+ puts "Administrator account created:".color(:green)
+ puts
+ puts "login: root".color(:green)
+
+ if user_args.key?(:password)
+ puts "password: #{user_args[:password]}".color(:green)
+ else
+ puts "password: You'll be prompted to create one on your first visit.".color(:green)
+ end
+ puts
+else
+ puts "Could not create the default administrator account:".color(:red)
+ puts
+ user.errors.full_messages.map do |message|
+ puts "--> #{message}".color(:red)
+ end
+ puts
+
+ exit 1
+end