From 50a9eeee6fc705d121d98292a122e83f367ec4c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= <mail@oliverguenther.de> Date: Wed, 11 Dec 2024 14:56:32 +0100 Subject: [PATCH] Allow setting the locked state of the admin user (#161) --- .changeset/pretty-cups-fail.md | 5 ++ charts/openproject/templates/secret_core.yaml | 3 ++ charts/openproject/values.yaml | 5 +- .../openproject/admin_user_seeding_spec.rb | 54 +++++++++++++++++++ 4 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 .changeset/pretty-cups-fail.md create mode 100644 spec/charts/openproject/admin_user_seeding_spec.rb diff --git a/.changeset/pretty-cups-fail.md b/.changeset/pretty-cups-fail.md new file mode 100644 index 0000000..49d280e --- /dev/null +++ b/.changeset/pretty-cups-fail.md @@ -0,0 +1,5 @@ +--- +"@openproject/helm-charts": minor +--- + +Allow setting admin user seeder as locked diff --git a/charts/openproject/templates/secret_core.yaml b/charts/openproject/templates/secret_core.yaml index 61cd7f0..5c37a63 100644 --- a/charts/openproject/templates/secret_core.yaml +++ b/charts/openproject/templates/secret_core.yaml @@ -20,6 +20,9 @@ stringData: OPENPROJECT_SEED_ADMIN_USER_PASSWORD_RESET: {{ .Values.openproject.admin_user.password_reset | quote }} OPENPROJECT_SEED_ADMIN_USER_NAME: {{ .Values.openproject.admin_user.name | quote }} OPENPROJECT_SEED_ADMIN_USER_MAIL: {{ .Values.openproject.admin_user.mail | quote }} + {{- if .Values.openproject.admin_user.locked }} + OPENPROJECT_SEED_ADMIN_USER_LOCKED: "true" + {{- end }} OPENPROJECT_HTTPS: {{ (.Values.develop | ternary "false" .Values.openproject.https) | quote }} OPENPROJECT_SEED_LOCALE: {{ .Values.openproject.seed_locale | quote }} {{- if .Values.ingress.enabled }} diff --git a/charts/openproject/values.yaml b/charts/openproject/values.yaml index ffec7be..7ecf3d4 100644 --- a/charts/openproject/values.yaml +++ b/charts/openproject/values.yaml @@ -318,12 +318,15 @@ openproject: ## Define admin user details # only applicable on first installation - # Note: Only applicable for versions >= 13.0 + # c.f. https://www.openproject.org/docs/installation-and-operations/configuration/#initial-admin-user-creation admin_user: password: "admin" password_reset: "true" name: "OpenProject Admin" mail: "admin@example.net" + # Uncomment if you want to lock the user after creation + # Relevant for automated deployments that seed LDAP or SSO + # locked: true ## Define OpenID Connect providers oidc: diff --git a/spec/charts/openproject/admin_user_seeding_spec.rb b/spec/charts/openproject/admin_user_seeding_spec.rb new file mode 100644 index 0000000..a6f2dbf --- /dev/null +++ b/spec/charts/openproject/admin_user_seeding_spec.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true +require 'spec_helper' + +describe 'admin user seeder configuration' do + let(:template) { HelmTemplate.new(default_values) } + + subject { template.dig('Secret/optest-openproject-core', 'stringData') } + + context 'when setting the seeder' do + let(:default_values) do + HelmTemplate.with_defaults(<<~YAML + openproject: + admin_user: + name: "Foo Bar" + YAML + ) + end + + it 'adds a respective ENV', :aggregate_failures do + expect(subject) + .to include("OPENPROJECT_SEED_ADMIN_USER_NAME" => "Foo Bar") + + expect(subject) + .not_to include("OPENPROJECT_SEED_ADMIN_USER_LOCKED" => "true") + end + end + + context 'when setting the admin as locked' do + let(:default_values) do + HelmTemplate.with_defaults(<<~YAML + openproject: + admin_user: + locked: true + YAML + ) + end + + it 'adds a respective ENV', :aggregate_failures do + expect(subject) + .to include("OPENPROJECT_SEED_ADMIN_USER_LOCKED" => "true") + end + end + + context 'when leaving defaults' do + let(:default_values) do + HelmTemplate.with_defaults({}) + end + + it 'the name is the default', :aggregate_failures do + expect(subject) + .to include("OPENPROJECT_SEED_ADMIN_USER_NAME" => "OpenProject Admin") + end + end +end