1379 Commits

Author SHA1 Message Date
Jan Sandbrink 857d51aee7 Merge pull request #23555 from opf/precise-ssrf-error
Be more precise about SSRF errors
2026-06-08 11:04:41 +02:00
Jan Sandbrink 40301c3463 Make SSRF error message more specific
Feedback from devs that were confronted with the "is not an allowed host"
message shows, that the message is not very actionable. It's not clear why something
that is clearly a legitimate and existing host would be considered "not allowed".

The new error message clearly points at the SSRF policy as the source. Making the
problem more search engine friendly and hopefully allowing admins to better understand
what they have to fix.
2026-06-08 09:34:34 +02:00
Jan Sandbrink 42ee5fc134 Allow to disable SSRF filter selectively in specs
Otherwise they would interfere with running specs when
recording VCR cassettes.
2026-06-08 08:15:39 +02:00
OpenProject Actions CI 523ef39065 Merge branch 'release/17.5' into dev 2026-06-01 14:42:29 +00:00
Oliver Günther c5f29b76d2 Merge remote-tracking branch 'origin/release/17.4' into release/17.5 2026-06-01 10:21:02 +02:00
Oliver Günther a74089024d Merge remote-tracking branch 'origin/release/17.3' into release/17.4 2026-06-01 10:20:50 +02:00
Alexander Brandon Coles 86e40ffffe Adapt specs to capybara_accessible_selectors 0.16
Refactors the custom `:list`/`:list_item` selectors onto CAS's
`add_role_selector` and drops the now-native `Capybara::Node::Simple#role`
hack. `:list_item` resolves the listitem role, so specs matching
non-listitem `<li>` are updated (`have_row` for the custom field table,
presentation dividers via CSS).

CAS 0.16 also resolves role selectors by computed role and accessible
name, which our CSS-styled tables and Primer menus do not expose through
plain markup. Affected feature specs switch to robust locators:
Capybara's `:table_row`, the FullCalendar `data-date`, and the action
menu's real accessible name ("Edit status").

The `:columnheader` `colindex` filter lost its off-by-one offset and now
uses the true 1-based `th` position. Also fixes Webhooks `RowComponent`
spec capitalization.
2026-05-29 20:41:25 +02:00
Jan Sandbrink 5b0a186795 Merge pull request #23258 from opf/non-duplicate-project-folders
Improve error handling around duplicate project folders
2026-05-21 11:30:31 +02:00
OpenProject Actions CI 7e1c003ba7 Merge branch 'release/17.4' into dev 2026-05-20 06:43:24 +00:00
OpenProject Actions CI 82c65d6a27 Merge branch 'release/17.3' into release/17.4 2026-05-20 06:42:24 +00:00
Oliver Günther 6ef24e9075 Merge pull request #23246 from opf/fix/journable-visibility
Explicitly call journable.visible? on the diff controller
2026-05-20 08:41:32 +02:00
Oliver Günther a20c63d9ed Adapt spec to wait for loaded page first 2026-05-19 22:00:43 +02:00
Oliver Günther e396a5bb53 Merge remote-tracking branch 'origin/release/17.4' into dev 2026-05-19 18:26:45 +02:00
Oliver Günther 637ec7d10f Merge remote-tracking branch 'origin/release/17.3' into release/17.4 2026-05-19 18:26:23 +02:00
Jan Sandbrink e7bee82f9e Introduce and use ConfidentialCache
It's like OpenProject::Cache, but it encrypts cached
values at rest. Callers that store confidential things in the cache
have been updated to use it, reducing the risk to expose secrets
to an attacker that obtained access to the contents of OpenProject's cache.
2026-05-19 15:56:53 +02:00
Jan Sandbrink 6b63442c1b Improve error handling around duplicate project folders
Don't allow to point two project storages to the same project_folder_id
if one of them is automatically managed. This ensures that ownership is
always consistently applied according to one project only.
2026-05-19 15:18:40 +02:00
Jan Sandbrink 90acd7a022 Merge pull request #22549 from opf/session-auth-csrf-protection
Consider Sec-Fetch-Site header for session auth
2026-05-18 08:59:56 +02:00
Marcello Rocha eea1aa6549 Deal with the move of Container into Dry::Core (#23189) 2026-05-13 11:27:24 +02:00
Eric Schubert adb709d220 [chore] fixed test expectations for users not logged in 2026-05-12 08:13:14 +02:00
Jan Sandbrink 6fed98298e Merge pull request #23080 from opf/core-health-validator
Move health validator to core
2026-05-07 08:13:45 +02:00
Jan Sandbrink 0e91c6ac03 Merge pull request #23071 from opf/core-health-components
Move health check components into core
2026-05-07 08:13:24 +02:00
Jan Sandbrink 6a6982b9a1 Merge pull request #23007 from opf/core-health-reports
Move storage of HealthReports into dedicated model
2026-05-07 08:13:06 +02:00
Jan Sandbrink 2d4a559cf9 Move health check components into core
The idea is to reuse them in the wikis module and probably elsewhere
as well, offering a similar look & feel.

The ReportComponent has been lightened for this, though. Previously
it included the page layout and a default to render when there was
no report. Now it only focusses on rendering an actual report and
leaves the rest up to the including component or page.
2026-05-06 16:39:32 +02:00
Jan Sandbrink 704f96e6b9 Move health validator to core
This is part of making health reports available to other modules
than storages as well. The base classes are essentially free of relevant
references to the storages module and only contain the glue code necessary
to fill a health report properly.
2026-05-06 13:03:57 +02:00
Jan Sandbrink 048b03e28b Move storage of HealthReports into dedicated model
So far they have only been stored in the Rails cache, making
them pretty volatile. They are now properly stored in the database,
theoretically allowing to also retrieve older health check results and
compare them to newer ones.

Translation responsibilities have been moved into respective components,
that are rendering the results.

This is part of a refactoring that moves health reports and their components
out of the storages module into the core, allowing them to be reused by different
modules.
2026-05-06 08:22:30 +02:00
Yauheni Suhakou 37620b1a9f [74354] Rename storage_id to integration_id (#23049)
* Rename `storage_id` to `integration_id`
2026-05-05 16:58:08 +02:00
Oliver Günther fa9f9c3c20 Add ssrf protection to nextcloud validator 2026-05-05 15:10:19 +02:00
Eric Schubert 1d89896fb5 [#73855] fix nextcloud file info query spec 2026-04-29 12:19:06 +02:00
Eric Schubert 2d38741b37 [#73855] fixed unit tests 2026-04-29 12:03:23 +02:00
Eric Schubert 44f61bf2ee [#73855] move URL escaping of location param to representer 2026-04-28 17:25:56 +02:00
Eric Schubert ca8f1606a7 [#73855] Fix nextcloud file info
- https://community.openproject.org/work_packages/73855
- reestablish escaping of the `location` attribute of nextcloud file
  info objects
- amend specs
2026-04-27 16:23:43 +02:00
Mir Bhatia c8148ab799 Fix more redirection HTTP statuses 2026-04-22 16:44:50 +02:00
Behrokh Satarnejad 7014e13d3e Merge pull request #22475 from opf/71063-create-a-pagination-component-based-on-the-primer-specification
[71063] Update PVC with new Pagination component and Banner styles
2026-03-25 14:02:04 +01:00
Klaus Zanders 039537ff58 Merge pull request #22426 from opf/fix-dashboard-flaky-spec
Attempt to fix several flaky specs
2026-03-23 09:44:12 +01:00
Klaus Zanders eba31d0ed6 Attempt to fix storage spec 2026-03-20 15:24:53 +01:00
Jan Sandbrink 971c29ceaa Only warn on version mismatch
We already did this for the check of the team folders app,
but apparently forgot to do it for other dependencies too.

The main motivation is that an error would prevent all other
health checks from running, even if we are just behind by one
patch level.

It should be enough to show a warning to users when the version
does not match expectations, but it's not a hard error that should
prevent further health checks.
2026-03-20 14:05:39 +01:00
Oliver Günther 468fa6de78 Adapt tests now that we use link_translate 2026-03-20 09:49:11 +01:00
Yauheni Suhakou 7e93d9f69a Update supported Nextcloud Integration app version (#22402)
Update versions & README
2026-03-19 17:10:45 +01:00
Jan Sandbrink cc858a37ce Merge pull request #22319 from opf/more-ampf-checks
Add further AMPF health checks
2026-03-17 10:45:14 +01:00
Jan Sandbrink 4f896e851c Add further AMPF health checks
After seeing error reports about folders that would not synchronize
properly, I realized that we had no way for an admin to quantify whether
all project folders exist or for how many the creation failed.

The two new checks should cover two important questions:
* Have all project storages already synced and created a project folder?
* Is there any project storage that has a linked project folder, but it's missing?
2026-03-16 16:48:35 +01:00
OpenProject Actions CI d2b0680ff4 Merge branch 'release/17.2' into dev 2026-03-13 04:17:03 +00:00
Jan Sandbrink 4cad35f4fb Don't break loop when folder creation fails
It's unclear to us why the creation of folder A should
also prevent the creation of folders B, C, D, E and F.

Most of the code around this is written in a way that it would
be fine with partial failures.

If no tests fail as a consequence of this change, I am inclined to
merge it.
2026-03-12 09:01:28 +01:00
Jan Sandbrink 9e576d8a95 Merge pull request #22311 from opf/reword-last-check
Rename "last check" to "last sync"
2026-03-11 16:41:28 +01:00
Jan Sandbrink 1e20effb91 Rename "last check" to "last sync"
This affects the section for "automatically managed project folders",
which actually does not indicate the time at which a dedicated health
CHECK was performed, but rather indicates the last time that an
AMPF sync was attempted and whether that succeeded or not.

This is confusing to users, because seemingly we have two health checks,
when in fact there's just a single health check. The AMPF job is a job
that performs a task and it can do so successfully or not. Hopefully this
change makes it more clear to users that if an error occurs during AMPF
sync, that something went wrong.
2026-03-11 15:31:11 +01:00
Alexander Brandon Coles 1114167834 Merge branch 'dev' into merge-release/17.2-20260311041612
# Conflicts:
#	config/locales/crowdin/fr.yml
2026-03-11 06:19:05 -03:00
Marcello Rocha 73911fcab8 Fix Sharepoint StorageFile building when Site and List have the same name (#22239)
* Removed unused objects... it seems some tests still relied on them.
* Adds validation keys that where missing
* Update the AMPF validator chaging the create folder validation
* Error handling on FileInfo validation and tests for the Site/List case
* Fix sharepoint factory to include the trailing slash

Co-authored-by: Jan Sandbrink <j.sandbrink@openproject.com>
2026-03-10 14:54:07 +01:00
Marcello Rocha 5076b9806d Merge pull request #22103 from opf/dependabot/bundler/dev/httpx-1.7.2
Bump httpx from 1.6.3 to 1.7.2
2026-03-09 10:19:27 +01:00
Marcello Rocha 95c66e1f5e Cleanup extreme edge case handling for nextcloud 2026-03-05 14:33:05 +01:00
Marcello Rocha 77e772bebc Ensure that Bearer is being used in the header 2026-03-04 10:58:20 +01:00
Marcello Rocha 97d8cd91fb Update tests and code for OAuthUserToken strategy 2026-03-03 17:15:27 +01:00