diff --git a/app/components/open_project/common/inplace_edit_fields/display_fields/rich_text_area_component.rb b/app/components/open_project/common/inplace_edit_fields/display_fields/rich_text_area_component.rb index 2deb5e999ef..83467d90fa3 100644 --- a/app/components/open_project/common/inplace_edit_fields/display_fields/rich_text_area_component.rb +++ b/app/components/open_project/common/inplace_edit_fields/display_fields/rich_text_area_component.rb @@ -49,7 +49,7 @@ module OpenProject field_value, lines: 3) else - format_text(field_value) + format_text(field_value, object: model) end else t("placeholders.default") diff --git a/config/initializers/permissions.rb b/config/initializers/permissions.rb index 2544d40ef81..9d7eca42f1e 100644 --- a/config/initializers/permissions.rb +++ b/config/initializers/permissions.rb @@ -249,7 +249,8 @@ Rails.application.reloader.to_prepare do require: :member map.permission :add_subprojects, - { projects: %i[new create] }, + { projects: %i[new create], + "projects/identifier_suggestion": %i[show] }, permissible_on: :project, require: :member diff --git a/frontend/src/global_styles/primer/_overrides.sass b/frontend/src/global_styles/primer/_overrides.sass index cab1e1778d1..b7d2c98e92d 100644 --- a/frontend/src/global_styles/primer/_overrides.sass +++ b/frontend/src/global_styles/primer/_overrides.sass @@ -183,5 +183,5 @@ ul.SegmentedControl, grid-template-columns: min-content 1fr min-content grid-template-rows: min-content min-content - & .Banner-actions - margin: var(--base-size-8) 0 0 var(--base-size-8) + & .Banner-actions + margin: var(--base-size-8) 0 0 var(--base-size-8) diff --git a/spec/requests/projects/identifier_suggestion_spec.rb b/spec/requests/projects/identifier_suggestion_spec.rb index 4fb5e84bb20..7dd3443554f 100644 --- a/spec/requests/projects/identifier_suggestion_spec.rb +++ b/spec/requests/projects/identifier_suggestion_spec.rb @@ -71,6 +71,26 @@ RSpec.describe "GET /projects/identifier_suggestion", type: :rails_request do expect(response).to have_http_status(:unauthorized).or have_http_status(:redirect) end end + + context "when user has no permissions" do + current_user { create(:user) } + + it "returns forbidden" do + get "/projects/identifier_suggestion", params: { name: "Test" }, as: :json + expect(response).to have_http_status(:forbidden) + end + end + + context "when user has add_subprojects permission on a project" do + let(:project) { create(:project, identifier: "PRNT") } + + current_user { create(:user, member_with_permissions: { project => %i[add_subprojects] }) } + + it "returns a suggestion" do + get "/projects/identifier_suggestion", params: { name: "Test" }, as: :json + expect(response).to have_http_status(:ok) + end + end end context "with classic identifiers", with_settings: { work_packages_identifier: "classic" } do