Compare commits

..

695 Commits

Author SHA1 Message Date
Christopher Ng 5f0a45ee1c chore(files): Adapt to moved payload
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-13 17:31:25 -07:00
Christopher Ng fb87dc331b chore(files): Provide old node on moved
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-13 17:31:25 -07:00
Nextcloud bot 26aa322e44 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-14 00:21:21 +00:00
Kate 80f3227204 Merge pull request #47954 from nextcloud/fix/files/cache-search-query-parameter-name 2024-09-13 18:59:14 +02:00
provokateurin 714671a8a6 fix(files): Adjust Cache::searchQuery() parameter name to match interface
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-13 18:13:44 +02:00
Côme Chilliet bcb4e781a4 Merge pull request #47927 from nextcloud/fix/migrate-away-from-oc_app
Migrate away from OC_App to IAppManager
2024-09-13 17:44:38 +02:00
John Molakvoæ 032f17c795 Merge pull request #47945 from nextcloud/fix/external-storage-creds 2024-09-13 16:57:01 +02:00
nextcloud-command 233d307ba8 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-13 14:33:45 +00:00
John Molakvoæ (skjnldsv) 0f519f4856 fix(files_external): broken credentials dialog
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2024-09-13 14:32:07 +00:00
Côme Chilliet dfa994ef28 Merge pull request #47865 from nextcloud/admin_audit/enh/move-to-event-listeners-v2
Move admin_audit to proper event listeners v2
2024-09-13 16:21:44 +02:00
Côme Chilliet d76745553c fix: Fix phpdoc wording
Co-authored-by: Anna <anna@nextcloud.com>
Signed-off-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
2024-09-13 16:01:55 +02:00
Ferdinand Thiessen a90f0a6b36 Merge pull request #47883 from nextcloud/fix/setup-checks
fix(setup-checks): Ensure URL with webroot works
2024-09-13 13:42:41 +02:00
Joas Schilling df155fa3df Merge pull request #47933 from nextcloud/bugfix/noid/throw-precondition-failure-when-not-matching
fix(config): Throw PreconditionException always when it didn't match
2024-09-13 13:39:21 +02:00
Ferdinand Thiessen be1cd7a308 refactor(settings): CheckServerResponseTrait always expect absolute path
Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-13 13:09:40 +02:00
Ferdinand Thiessen 9e979d42b4 fix(setup-checks): Ensure URL with webroot works
We basically mock the way `URLGenerator::getAbsoluteURL` works,
so we must make sure that the URL might already contain the webroot.
Because `baseURL` and `cliURL` also contain the webroot we need to remove
the webroot from the URL first.

Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Daniel <mail@danielkesselberg.de>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-13 13:06:24 +02:00
github-actions[bot] 6aa387ea9e Merge pull request #47932 from nextcloud/automated/noid/master-update-psalm-baseline
[master] Update psalm-baseline.xml
2024-09-13 09:04:43 +00:00
Git'Fellow 413ba1a718 Merge pull request #47854 from nextcloud/validAppsFromAppStore
fix(appstore): Ensure returned apps from AppStore are valid
2024-09-13 10:55:33 +02:00
Côme Chilliet 7a16d01ea7 chore(tests): Fix Router test by mocking AppManager methods correctly
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-13 10:26:36 +02:00
Côme Chilliet 76f2bc0bfc fix: Replace OC_App::getAllApps with a method in AppManager
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-13 10:08:44 +02:00
Côme Chilliet 7ed583cb8e chore: Migrate cleanAppId and getAppPath calls to IAppManager from OC_App
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-13 10:08:43 +02:00
Git'Fellow dccfb6d68a fix: check if key is set
Co-authored-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-09-13 09:49:09 +02:00
Joas Schilling dcd97e1234 fix(config): Throw PreconditionException always when it didn't match
Previously even when the precondition did not match, the call "passed"
when the after value was the expected one. This however can lead to
race conditions, duplicate code excutions and other things.

Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-09-13 09:20:08 +02:00
nextcloud-command ce5fd09e75 chore(tests): Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2024-09-13 02:32:35 +00:00
Nextcloud bot c9e4598360 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-13 00:20:46 +00:00
Andy Scherzinger d0275a7702 Merge pull request #47930 from nextcloud/chore/noid/bump-db-version
build: bump version to run sha265 for background job arguments migration
2024-09-12 21:37:46 +02:00
Daniel Kesselberg 61e8450fbd chore: bump 3rdparty
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-09-12 18:17:46 +02:00
Daniel Kesselberg 0baa7ae27a build: bump version to run sha265 for background job arguments migration
Follow-up for https://github.com/nextcloud/server/pull/47769

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-09-12 17:57:39 +02:00
Josh 2480567005 Merge pull request #47526 from nextcloud/jtr/fix-ftp-custom-port-ui
fix(files_external): Handling in FTP UI for custom ports
2024-09-12 09:34:47 -04:00
Josh 56c744d263 Merge pull request #47527 from nextcloud/fix-sftp-custom-port-ui
fix(files_external): Handling in SFTP UI for custom ports
2024-09-12 09:34:32 -04:00
Côme Chilliet b6c286640f Merge pull request #47685 from nextcloud/fix/move-apihelper-to-oc-namespace
fix: Move OC_API into \OC\ApiHelper in standard namespace
2024-09-12 14:34:07 +02:00
Arthur Schiwon a2ac1d8be0 Merge pull request #47914 from nextcloud/fix/noid/ldap-range-index-check
fix(LDAP): check index before accessing it
2024-09-12 12:53:44 +02:00
Arthur Schiwon c8fc2e8a67 fix(LDAP): check index before accessing it
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-09-12 11:18:18 +02:00
Julius Knorr 15491d0866 Merge pull request #47913 from nextcloud/fix/whiteboard-app-bundles
fix: Add whiteboard to education and public sector bundle
2024-09-12 11:07:22 +02:00
Julius Knorr 38e0a89972 fix: Add whiteboard to education and public sector bundle
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2024-09-12 09:13:42 +02:00
Andy Scherzinger 8feef45506 Merge pull request #47906 from nextcloud/chore/trashbin-retention-config-cleanup
chore: Update trashbin retention documentation with exceeded quota details
2024-09-12 08:51:22 +02:00
Nextcloud bot ecdc144d1d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-12 00:20:20 +00:00
Christopher Ng a7f3bde2a7 chore: Update trashbin retention documentation with exceeded quota details
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-11 11:57:31 -07:00
Ferdinand Thiessen 5fc514877b Merge pull request #47586 from nextcloud/fix/color
fix(theming): Add migration to restore primary color after separating primary and background
2024-09-11 15:10:09 +02:00
Kate 0b16b20019 Merge pull request #47891 from nextcloud/fix/make-watcher-null-safe 2024-09-11 14:44:20 +02:00
nextcloud-command c91efd3cc4 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-11 11:53:41 +00:00
Ferdinand Thiessen 7a345f68dc fix(files): Make openMenu watcher null safe
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-11 13:44:12 +02:00
John Molakvoæ 2b5dd11d97 Merge pull request #47339 from nextcloud/fix/leave-share-instead-of-delete
fix: Display 'Leave share' instead of 'Delete'
2024-09-11 13:42:15 +02:00
skjnldsv bb37954abb fix(files_sharing): adjust permissions from custom edit and delete check methods
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-09-11 13:17:42 +02:00
Pytal 897c341c5d Merge pull request #47881 from nextcloud/fix/new-group-icon
fix(settings): Add back create group icon
2024-09-11 02:19:39 -07:00
Git'Fellow 8585b05357 fix(appstore): Ensure returned apps from AppStore are valid
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>

fix: lint

chore: remove space

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>

fix: check if response array is null

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>

chore: Add log
2024-09-11 11:12:59 +02:00
Daniel b787d2a85c Merge pull request #47884 from nextcloud/chore/blame-ignore
chore: Add another coding standard commit to the git blame ignore
2024-09-11 11:05:38 +02:00
Nextcloud bot 4bc8ba5b22 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-11 00:21:11 +00:00
Ferdinand Thiessen 7e4e61d8c4 chore: Add another coding standard commit to the git blame ignore
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-11 01:30:11 +02:00
nextcloud-command 934cc58cc2 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-10 21:30:55 +00:00
Christopher Ng e6b57e076d fix(settings): Add back create group icon
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-10 14:11:51 -07:00
Ferdinand Thiessen 9dbf88816c Merge pull request #47848 from nextcloud/fix/files-context-menu
fix(files): Reset context menu position on close
2024-09-10 18:13:13 +02:00
Ferdinand Thiessen 027fc052e7 fix: Adjust types of IQueryBuilder to properly allow joining with sub-query
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-10 17:51:27 +02:00
Ferdinand Thiessen 531862d474 fix: Use migration instead of repair step for restoring custom color
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-10 17:51:27 +02:00
Ferdinand Thiessen c7d9068be9 chore: Use IAppConfig instead of IConfig->getAppValue
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-10 17:51:26 +02:00
Ferdinand Thiessen ee1585d809 fix: Add repair step to restore primary color after separating primary and background
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-10 17:49:36 +02:00
Ferdinand Thiessen 4efd39ec23 fix(theming): Allow to specify a userId manually in BackgroundService
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-10 17:49:35 +02:00
Kate 979cc8712c Merge pull request #47662 from nextcloud/fix/notification/validate-rich-object-key-value-types 2024-09-10 17:40:46 +02:00
Robin Appelman a7eaed721c Merge pull request #47853 from nextcloud/clearify-swift-exception
fix: make swift connect exception message more informative
2024-09-10 16:45:19 +02:00
provokateurin a3da7456a7 fix(Activity): Restrict IEvent rich object parameters type
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-10 16:37:54 +02:00
provokateurin db68ea9496 fix(SetupCheck): Restrict SetupResult rich object parameters type
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-10 16:37:54 +02:00
provokateurin f7246a9b7a fix(INotification): Restrict rich object parameters type
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-10 16:37:42 +02:00
provokateurin d0a827a684 fix(RichObjectStrings/Validator): Validate key value types of rich object parameters
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-10 16:36:33 +02:00
John Molakvoæ 0858ff7a07 Merge pull request #47834 from nextcloud/retAppsManDis 2024-09-10 16:31:17 +02:00
Côme Chilliet 7d881b1bc3 chore: Add descriptions for new events and fix copyright year
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-10 16:20:30 +02:00
John Molakvoæ 4d3168fb24 fix(appstore): disabled appstore log level bump from debug to info
Co-authored-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
2024-09-10 16:00:56 +02:00
Côme Chilliet 957ac81a56 fix(admin_audit): Remove now unused methods and classes
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-10 14:48:15 +02:00
Côme Chilliet ec37338d73 chore(admin_audit): Fix License headers on new files
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-10 14:06:22 +02:00
Thomas Citharel f532d3b286 feat(admin_audit): Move admin_audit hooks to modern event listeners
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-09-10 14:06:12 +02:00
Carl Schwan 986a3d45f8 feat(user_ldap): Introduce user id assigned typed events for LDAP usage
Based on work from https://github.com/nextcloud/server/pull/32019

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-09-10 14:06:11 +02:00
Thomas Citharel 82ba7d763b chore: Code cleanup in lib/private/Console/Application
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-09-10 14:05:59 +02:00
Thomas Citharel c2150bd079 feat: Add mimetype into BeforePreviewFetchedEvent event
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-09-10 14:05:06 +02:00
nextcloud-command 4916551c57 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-10 11:28:20 +00:00
Richard Steinmetz 12ea0eb24a Merge pull request #47858 from nextcloud/fix/preview/handle-no-local-file
fix(preview): gracefully handle file not being opened in ProviderV2
2024-09-10 13:24:44 +02:00
Ferdinand Thiessen 49c2d1819e fix(files): Reset context menu position on close
* Resolves https://github.com/nextcloud/server/issues/46934

Ensure that after a right-click the context menu position is resetted,
so that pressing the "actions"-menu button it is displayed on the correct location.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-10 13:19:25 +02:00
Marcel Klehr 225f7ecdb9 Merge pull request #47860 from nextcloud/fix/create-template-write-event
fix: Only write once to template instead of create/copy
2024-09-10 10:04:17 +02:00
Pytal d4313c2b89 Merge pull request #47294 from nextcloud/fix/natural-order-tree
fix(files): Sort tree views correctly by natural order
2024-09-10 01:00:31 -07:00
Julius Knorr 46a4a16eb6 fix: Only write once to template instead of create/copy
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2024-09-10 09:43:42 +02:00
Richard Steinmetz bcf9f91893 fix(preview): gracefully handle file not being opened in ProviderV2
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2024-09-10 08:49:43 +02:00
Richard Steinmetz 5afe212103 Merge pull request #47737 from nextcloud/fix/also-allow-unsharing-for-circles
fix(caldav, carddav): also allow unsharing of circle shares
2024-09-10 07:42:17 +02:00
github-actions[bot] 2a663b28be Merge pull request #47816 from nextcloud/automated/noid/master-update-psalm-baseline
[master] Update psalm-baseline.xml
2024-09-10 02:57:48 +00:00
nextcloud-command c1d1fe918d chore(tests): Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2024-09-10 02:35:13 +00:00
Nextcloud bot a51c200cab Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-10 00:37:30 +00:00
nextcloud-command 569bd1a589 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-09 23:23:10 +00:00
Christopher Ng 060783c4f4 fix(files): Render folders in natural sort order
- Nodes are returned from the endpoint in an undefined order

Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-09 16:11:43 -07:00
Christopher Ng 6b079e67a2 fix(files): Sort tree views correctly by natural order
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-09 16:11:43 -07:00
Christopher Ng a0f2be2a50 chore(deps): Bump @nextcloud/files to v3.9.0
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-09 16:11:43 -07:00
Andy Scherzinger 8ea42224ec Merge pull request #47845 from nextcloud/feat/webhook_listeners-remove-all-from-appid
Add an endpoint to remove all webhook registrations from an app
2024-09-09 20:39:56 +02:00
Kate 3a85997940 Merge pull request #47523 from nextcloud/fix/theming/custom-apps-order 2024-09-09 18:04:41 +02:00
Robin Appelman 508d8e7c01 fix: make swift connect exception message more informative
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-09-09 17:15:01 +02:00
provokateurin c0ac27951b docs(config): Explain how to retrieve navigation entry IDs for 'defaultapp' option
Signed-off-by: provokateurin <kate@provokateurin.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-09 15:05:46 +00:00
Jonas 0e4438fc04 Merge pull request #47841 from nextcloud/fix/files-sharing-openfile
fix(files_sharing): Open single-file-share by default
2024-09-09 16:44:15 +02:00
Grigorii K. Shartsev 4e68e88f2c Merge pull request #47807 from nextcloud/fix/files_sharing--password-label
fix(files_sharing): password checkbox and labels in link share
2024-09-09 19:41:46 +05:00
Ferdinand Thiessen 80e4319a2c Merge pull request #47803 from nextcloud/chore/add-migration-attribute
chore(files_sharing): Add migration attribute for `share.reminder_sent` column
2024-09-09 16:21:42 +02:00
nextcloud-command 6ffe6e1e39 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-09 13:13:26 +00:00
Grigorii K. Shartsev 692a8ed2c3 chore(assets): Recompile assets
Signed-off-by: Grigorii K. Shartsev <me@shgk.me>
2024-09-09 14:58:30 +02:00
Grigorii K. Shartsev 9348c1efba fix(files_sharing): add accessible labels in link share creation
Signed-off-by: Grigorii K. Shartsev <me@shgk.me>
2024-09-09 14:58:30 +02:00
Grigorii K. Shartsev 2fea735418 fix(files_sharing): checkbox for password in link share is not shown
Signed-off-by: Grigorii K. Shartsev <me@shgk.me>
2024-09-09 14:58:30 +02:00
Côme Chilliet 22a2893add chore(webhook_listeners): Update openapi.json
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-09 14:50:52 +02:00
Ferdinand Thiessen fccb132e2b fix(files_sharing): Open single-file-share by default
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-09 14:49:21 +02:00
Côme Chilliet 4459af41c9 feat(webhook_listeners): Add API endpoint to remove all registrations from an AppAPI app
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-09 14:41:20 +02:00
Côme Chilliet 4fc8aa5a06 feat(webhook_listeners): Add mapper method to remove all registrations from a given AppAPI id
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-09 14:39:41 +02:00
Ferdinand Thiessen 00712c22b3 Merge pull request #47805 from nextcloud/fix/xml-exception-template
fix: Replace conflicting tags in `xml_exception` template
2024-09-09 13:44:48 +02:00
Ferdinand Thiessen 61981386b2 fix: Replace conflicting tags in xml_exception template
The `<?xml` tag is interpreted as PHP short tags, so this causes errors.
Instead just print that part of the template.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-09 13:27:06 +02:00
provokateurin d5e98cd190 fix(NavigationManager): Skip invalid default navigation entries
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-09 11:04:36 +02:00
provokateurin 0a3093d05d fix(theming): Use NavigationManager to handle default entries
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-09 11:04:36 +02:00
provokateurin 669641142b fix(TemplateLayout): Use NavigationManager to get default app name
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-09 11:04:36 +02:00
provokateurin 01ec6762a2 fix(URLGenerator): Use NavigationManager to generate default page URL
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-09 11:04:36 +02:00
provokateurin 70ed08daf1 refactor(AppManager): Deprecated default apps handling
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-09 11:04:36 +02:00
provokateurin b0baaaed9d feat(NavigationManager): Add default entries handling
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-09 11:04:36 +02:00
Kate 0f732199d2 Merge pull request #47837 from nextcloud/fix/files/dav-etag 2024-09-09 11:04:08 +02:00
Côme Chilliet 90a948506b chore: Make parameter name more explicit
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-09 10:46:29 +02:00
Côme Chilliet 42c5a60c29 fix: Force 503 HTTP status code for maintenance mode on v1
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-09 10:46:29 +02:00
Côme Chilliet 76d1b11bc9 chore: Deleted now unused classes from \OC\OCS
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-09 10:46:29 +02:00
Côme Chilliet 359bbce3af chore: Adapt tests to OC_API refactoring
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-09 10:46:29 +02:00
Côme Chilliet e184784f86 fix: Remove duplicated code in \OC\OCS\ApiHelper, use Response classes instead
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-09 10:46:29 +02:00
Côme Chilliet 4c9104ef08 fix: Move ApiHelper to \OC\OCS next to related classes
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-09 10:46:29 +02:00
Côme Chilliet 37569466de fix: A bit of code cleanup in OC\AppFramework\OCS\ApiHelper
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-09 10:46:29 +02:00
Côme Chilliet ea32d17d88 fix: Move OC_API into \OC\ApiHelper in standard namespace
It’s only used by ocs/v1.php

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-09 10:46:29 +02:00
Marcel Klehr 1fa674d907 Merge pull request #47824 from nextcloud/rakekniven-patch-3
chore(i18n): adapted lowercase
2024-09-09 10:40:48 +02:00
provokateurin 70fa51f042 fix(files): Never return a null ETag in DAV
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-09 10:30:33 +02:00
nextcloud-command 19b0792850 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-09 07:57:19 +00:00
Git'Fellow 2ac8d9a3db fix(appstore): return if appstore is manually disabled
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>

fix: camel case

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>

fix: log a debug log

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>

fix: typing

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>

fix: typo

fix: typing
2024-09-09 09:56:22 +02:00
rakekniven e6bfd8f213 fix: Update AdminAI.vue
Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2024-09-09 09:53:39 +02:00
rakekniven 784fc4aa3f chore(i18n): adapted lowercase
Reported at Transifex

Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2024-09-09 09:50:59 +02:00
Nextcloud bot a2cfcf3ca7 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-09 00:23:27 +00:00
Nextcloud bot 926bd29617 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-08 00:36:35 +00:00
Ferdinand Thiessen 46472d3f4c Merge pull request #43281 from nextcloud/feature/minSupportDesktopVerMsg
enh: update desktop client unsupported version (403) error message
2024-09-07 16:24:27 +02:00
dependabot[bot] 80f459d82a Merge pull request #47820 from nextcloud/dependabot/npm_and_yarn/underscore-1.13.7 2024-09-07 12:52:02 +00:00
Ferdinand Thiessen 1c52bd7704 Merge pull request #47808 from nextcloud/rakekniven-patch-2
chore(i18n): Spelling of ID
2024-09-07 14:06:12 +02:00
Ferdinand Thiessen 68a37b015c Merge pull request #47821 from nextcloud/dependabot/npm_and_yarn/puppeteer-23.3.0
chore(deps-dev): bump puppeteer from 22.15.0 to 23.3.0
2024-09-07 13:57:15 +02:00
Ferdinand Thiessen fb28ba1b64 Merge pull request #47806 from nextcloud/chore/cleanup-public-share
chore(files_sharing): Do not use files source files but directly the library
2024-09-07 13:56:14 +02:00
dependabot[bot] 57c11af532 chore(deps): bump underscore from 1.13.6 to 1.13.7
Bumps [underscore](https://github.com/jashkenas/underscore) from 1.13.6 to 1.13.7.
- [Commits](https://github.com/jashkenas/underscore/compare/1.13.6...1.13.7)

---
updated-dependencies:
- dependency-name: underscore
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-07 11:34:51 +00:00
dependabot[bot] 6af3dc8617 Merge pull request #47823 from nextcloud/dependabot/npm_and_yarn/vueuse/components-11.0.3 2024-09-07 10:01:33 +00:00
dependabot[bot] 1907488819 chore(deps): bump @vueuse/components from 11.0.0 to 11.0.3
Bumps [@vueuse/components](https://github.com/vueuse/vueuse/tree/HEAD/packages/components) from 11.0.0 to 11.0.3.
- [Release notes](https://github.com/vueuse/vueuse/releases)
- [Commits](https://github.com/vueuse/vueuse/commits/v11.0.3/packages/components)

---
updated-dependencies:
- dependency-name: "@vueuse/components"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-07 09:47:42 +00:00
dependabot[bot] eefa190336 Merge pull request #47818 from nextcloud/dependabot/npm_and_yarn/cypress-if-1.12.6 2024-09-07 09:25:00 +00:00
dependabot[bot] 9001e71cb7 chore(deps-dev): bump cypress-if from 1.12.5 to 1.12.6
Bumps [cypress-if](https://github.com/bahmutov/cypress-if) from 1.12.5 to 1.12.6.
- [Release notes](https://github.com/bahmutov/cypress-if/releases)
- [Commits](https://github.com/bahmutov/cypress-if/compare/v1.12.5...v1.12.6)

---
updated-dependencies:
- dependency-name: cypress-if
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-07 09:12:31 +00:00
dependabot[bot] 27eb634b18 Merge pull request #47819 from nextcloud/dependabot/npm_and_yarn/cypress-13.14.2 2024-09-07 09:11:01 +00:00
dependabot[bot] e0e7da7841 Merge pull request #47822 from nextcloud/dependabot/npm_and_yarn/stylelint-16.9.0 2024-09-07 03:32:12 +00:00
dependabot[bot] 111e410084 chore(deps-dev): bump stylelint from 16.8.2 to 16.9.0
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.8.2 to 16.9.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.8.2...16.9.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-07 02:52:12 +00:00
dependabot[bot] fe39928b49 chore(deps-dev): bump puppeteer from 22.15.0 to 23.3.0
Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 22.15.0 to 23.3.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/release-please-config.json)
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v22.15.0...puppeteer-v23.3.0)

---
updated-dependencies:
- dependency-name: puppeteer
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-07 02:51:48 +00:00
dependabot[bot] 39e492547d chore(deps-dev): bump cypress from 13.13.2 to 13.14.2
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.13.2 to 13.14.2.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.13.2...v13.14.2)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-07 02:50:21 +00:00
Nextcloud bot 7a6191ebb9 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-07 00:36:58 +00:00
nextcloud-command e3dcea65af chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-06 20:22:49 +00:00
rakekniven b8774816f6 chore(i18n): Spelling of ID
Reported at Transifex

Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2024-09-06 19:21:07 +02:00
Ferdinand Thiessen 5fc715a9e2 fix: Adjust unit tests and protect against XSS
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 17:16:10 +02:00
Camila 0a72756d96 fix(dav): Update 403 error message
* The user should get a more friendly warning when their desktop client version is not supported anymore by the server.
  See #nextcloud/desktop/issues/6273
* Update BlockLegacyClientPluginTest to reflect the new 403 error message.

Signed-off-by: Camila Ayres <hello@camilasan.com>
2024-09-06 17:15:45 +02:00
Ferdinand Thiessen f06fdb04a3 chore(files_sharing): Do not use files source files but directly the library
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 16:53:42 +02:00
Ferdinand Thiessen a05e5428c5 Merge pull request #47802 from nextcloud/fix/fallback-icons
fix(files): Fallback icons should fill the container
2024-09-06 15:39:41 +02:00
Anupam Kumar 61a2d99874 Merge pull request #47801 from nextcloud/fix/taskproc/error-msg
fix(TaskProcessing): increase error_message column length
2024-09-06 18:55:10 +05:30
nextcloud-command 890699bd54 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-06 13:17:55 +00:00
Ferdinand Thiessen 1ea902a195 chore(files_sharing): Add migration attribute for share.reminder_sent column
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 14:46:33 +02:00
Anupam Kumar 31a983ac69 chore: update autoloader
Signed-off-by: Anupam Kumar <kyteinsky@gmail.com>
2024-09-06 18:02:15 +05:30
Anupam Kumar bb94b17959 fix(TaskProcessing): increase error_message column length
Signed-off-by: Anupam Kumar <kyteinsky@gmail.com>
2024-09-06 18:01:56 +05:30
Ferdinand Thiessen b7e2d5032f fix(files): Fallback icons should fill the container
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 14:08:51 +02:00
Marcel Klehr c43353d6e6 fix: Display 'Leave share' instead of 'Delete'
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2024-09-06 13:50:52 +02:00
Pytal 46340d1d39 Merge pull request #47649 from nextcloud/fix/footer-overlap
fix: Fix inaccessible content on public pages due to overlapping footer
2024-09-06 04:43:55 -07:00
Ferdinand Thiessen 219f1f9189 Merge pull request #45652 from nextcloud/feat/migrate-files-sharing-public-to-vue
feat(files_sharing): Migrate public shares to Vue
2024-09-06 13:17:07 +02:00
Ferdinand Thiessen 117aaf4c1d Merge pull request #47731 from nextcloud/refactStorDav
chore(storage): refactor some code portions
2024-09-06 13:16:36 +02:00
Git'Fellow a36738dbfc chore(storage): refactor some code portions
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>

chore: revert portion

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-09-06 12:44:48 +02:00
Ferdinand Thiessen ba73beaac1 Merge pull request #47784 from nextcloud/fix/file-info
fix(FileInfo): correctly implement `\ArrayAccess::offsetGet`
2024-09-06 12:18:30 +02:00
Ferdinand Thiessen 141fed839a Merge pull request #47756 from nextcloud/fixingPathShareCheck
fix(files): Check if target path is a descendant of the shared folder
2024-09-06 03:58:24 +02:00
Ferdinand Thiessen a96406086c fix(FileInfo): correctly implement \ArrayAccess::offsetGet
We are targetting PHP 8.1+, since PHP 8.0 `offsetGet` has the `mixed` types for `offset` and return value.
So this adds the types to correctly implement the interface.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:58:00 +02:00
Ferdinand Thiessen 6249125f7c chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:53 +02:00
Ferdinand Thiessen 4a90d5328c test: Add end-to-end tests for new public share Vue UI
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:48 +02:00
Ferdinand Thiessen be884eeaec fix(files): "Edit locally" action should not be shown on public shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:48 +02:00
Ferdinand Thiessen 018af2a2fe fix(files): Do not add click listener if there is no default action on public shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:48 +02:00
Ferdinand Thiessen cb4c569486 fix(files_sharing): Ensure sidebar share entry lists are labelled
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:48 +02:00
Ferdinand Thiessen c9dc0afcb1 fix(files): "New folder" menu entry requires read permission
This will disable "New folder" menu entry for file-drop shares.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:48 +02:00
Ferdinand Thiessen 11fdf4e2a7 chore(files_sharing): Remove now unused legacy scripts
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen 80033bde88 fix(files): Disable internal views on public shares
This is needed because some views have side effects, like `favorites` doing requests on registration time.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen 1dafdce3e7 fix(files_sharing): Set file-request header for nextcloud/upload
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen 3134053497 fix(files_sharing): Disable sharing status action for public shares
This is disabled to not leak personal information into the public

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen 1d16bc47ff fix(files_sharing): Handle download permission the same way for public and internal shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen e93ceea804 fix(files): Do not allow copy action on public shares without create permission
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen a84de3c755 feat(files): Allow to download files on public shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen ada6a61688 fix(files): Do not allow rename action on single-file-shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen 563f8e7c5d refactor(files_sharing): Make file structure more clear
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen f0a765ee46 fix(files): Disable copy-move-action of single file shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen f109c1a044 refactor(files): Make RouterService provide a protected getter for the router to allow injecting the files_sharing router
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen 82a7a3971d fix(files): Adjust files list for sharing permissions on public shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen 819f5cea9b fix(files): Fix file previews for public shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen 767e87a466 fix(files): Do not use favorite, sidebar and view-in-folder action for public shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen 96c8275586 feat(files_sharing): Migrate public share to use Vue files list
Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:42 +02:00
Nextcloud bot e4fa996701 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-06 00:25:10 +00:00
nextcloud-command 7594c79834 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-05 23:33:10 +00:00
Christopher Ng d43ec7d966 chore: compile scss
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-05 16:19:22 -07:00
Christopher Ng 65ced2dd40 fix: Fix inaccessible content on public pages due to overlapping footer
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-05 16:19:22 -07:00
Git'Fellow 0308001118 fix(files): Check if the target path is a descendant of the shared folder path
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>

fix: tests

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>

fix: fix tests

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>

fix: add tests

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>

fix: tests
2024-09-05 23:54:01 +02:00
Anna 9aafc0f989 Merge pull request #47789 from nextcloud/fix/cs-fixer-errors
chore: adjust code to adhere to coding standard
2024-09-05 22:25:34 +02:00
Anna Larch 17ef20c5f3 fix(dav): also allow unsharing of circle shares
Signed-off-by: Anna Larch <anna@nextcloud.com>
2024-09-05 21:34:20 +02:00
Anna Larch 3d3ab10655 chore: add coding standard code change to .git-blame-ignore-revs
Signed-off-by: Anna Larch <anna@nextcloud.com>
2024-09-05 21:31:05 +02:00
Anna Larch 8af7ecb257 chore: adjust code to adhere to coding standard
Signed-off-by: Anna Larch <anna@nextcloud.com>
2024-09-05 21:23:38 +02:00
Louis 4566cf791d Merge pull request #47770 from nextcloud/artonge/fix/always_respond_custom_error_page_on_exceptions
fix(dav): Always respond custom error page on exceptions
2024-09-05 20:13:45 +02:00
Stephan Orbaugh c2f87fbd39 Merge pull request #47761 from nextcloud/fix/missing-footer
fix: Fix missing footer on public pages
2024-09-05 18:02:25 +02:00
Stephan Orbaugh 3f79566974 Merge pull request #47519 from nextcloud/fix/transfer-ownership-encrypted-files
feat(transfer-ownership): Correctly react to encrypted files
2024-09-05 17:58:44 +02:00
Stephan Orbaugh a933ba1fdb Merge pull request #47769 from nextcloud/artonge/fix/use_sha256_for_arguments_hash_forbg_jobs
fix: Use sha256 to hash arguments of background jobs
2024-09-05 17:52:58 +02:00
Stephan Orbaugh eac7c2e9cf Merge pull request #46255 from nextcloud/bug/add-option-to-remove-webroot-for-setupchecks
fix: add option to remove the webroot for setup checks and don't chec…
2024-09-05 17:51:30 +02:00
Louis Chemineau 9992e7d439 fix(dav): Always respond custom error page on exceptions
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-09-05 16:17:32 +02:00
Louis Chemineau dbf56b6c11 fix: Migrate existing bg jobs to use sha256
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-09-05 15:36:51 +02:00
Louis Chemineau 843a47f12c fix: Use sha256 to hash arguments of background jobs
This is to prevent collision as we are sometime hashing user input, yet using that hash to target the background job in the database.

Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-09-05 15:36:51 +02:00
Côme Chilliet 0555900134 fix(transfer-ownership): Improve comments according to code review
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-05 14:44:50 +02:00
Côme Chilliet d92bf388b1 feat(transfer-ownership): Correctly react to encrypted files
For E2EE encrypted files, we abort the transfer.
For SSE encrypted files, we abort only if not using master key.
Also fixed the check for when the path to a single file is used.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-05 14:44:50 +02:00
Côme Chilliet c224b8ced4 fix(setupchecks): Test overwrite.cli url first, then generated one, and
trusted domains as last fallback.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-05 11:54:45 +02:00
Daniel Kesselberg 4ce4d7b9b3 fix: add option to remove the webroot for setup checks and don't check trusted_domains.
1) The checks for well-known urls should always run against the root domain and therefore the option to remove the webroot.

2) For trusted domains, the available protocol is unknown, and thus some guesswork would be needed to make that work. I've decided for now to not consider them anymore to reduce false-positives.

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-09-05 10:30:36 +02:00
Andy Scherzinger 332b3efdf0 Merge pull request #47754 from nextcloud/fix/noid/cache-appstore-on-dev-instances
fix(appstore): Cache apps.json also on dev instances
2024-09-05 09:17:40 +02:00
Nextcloud bot 8cded1e320 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-05 00:23:50 +00:00
Christopher Ng 4fed8ed891 fix: Fix missing footer on public pages
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-04 16:41:13 -07:00
Andy Scherzinger 530e1b9828 Merge pull request #47752 from nextcloud/backport/47745/master
[master] fix(files): undefined displayname for outdated `@nextcloud/files`<3.6.0 apps
2024-09-05 00:20:15 +02:00
nextcloud-command c2ed0e3fa5 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-04 22:05:32 +00:00
Marcel Müller b2c2c93a03 fix(appstore): Cache apps.json also on dev instances
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2024-09-04 21:56:58 +02:00
skjnldsv 1ece5b975d fix(files): undefined displayname for outdated @nextcloud/files<3.6.0 apps
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-09-04 18:12:34 +00:00
Kate 09fef8f0ec Merge pull request #47417 from nextcloud/fix/files/create-mountpoint-parents 2024-09-04 20:00:24 +02:00
John Molakvoæ 2d2a51005c Merge pull request #47738 from nextcloud/fix/sidebar-undefined 2024-09-04 16:50:50 +02:00
nextcloud-command ed064acc23 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-04 14:33:03 +00:00
skjnldsv 62878c5ece fix(files): undefined sidebar
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-09-04 14:10:37 +02:00
John Molakvoæ f1706df367 Merge pull request #46859 from nextcloud/fix-status-check-and-saving-of-external-storages 2024-09-04 11:33:30 +02:00
github-actions[bot] ab511e8d94 Merge pull request #47724 from nextcloud/automated/noid/master-update-psalm-baseline
[master] Update psalm-baseline.xml
2024-09-04 10:46:37 +02:00
John Molakvoæ 99b225f06b Merge pull request #40164 from nextcloud/exceptionsTranslateShare 2024-09-04 09:50:49 +02:00
Daniel Calviño Sánchez fa0862c656 fix: Hide status tooltip in row to add a new mount point
The row to add a new mount point is cloned when a new mountpoint is
added, so it is expected that it includes a status span. However, it
should not be displayed in that row, only in the cloned row when its
status is updated.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 09:46:17 +02:00
Daniel Calviño Sánchez bd4de5208d fix: Fix unmodified placeholder replacing the actual value when updating
When updating global storages and user storages a property is not
updated by "StoragesService::updateStorage()" if the value matches the
unmodified placeholder. However, userglobal storages are not updated
through the "StoragesService"; as only the authentication mechanism is
updated it is directly done with "saveBackendOptions()" in
"IUserProvided" or "UserGlobalAuth". Due to this the unmodified
placeholder value needs to be explicitly checked in those cases and
replaced by the actual value (note that in this case it is not possible
to just skip updating a specific property).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 09:46:17 +02:00
Daniel Calviño Sánchez 8350aef723 test: Add integration tests for saving external userglobal storages
As the external storage uses the Nextcloud server itself the number of
workers of the PHP process running the Nextcloud server had to be
increased. Otherwise if a request is sent for the external storage while
handling a request from the integration tests a deadlock would occur.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 09:46:17 +02:00
Daniel Calviño Sánchez 8e5dba2be0 fix: Reset selected backend when adding a new storage
As a new storage is added by selecting a backend the selected backend
needs to be reset. Otherwise it is not possible to add another storage
with the same backend.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 09:46:17 +02:00
Daniel Calviño Sánchez baaed7f191 fix: Add missing translation for UI string
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 09:46:17 +02:00
Daniel Calviño Sánchez 26919835e7 fix: Restore default status tooltip when no status message is provided
If the status is updated but no explicit message is provided (for
example, if the status check succeeded) the default tooltip (from the
template) is now set to prevent a mismatch between the status and the
tooltip (for example, if the configuration is fixed after a failed
status check).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 09:46:17 +02:00
Daniel Calviño Sánchez ac1c8c4237 fix: Set status tooltip to error message on failed actions
When saving, updating and rechecking an storage fails (which is
different to the soft-fail when the action itself succeeds but the
status check does not) further details are provided in the error message
of the response, which is now set as the tooltip.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 09:46:17 +02:00
Daniel Calviño Sánchez 9eeb3cf423 fix: Set status tooltip to status message when saving an storage
When a storage is saved the status check can fail even if saving the
storage succeeds. In those cases further details are provided in the
status message of the storage, which is now set as the tooltip,
similarly to how it is done when rechecking the storage.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 09:46:17 +02:00
Daniel Calviño Sánchez d0ba10d6ae fix: Remove status check when configuration was changed
Setting a null status was supposed to remove the status check, but
nothing was changed in that case. Now the status check is properly
removed, and doing that by hiding the element rather than just turning
it invisible also prevents that clicking on the invisible status
triggers a check, as until the new configuration is saved the check will
still be performed with the old configuration, which could be misleading
for the user.

Additionally, an explicit width is set to the parent of the span element
to prevent its width from changing when the span is shown and hidden.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 09:46:17 +02:00
Daniel Calviño Sánchez 05bf5730ad fix: Recheck userglobal storages when loaded
Userglobal storages are now automatically recheck when loaded, similarly
to how it is done for global storages.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 09:43:28 +02:00
Daniel Calviño Sánchez 4b2619530b refactor: Store result in its own variable
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-04 09:43:28 +02:00
John Molakvoæ 1b3e95652c Merge pull request #47690 from nextcloud/chore/theming 2024-09-04 09:42:01 +02:00
John Molakvoæ 8f825cbd16 Merge pull request #47155 from nextcloud/executeStatementOnDelete 2024-09-04 09:35:16 +02:00
John Molakvoæ c28340dd5b Merge pull request #39242 from joshtrichards/db-convert-type-mysql-socket-no-pw 2024-09-04 09:32:21 +02:00
John Molakvoæ e11a8f0bc5 Merge pull request #47285 from nextcloud/fix/appstore-upgrade-failure 2024-09-04 09:31:29 +02:00
Julius Härtl 3ca7480829 fix: Do not throw if appstore is unavailable during upgrade
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-09-04 09:31:13 +02:00
John Molakvoæ 7efd244956 Merge pull request #47675 from nextcloud/adapterQueryOpti 2024-09-04 09:15:52 +02:00
John Molakvoæ 78e09b5a0a fix: share manager tests translation string
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
2024-09-04 09:03:45 +02:00
John Molakvoæ f4aa2644ee fix: adjust sharing controller exceptions case
Co-authored-by: F. E Noel Nfebe <fenn25.fn@gmail.com>
Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
2024-09-04 09:03:45 +02:00
Git'Fellow f250643e7a fix(l10n): Translate all share exceptions
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>

Fix drone

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>

Fix tests

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-09-04 09:03:45 +02:00
nextcloud-command a30d9a7926 chore(tests): Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2024-09-04 02:29:30 +00:00
Nextcloud bot 94d259e750 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-04 00:21:54 +00:00
Ferdinand Thiessen b98b5bb495 Merge pull request #47709 from nextcloud/fix/server-webpack-appverson
fix: only keep major as server version
2024-09-03 20:37:46 +02:00
Pytal 0aebd3761e Merge pull request #47158 from nextcloud/fix/breadcrumbs-highlight
fix(files): Fix navigating with breadcrumbs not highlighting navigation entry
2024-09-03 11:36:17 -07:00
nextcloud-command 66de5e8280 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-03 17:42:59 +00:00
Christopher Ng 930a5141ea fix(files): Fix navigating with breadcrumbs not highlighting navigation entry
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-03 10:34:03 -07:00
nextcloud-command 9763efa7e5 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-03 16:04:29 +00:00
Andy Scherzinger a538ff60b3 Merge pull request #47679 from nextcloud/chore/typo-docs
chore(IGetRealUIDBackend): Fix typo in doc block
2024-09-03 17:56:38 +02:00
skjnldsv 3fe5faf5f9 fix: only keep major as server version
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-09-03 17:51:55 +02:00
John Molakvoæ f9fcc5b170 Merge pull request #47412 from Luka-sama/feat/shares-reminder 2024-09-03 17:24:02 +02:00
Stefan Cherniakov 2685501231 fix(files_sharing): Add check for null
Signed-off-by: Stefan Cherniakov <luka-sama@pm.me>
2024-09-03 17:23:31 +02:00
Stefan Cherniakov 457eaee2b3 fix(files_sharing): Add missing check for null & use bool instead of int for reminder_sent field
Signed-off-by: Stefan Cherniakov <luka-sama@pm.me>
2024-09-03 17:23:31 +02:00
Ferdinand Thiessen f5f9691f38 Merge pull request #47568 from nextcloud/refactor/migrate-public-page-menu-vue
refactor: Migrate public-page header actions to Vue
2024-09-03 17:12:15 +02:00
Ferdinand Thiessen 5610821a06 chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-03 14:18:47 +00:00
Ferdinand Thiessen 408c9b2d9d test: Add end-to-end tests for public page header actions
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-03 16:07:50 +02:00
Ferdinand Thiessen 61d687631b chore(ExternalShareMenuAction): Remove unused legacy properties
Keep them in the constructor to not break the API,
but they are not used anymore.
This way of adding a share was deprecated in Nextcloud 12 (2016!),
in favor of the federated share API, in Nextcloud 28 this way to create a share was removed.

So we can cleanup as all it takes now to create a federeated share is the share token + federated user ID.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-03 16:07:50 +02:00
Ferdinand Thiessen 4d2556d4cf refactor(IMenuAction): Make public menu actions use the new Vue UI
This removes custom rendering code an replaces it with the declarative menu actions.
Also adjust the template to allow the Vue UI to mount.
Custom entries still are possible.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-03 16:07:49 +02:00
Ferdinand Thiessen 7b6c78c81d chore: Remove legacy JS code for public page menu (header actions)
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-03 16:07:49 +02:00
Ferdinand Thiessen 04b25ba59d feat: Implement Vue UI for public page menu
This adds a Vue implementation of the public page menu,
that is the menu that can be added using `PublicTemplateResponse::setHeaderActions`.

Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Louis <louis@chmn.me>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-03 16:07:49 +02:00
Kate 5118f6684b Merge pull request #47674 from nextcloud/fix/settings/sharing-enforce-links-password-excluded-groups-key 2024-09-03 16:04:11 +02:00
nextcloud-command 8aa969b979 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-03 13:15:24 +00:00
provokateurin 8b790535df chore: compile assets
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-03 14:41:46 +02:00
provokateurin c88ae37844 fix(settings): Fix sharing exclude groups from password requirement option not working
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-03 14:28:44 +02:00
Stefan Cherniakov d633b9bce6 fix(files_sharing): Make share reminders more stable & fix issues
Signed-off-by: Stefan Cherniakov <luka-sama@pm.me>
2024-09-03 13:37:17 +02:00
Stefan Cherniakov 5e4a166365 feat(files_sharing): reminder for link shares with expiration date
Signed-off-by: Stefan Cherniakov <luka-sama@pm.me>
2024-09-03 13:37:17 +02:00
Arthur Schiwon 6b85a3ae0e Merge pull request #46114 from nextcloud/enh/improve-ldap-group-members-listing-performances
fix(user_ldap): Avoid extra LDAP request when mapping a user for the first time
2024-09-03 11:13:03 +02:00
Marcel Klehr 45ba2f758c Merge pull request #47659 from nextcloud/fix/settings/admin/textprocessing2
Followup: fix(settings): Don't display built-in task types in AI settings TextProcessing
2024-09-03 10:59:30 +02:00
nextcloud-command fa1bce0215 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-03 08:22:44 +00:00
Marcel Klehr c8f4967ce2 fix(settings): Add translators note
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2024-09-03 10:03:23 +02:00
Marcel Klehr 44a5723973 fix(settings): Don't display built-in task types in AI settings TextProcessing
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2024-09-03 10:03:23 +02:00
John Molakvoæ b7bd5b0012 Merge pull request #47650 from nextcloud/chore/cleanup-middleware 2024-09-03 09:21:43 +02:00
Nextcloud bot b3a80719e6 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-03 00:20:58 +00:00
Ferdinand Thiessen 3efb39371d chore(theming): Increase app version
There were heavly breaking theming changes so increase the version number to make cache buster work.
Also fix order of entries in the appinfo.xml to fix XML validation (the order is fixed in the XSD).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-02 22:38:53 +02:00
Ferdinand Thiessen f9a71f3da7 Merge pull request #47665 from nextcloud/fix/files-remote-shares
fix(files): Correctly parse external shares for files UI
2024-09-02 19:13:57 +02:00
Andy Scherzinger 87f8a8c961 Merge pull request #47617 from Ornanovitch/ornano/scrollbar-visibility
fix(css): make scrollbar visible again
2024-09-02 18:33:12 +02:00
nextcloud-command 541b26900a chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-02 16:13:49 +00:00
Ferdinand Thiessen 8770e2b282 fix(files): Correctly parse external shares for files UI
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-02 17:48:46 +02:00
Ferdinand Thiessen 69f4a397d1 Merge pull request #47671 from nextcloud/chore/cypress-intercept-timeout
test(cypress): Await promise in response to prevent timeout
2024-09-02 17:42:17 +02:00
protoclown 15e449a74f chore(css): build css
Signed-off-by: protoclown <ornano@felinn.org>
2024-09-02 17:15:15 +02:00
protoclown b711da7393 fix(css): refine css cleanup
Signed-off-by: protoclown <ornano@felinn.org>
2024-09-02 17:04:37 +02:00
protoclown df7db817b8 fix(css): cleanup old scrolling css
Signed-off-by: protoclown <ornano@felinn.org>
2024-09-02 17:04:37 +02:00
protoclown d1f82e7fc7 fix(css): re-use old --color-scrollbar variable
Signed-off-by: protoclown <ornano@felinn.org>
2024-09-02 17:04:37 +02:00
protoclown afc4940f50 fix(css): make scrollbar visible again
Signed-off-by: protoclown <ornano@felinn.org>
2024-09-02 17:04:37 +02:00
Kate 02a6f12bf9 Merge pull request #47676 from nextcloud/fix/ocp/image-interface 2024-09-02 16:11:26 +02:00
Ferdinand Thiessen cbeca43ee8 Merge pull request #47678 from nextcloud/chore/add-typings
chore(IConfig): Adjust type of `getUsersForUserValue`
2024-09-02 15:33:58 +02:00
Julien Veyssier 09b8aea8f6 Merge pull request #47635 from nextcloud/fix/noid/oauth2-store-secret-hash
[oauth2] Store hashed secret instead of encrypted
2024-09-02 15:28:32 +02:00
Kate 833a969de9 Merge pull request #47680 from nextcloud/chore/git-blame-ignore 2024-09-02 15:06:08 +02:00
provokateurin 031166c177 fix(OCP): Fix Image interface
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-02 14:57:17 +02:00
nextcloud-command 5b98abcf76 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-02 12:48:39 +00:00
Julien Veyssier 120e7e838c fix(oauth2): fix tests
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-09-02 14:38:39 +02:00
Julien Veyssier 034917b790 fix(oauth2): store hashed secret instead of encrypted
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-09-02 14:38:39 +02:00
Julius Härtl 796405883d Merge pull request #47670 from nextcloud/fix/touchicon-calc
fix: Properly calculate intermediate icon for touch icon generation
2024-09-02 13:41:37 +02:00
Julien Veyssier 873c42b0f1 Merge pull request #47627 from nextcloud/fix/noid/link-ref-provider-size-check
[LinkReferenceProvider] Better size check
2024-09-02 12:33:21 +02:00
Ferdinand Thiessen dcfd78049a chore: Update .git-blame-ignore-revs
While digging through code I noticed another huge code style
refactoring commit is blocking the real blame, so added it to the list.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-02 12:32:27 +02:00
Ferdinand Thiessen 2bf3280dcc chore(IGetRealUIDBackend): Fix typo in doc block
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-02 12:30:01 +02:00
Ferdinand Thiessen bdce5921f6 chore(IConfig): getUsersForUserValue is returning a list
It is returning a list of strings so adjust the return typing
to reflect this (`list<string>` instead of `array`).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-02 12:27:06 +02:00
Andy Scherzinger dc86ccf074 Merge pull request #47664 from nextcloud/dependabot/github_actions/github-actions-507e3df6d0
chore(deps): bump the github-actions group with 4 updates
2024-09-02 12:23:58 +02:00
Julius Härtl 7f0d0cf03c Merge pull request #47640 from nextcloud/fix/migrator-replica
fix: Run migration sql as statement so that the primary db node is used
2024-09-02 10:46:24 +02:00
Git'Fellow 8e6e7976d2 fix: psalm
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-09-02 10:19:25 +02:00
Git'Fellow 388f2973b9 fix: psalm
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-09-02 10:08:08 +02:00
Git'Fellow dfcf3132dd chore(db): Make the query more simpler to read
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-09-02 09:57:48 +02:00
Nextcloud bot 3973a8f722 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-02 00:21:05 +00:00
Ferdinand Thiessen 7e2bea6550 test(cypress): Await promise in response to prevent timeout
The idea is to intercept the request,
then test the loading state,
and after the tests continue the request.

Problem here: `cy.intercept` has a timeout on the request-handler
which uses the same timeout as DOM assertions (4s) we could increase it,
but this also will increase DOM assertion timeout.

So instead we do not await in the request handler, but in the response handler.
This should use the response timeout which is much higher (30s).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-01 12:29:15 +02:00
Julius Härtl 463c21d25a fix: Properly calculate intermediate icon for touch icon generation
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-09-01 11:50:13 +02:00
Nextcloud bot 8367c72f88 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-09-01 00:20:51 +00:00
dependabot[bot] e5bc3bb0cf chore(deps): bump the github-actions group with 4 updates
Bumps the github-actions group with 4 updates: [shivammathur/setup-php](https://github.com/shivammathur/setup-php), [cypress-io/github-action](https://github.com/cypress-io/github-action), [actions/upload-artifact](https://github.com/actions/upload-artifact) and [codecov/codecov-action](https://github.com/codecov/codecov-action).


Updates `shivammathur/setup-php` from 2.31.0 to 2.31.1
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/2.31.0...c541c155eee45413f5b09a52248675b1a2575231)

Updates `cypress-io/github-action` from 6.7.2 to 6.7.5
- [Release notes](https://github.com/cypress-io/github-action/releases)
- [Changelog](https://github.com/cypress-io/github-action/blob/master/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/github-action/compare/df7484c5ba85def7eef30db301afa688187bc378...496e7dc0edc421a9de8a36a31c793340e00c61bf)

Updates `actions/upload-artifact` from 4.3.6 to 4.4.0
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/834a144ee995460fba8ed112a2fc961b36a5ec5a...50769540e7f4bd5e21e526ee35c689e35e0d6874)

Updates `codecov/codecov-action` from 4.1.1 to 4.5.0
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Commits](https://github.com/codecov/codecov-action/compare/v4.1.1...v4.5.0)

---
updated-dependencies:
- dependency-name: shivammathur/setup-php
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: cypress-io/github-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-31 22:40:06 +00:00
Ferdinand Thiessen 8dd169601d Merge pull request #47443 from nextcloud/fix/files-non-visual-loading-info
fix(files): Node loading information should be accessible
2024-08-31 20:29:04 +02:00
nextcloud-command e934080cc0 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-31 20:14:06 +02:00
Ferdinand Thiessen 9ee2d13467 test: Add Cypress test for renaming loading state
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-31 20:14:02 +02:00
Ferdinand Thiessen f01c8efa38 fix(files): Node loading information should be accessible
The loading icon visually informs that the node is currently loading,
but there is no non-visual information (accessible information).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-31 18:39:16 +02:00
dependabot[bot] 15bfc63fa4 Merge pull request #47461 from nextcloud/dependabot/npm_and_yarn/core-js-3.38.1 2024-08-31 16:36:50 +00:00
dependabot[bot] d750fd7750 chore(deps): bump core-js from 3.37.1 to 3.38.1
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.37.1 to 3.38.1.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.38.1/packages/core-js)

---
updated-dependencies:
- dependency-name: core-js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-31 16:20:55 +00:00
dependabot[bot] 14570f13a5 Merge pull request #47656 from nextcloud/dependabot/npm_and_yarn/vueuse/integrations-11.0.3 2024-08-31 16:08:51 +00:00
dependabot[bot] de9f458210 chore(deps): bump @vueuse/integrations from 11.0.1 to 11.0.3
Bumps [@vueuse/integrations](https://github.com/vueuse/vueuse/tree/HEAD/packages/integrations) from 11.0.1 to 11.0.3.
- [Release notes](https://github.com/vueuse/vueuse/releases)
- [Commits](https://github.com/vueuse/vueuse/commits/v11.0.3/packages/integrations)

---
updated-dependencies:
- dependency-name: "@vueuse/integrations"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-31 15:51:46 +00:00
dependabot[bot] f29ebced36 Merge pull request #47657 from nextcloud/dependabot/npm_and_yarn/nextcloud/vue-8.17.1 2024-08-31 14:48:31 +00:00
Ferdinand Thiessen 7f9d67419f test: Update snapshots
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-31 16:28:05 +02:00
nextcloud-command 1b7c331630 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-31 13:55:40 +00:00
dependabot[bot] a88146b30d chore(deps): bump @nextcloud/vue from 8.17.0 to 8.17.1
Bumps [@nextcloud/vue](https://github.com/nextcloud-libraries/nextcloud-vue) from 8.17.0 to 8.17.1.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-vue/compare/v8.17.0...v8.17.1)

---
updated-dependencies:
- dependency-name: "@nextcloud/vue"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-31 15:49:17 +02:00
dependabot[bot] 45f8d2afc9 Merge pull request #47655 from nextcloud/dependabot/npm_and_yarn/nextcloud/dialogs-5.3.7 2024-08-31 13:45:45 +00:00
dependabot[bot] fb05caf567 chore(deps): bump @nextcloud/dialogs from 5.3.5 to 5.3.7
Bumps [@nextcloud/dialogs](https://github.com/nextcloud-libraries/nextcloud-dialogs) from 5.3.5 to 5.3.7.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/v5.3.7/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-dialogs/compare/v5.3.5...v5.3.7)

---
updated-dependencies:
- dependency-name: "@nextcloud/dialogs"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-31 13:16:17 +00:00
dependabot[bot] 0f5e4ba7e9 Merge pull request #47654 from nextcloud/dependabot/npm_and_yarn/nextcloud-vue-collections-0.13.0 2024-08-31 13:02:22 +00:00
dependabot[bot] 0ef9ecafb6 chore(deps): bump nextcloud-vue-collections from 0.12.0 to 0.13.0
Bumps [nextcloud-vue-collections](https://github.com/nextcloud/nextcloud-vue-collections) from 0.12.0 to 0.13.0.
- [Release notes](https://github.com/nextcloud/nextcloud-vue-collections/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-vue-collections/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue-collections/compare/v0.12.0...v0.13.0)

---
updated-dependencies:
- dependency-name: nextcloud-vue-collections
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-31 12:47:59 +00:00
Nextcloud bot 09411a1e9d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-31 00:26:10 +00:00
Ferdinand Thiessen deeccd12a3 chore: fix typo in SameSiteCookieMiddleware
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-31 00:34:45 +02:00
Ferdinand Thiessen 92f3f7e2d2 chore: Remove unused CsrfTokenManager from CSPMiddleware
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-31 00:34:41 +02:00
Ferdinand Thiessen 558fbcda72 Merge pull request #47589 from nextcloud/fix/user-settings-admin
fix(settings): Hide forbidden UI elements for group managers
2024-08-30 22:43:25 +02:00
nextcloud-command 380b92c07e chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-30 19:38:43 +00:00
Ferdinand Thiessen 9a8b3de2f0 fix(settings): Hide forbidden UI elements for line managers
1. The "recent" accounts API only works for admin and delegated admin -> hide for line managers
2. Line managers can not create new groups -> Hide the UI to add a new group for them
3. Accounts created by line managers require one of the groups, which is managed by the line manager, assigned.
   So if the line manager only manageres a single group, we should preselect that group.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-30 21:32:03 +02:00
Julius Härtl 7362ede426 Merge pull request #47638 from nextcloud/fix/share-attributes-null
fix: Properly handle share attributes if set to null
2024-08-30 19:55:37 +02:00
nextcloud-command d5ab2c5d14 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-30 17:35:49 +00:00
Julius Härtl fe3926f0f0 fix: Properly handle share attributes if set to null
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-08-30 17:33:39 +00:00
Nextcloud bot 7b05c34385 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-30 16:32:38 +00:00
F. E Noel Nfebe e076e674e2 Merge pull request #47628 from nextcloud/fix/restore-unified-search-modal-size
fix(UnifiedSearch): Restore normal dialog size
2024-08-30 16:17:03 +01:00
John Molakvoæ 8365f7b8ac Merge pull request #47616 from nextcloud/fix/header-styles 2024-08-30 15:49:18 +02:00
Julius Härtl c3fa25a16e fix: Run migration sql as statement so that the primary db node is used
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-08-30 15:45:50 +02:00
Ferdinand Thiessen cc8368b77a chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-30 15:23:57 +02:00
Ferdinand Thiessen 4f77552104 fix(css): Adjust header styles to only add focus-visible styles to menu
Only the main menu should be styles by the header styles, not the popover menus.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-30 15:19:44 +02:00
nextcloud-command c2d7012d27 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-30 12:37:57 +00:00
Julien Veyssier d9ae08ba60 Merge pull request #47601 from nextcloud/enh/noid/use-taskprocessing-in-old-managers
[TaskProcessing] Use taskprocessing in TextProcessing and STT managers
2024-08-30 13:29:46 +02:00
nextcloud-command 122cb80e9c chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-30 09:14:04 +00:00
fenn-cs 18d0f39109 fix(UnifiedSearch): Restore normal dialog size
Signed-off-by: fenn-cs <fenn25.fn@gmail.com>
2024-08-30 10:08:58 +01:00
Julien Veyssier 22bb42be0c fix(linkReferenceProvider): better size check
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 10:55:57 +02:00
Marcel Klehr 95006d2b8e Revert "fix(TaskProcessing): Use OCP\Server::get instead of copying methods"
This reverts commit d624c8da8f0dc2eaf18d416aa15db0a2035de398.

Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 10:07:01 +02:00
Marcel Klehr 41e3bde40c fix(TaskProcessing): Fix namespace of TaskProcessingTest.php
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 10:07:01 +02:00
Marcel Klehr 1e896a7307 fix(TextProcessing): Don't run taskProcessing if task type is not available
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 10:07:01 +02:00
Marcel Klehr a2b087421e fix(settings): Don't show built-in textprocessing task types in textprocessing settings
TaskProcessing is transparent to textprocessing providers and TextProcessing can use Taskprocessing providers so these are unnecessary

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 10:07:01 +02:00
Marcel Klehr b06302e024 fix(settings): Remove STT admin settings
taskprocessing is transparent to STT providers so specific STT settings are obsolete

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 10:07:01 +02:00
Marcel Klehr de117d4654 fix(SpeechToTextManager): Throw TaskProcessing Task failed
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 10:07:01 +02:00
Marcel Klehr 7be3a18f13 fix(TaskProcessing): Use OCP\Server::get instead of copying methods
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 10:07:01 +02:00
Julien Veyssier 03b3d03b46 fix(taskprocessing): fix tests
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 10:07:01 +02:00
Julien Veyssier 04edeb510d feat(speech-to-text): SpeechToTextManager::transcribeFile calls TaskProcessingManager::runTask
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 10:07:01 +02:00
Julien Veyssier 5ab0866341 feat(textprocessing): TextProcessingManager::runTask calls TaskProcessingManager::runTask
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-30 10:07:01 +02:00
Louis 1cc7851209 Merge pull request #47605 from nextcloud/artonge/feat/files_blurhash
feat: Use the blurhash in Files
2024-08-29 23:31:13 +02:00
Andy Scherzinger bfb5835750 Merge pull request #47546 from nextcloud/fix/files-view-error-messages
fix: Adjust filename validation messages
2024-08-29 23:28:50 +02:00
Andy Scherzinger 12dcc0bf58 Merge pull request #47226 from nextcloud/dependabot/github_actions/github-actions-720c8da8de
chore(deps): bump actions/upload-artifact from 4.3.4 to 4.3.6 in the github-actions group
2024-08-29 23:18:06 +02:00
nextcloud-command 49f2801f54 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-29 21:14:28 +00:00
Ferdinand Thiessen 75a684a8d3 chore(files): Fix remaining TypeScript errors in FileEntryPreview
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-29 23:08:13 +02:00
Louis Chemineau 56e4859201 feat: Use the blurhash in Files
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-08-29 23:08:11 +02:00
dependabot[bot] 19dd32962d Merge pull request #47458 from nextcloud/dependabot/npm_and_yarn/webpack-5.94.0 2024-08-29 20:49:20 +00:00
nextcloud-command a5b3fc46a3 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-29 20:34:12 +00:00
dependabot[bot] 725cafd94f chore(deps-dev): bump webpack from 5.93.0 to 5.94.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.93.0 to 5.94.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.93.0...v5.94.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-29 20:24:38 +00:00
Arthur Schiwon 4accba8016 Merge pull request #47611 from nextcloud/fix/noid/no-sharding-32
fix(DB): set sharding parameters only when intended
2024-08-29 20:49:39 +02:00
Arthur Schiwon b71c539b5c test(phpunit): skip sharding tests on 32bit
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-29 20:18:35 +02:00
Andy Scherzinger 51e9687fa3 Merge pull request #47222 from nextcloud/dependabot/npm_and_yarn/eslint-plugin-cypress-3.5.0
chore(deps-dev): bump eslint-plugin-cypress from 3.4.0 to 3.5.0
2024-08-29 20:05:18 +02:00
Arthur Schiwon edaa4d1432 fix(DB): do not assume sharding is always enabled
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-29 19:55:10 +02:00
Arthur Schiwon 79b34aa816 build: bump version to force 32bit test
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-29 19:13:19 +02:00
Arthur Schiwon 381e922085 fix(DB): set sharding parameters only when intended
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-29 19:12:44 +02:00
dependabot[bot] becdf22035 chore(deps-dev): bump eslint-plugin-cypress from 3.4.0 to 3.5.0
Bumps [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases)
- [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v3.4.0...v3.5.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-cypress
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-29 16:56:58 +00:00
Côme Chilliet e44f24f7ab Merge pull request #47535 from nextcloud/fix/move-image-to-oc-namespace
Fix/move image to oc namespace
2024-08-29 18:01:34 +02:00
Côme Chilliet 1f46be7d69 fix(Image): Do not send empty Content-Type header
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-29 17:06:32 +02:00
Côme Chilliet 80d7d867bd fix(tests): Fix ImageTest test
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-29 17:06:32 +02:00
Côme Chilliet b778f3de0a fix(\OC\Image): Use new IAppConfig and type safe methods
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-29 17:06:32 +02:00
Côme Chilliet c67e54287a fix(OC\Image): Fix all psalm spotted issues in the file
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-29 17:06:32 +02:00
Côme Chilliet e8c671fa8b fix: Remove all references to OC_Image
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-29 17:06:32 +02:00
Côme Chilliet 47d2cb7479 fix: Move \OC_Image to \OC\Image with the other internal classes
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-29 17:06:32 +02:00
Julius Härtl 6d04ad829b Merge pull request #47581 from nextcloud/fix/audit-new-node
fix: Do not fail to get internal path on NonExistingFile
2024-08-29 15:43:21 +02:00
Josh fef4295ef7 Merge pull request #47567 from nextcloud/jtr/fix-opcache-restricted-env
fix(config): Avoid error messages for restricted opcache API
2024-08-29 08:46:41 -04:00
Louis 02548bdeae Merge pull request #47600 from nextcloud/artonge/fix/files_virtual_list_grid_view_layout_computation
fix(files): Remove margin and width to not break layout
2024-08-29 14:07:40 +02:00
Louis Chemineau c42f010167 fix(files): Remove margin and width to not break layout
In grid view, this was messing with the reported available list width which was breaking the computed layout.

Fix https://github.com/nextcloud/server/issues/47599

Signed-off-by: Louis Chemineau <louis@chmn.me>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-29 11:50:25 +00:00
Stephan Orbaugh 6e4e9cf6bd Merge pull request #47598 from nextcloud/enh/47017/re-enable-content-length-header
fix: re-enable content-length header via htaccess
2024-08-29 12:53:19 +02:00
Julius Härtl 61108882b9 fix: Do not fail to get internal path on NonExistingFile/NonExistingFolder
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-08-29 12:43:44 +02:00
John Molakvoæ 466f19b689 Merge pull request #47582 from fulldecent/patch-1 2024-08-29 11:54:13 +02:00
Simon L. 3739fb7a80 fix: re-enable content-length header via htaccess
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-08-29 11:50:55 +02:00
Simon L. c055ed83d7 chore: Remove installation method from bug-report template
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-08-29 11:41:33 +02:00
Joas Schilling 6cfa388e34 Merge pull request #47596 from nextcloud/fix/test/provisioning-enabled-apps
fix(test): Fix provisioning enabled apps
2024-08-29 11:16:24 +02:00
John Molakvoæ 292a306743 Merge pull request #47343 from nextcloud/feat/31420/add-bidi-support 2024-08-29 10:56:27 +02:00
Ferdinand Thiessen faeb2f0f43 chore: Add stylelint rules to verify we only use logical properties
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-29 08:35:06 +00:00
Ferdinand Thiessen aea0e8df6a fix: Adjust more places for logical position
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-29 08:32:48 +00:00
Ferdinand Thiessen 7b048e0501 fix: Adjust some minor styles issues
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-29 08:32:48 +00:00
Mostafa Ahangarha c5baf3d7ef Fix: float and clear
Fix other background-positions
Minor fix in link button icon position
Update header left and right to start and end

Signed-off-by: Mostafa Ahangarha <ahangarha@riseup.net>
2024-08-29 08:32:47 +00:00
Mostafa Ahangarha 26f4b97b2b Fix: shorthand paddings and margins
Signed-off-by: Mostafa Ahangarha <ahangarha@riseup.net>
2024-08-29 08:32:47 +00:00
Mostafa Ahangarha 66fab3f2f6 Fix: background position based on direction
Signed-off-by: Mostafa Ahangarha <ahangarha@riseup.net>
2024-08-29 08:32:47 +00:00
Mostafa Ahangarha 723780d184 feat: Add bidi support in core directory
Signed-off-by: Mostafa Ahangarha <ahangarha@riseup.net>
2024-08-29 08:32:47 +00:00
provokateurin 54e6103d31 fix(test): Fix provisioning enabled apps
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-29 09:43:03 +02:00
Joas Schilling 23efda9111 Merge pull request #47551 from nextcloud/fix/files_sharing/share-nullable-label
fix(files_sharing): Make share labels nullable
2024-08-29 08:43:34 +02:00
Nextcloud bot d48c6aaaaa Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-29 00:21:09 +00:00
Andy Scherzinger d404998157 Merge pull request #47515 from nextcloud/bugfix/noid/fix-migration-sorting
fix(migration): Correctly sort migrations by version number
2024-08-28 20:46:24 +02:00
Andy Scherzinger 3a565b30b2 Merge pull request #47532 from nextcloud/fix/default-enable-webhooks
feat(webhook_listeners): Enable the app by default
2024-08-28 20:45:31 +02:00
Andy Scherzinger ffde0c993e Merge pull request #47185 from nextcloud/fix/filename-validation
fix: Filename validation should only forbid `create` and `update`
2024-08-28 18:39:16 +02:00
nextcloud-command 932129251b chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-28 17:22:20 +02:00
Ferdinand Thiessen 17f011f7c5 fix: Also validate parent path in verifyPath
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-28 17:22:20 +02:00
Ferdinand Thiessen 08836696e2 fix: Allow read-only filename validation to allow reading files
Needed to read files with the "Windows compatibility" feature.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-28 17:22:20 +02:00
Ferdinand Thiessen 030c209d22 fix: Renaming does not need update but delete permissions
Renaming is basically copy + delete (a move), so no need to update permissions.
Especially if the node is in a invalid directory the node should be moveable but not editable.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-28 17:22:20 +02:00
Ferdinand Thiessen 0d41c49918 fix(dav): Pre-check if node can be copied or moved in DAV files plugin
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-28 17:22:20 +02:00
William Entriken bdd6f311ea Move preferred install method to top spot
Signed-off-by: William Entriken <github.com@phor.net>
2024-08-28 11:18:39 -04:00
Hamza 54bfe5174f Merge pull request #47525 from nextcloud/fix/optimize-getWrongShareOwnership-query
fix: optimise `getWrongShareOwnership` query
2024-08-28 16:14:56 +02:00
Kate 8290b1e92e Merge pull request #37303 from nextcloud/remove-unset-parameters 2024-08-28 15:59:41 +02:00
Thomas Citharel aa8df9b05f fix(provisionning_api): Remove parameters that are not set into template
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-08-28 14:51:02 +02:00
Josh 3e434bcebf fix(config): Avoid error messages for restricted opcache API
Make changes recently added via #44230 match #8188 to avoid failures in restricted hosting environments.

Fixes #47562

Signed-off-by: Josh <josh.t.richards@gmail.com>
2024-08-28 08:20:25 -04:00
Stephan Orbaugh b4d7498cfb Merge pull request #46639 from nextcloud/autosharding
Transparent* database sharding
2024-08-28 11:22:44 +02:00
Louis Chemineau 2574cbfa61 chore: Apply php:cs recommendations
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-08-28 10:44:18 +02:00
Louis c30c9d4158 Merge pull request #47511 from nextcloud/artonge/chore/is_encrypted_description
chore: Improve `FileInfo::isEncrypted` description
2024-08-28 10:35:09 +02:00
Louis 6fe2522808 Merge pull request #47496 from nextcloud/artonge/feat/improve_encryption_detection_in_occ
feat: Improve encryption mode detection in occ info:file
2024-08-28 10:34:55 +02:00
Robin Appelman 9d0248545d fix: mark systemconfig value as not being tainted because they are implicitly trusted
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:27:14 +02:00
Robin Appelman 1363e142d8 fix: make preload custom proterties sharding compatible
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:27:14 +02:00
Robin Appelman b21a399d1a fix: implement sharding compatible cleanup for various bits
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:27:14 +02:00
Robin Appelman cc091b150e fix: fix share cleanup for deleted groups with sharding
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:21:20 +02:00
Robin Appelman e538f4699d fix: adjust systemtag orphan cleanup query to work with sharding
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:21:20 +02:00
Robin Appelman 80a25531f7 fix: make background scan job compatible with sharding
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:21:19 +02:00
Robin Appelman 382d102d22 test: fix share provider tests for sharding
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:21:19 +02:00
Robin Appelman 2eaeeeeafe fix: run mimetype repair query across all shards
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:21:19 +02:00
Robin Appelman 390f6a78b4 fix: hint storage id in more places
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:21:19 +02:00
Robin Appelman 4d9b563d22 test: run sharding tests in ci
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:21:19 +02:00
Robin Appelman fc05a67f19 fix: only allow pre-defined shards
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:21:19 +02:00
Robin Appelman ddbeb4cac9 test: mark share test cleanup as running across all shards
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:21:19 +02:00
Robin Appelman 62f8b6517f feat: implement distributing partitioned queries over multiple shards
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:21:19 +02:00
Robin Appelman f5b3486744 feat: add option to automatically partition queries by specific tables
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:18:53 +02:00
Robin Appelman c58bdbf378 fix: delay calculating global cache prefix untill a cache is created
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:18:52 +02:00
Robin Appelman 114db0558c fix: don't make ICacheFactory depend on database
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:18:52 +02:00
Robin Appelman c09ec95255 feat: track expected output columns in query builder
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:18:52 +02:00
Nextcloud bot 32d76b0b4b Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-28 00:23:12 +00:00
Pytal b7212e3efb Merge pull request #47400 from nextcloud/feat/load-more-than-50-faves
feat(files): Allow more than 50 favorite views
2024-08-27 16:25:39 -07:00
nextcloud-command f48a7fffb7 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-27 22:53:31 +00:00
Christopher Ng a1f43964dc test(files): Adapt favorite views spec
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-27 15:37:27 -07:00
Christopher Ng 9cc1a020a2 feat(files): Allow more than 50 favorite views
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-27 14:33:39 -07:00
Christopher Ng 71e653c0bc perf(files): Do not block files page load with server-side favorites retrieval
Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-27 14:33:39 -07:00
Ferdinand Thiessen 81c6c24cd5 fix: Adjust filename validation messages
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-27 23:12:24 +02:00
provokateurin 01c4fa3ba8 fix(files_sharing): Make share labels nullable
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-27 22:28:48 +02:00
Elizabeth Danzberger a740e60afc Merge pull request #47290 from nextcloud/feat/checkbox-template-field-type
feat(templates): checkbox field type
2024-08-27 16:15:30 -04:00
Maxence Lange e68f77ea6c Merge pull request #47521 from nextcloud/fix/noid/loosing-systemconfig-on-setup
fix(logger): ignore session logging during setup
2024-08-27 18:10:16 -01:00
Elizabeth Danzberger a82a5423e0 chore: rebuild assets
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-08-27 14:43:49 -04:00
Elizabeth Danzberger 79d005e11f feat(templates): add support for checkboxes in template filler
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-08-27 14:41:58 -04:00
Ferdinand Thiessen 95fff6bc72 Merge pull request #47540 from nextcloud/fix/folder-creation
fix(files): Correctly check for already used names when creating new folder
2024-08-27 20:38:41 +02:00
nextcloud-command d363647b3f chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-27 17:56:03 +00:00
Ferdinand Thiessen 988ea85f48 fix(files): Correctly check for already used names when creating new folder
Also add Cypress tests for the "new"-menu.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-27 19:40:38 +02:00
Joas Schilling a51e04110f Merge pull request #47541 from nextcloud/ci/noid/lighter
ci: Reduce required run time
2024-08-27 19:40:01 +02:00
Ferdinand Thiessen 5db859fd25 Merge pull request #47450 from nextcloud/Jerome-Herbinet-line-manager
"Line" manager instead of "Account" manager
2024-08-27 18:53:52 +02:00
Julien Veyssier 558877c842 Merge pull request #47522 from nextcloud/enh/noid/taskprocessing-runtask
[TaskProcessing] Add manager::runTask method
2024-08-27 17:53:20 +02:00
Joas Schilling 5129e5ad30 ci: Don't run things normally and with coverage flag on the same configuration
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-27 17:49:12 +02:00
Joas Schilling 364ddf049c ci: Run things we only run on 1 PHP version on the preinstalled 8.1 which installs ~2m faster
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-27 17:48:33 +02:00
John Molakvoæ 9754f4f723 Merge pull request #47500 from nextcloud/fix/file-list-footer-gap 2024-08-27 17:27:38 +02:00
Joas Schilling 46c853146b fix(migration): Correctly sort migrations by version number
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-27 16:25:10 +02:00
Côme Chilliet 08adbed85e feat(webhook_listeners): Enable the app by default
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-27 16:00:00 +02:00
Daniel 11822def85 Merge pull request #47509 from nextcloud/fix/exif-orientation-type
fix: gracefully handle unexpected exif orientation types
2024-08-27 15:59:14 +02:00
Maxence Lange 9100b8757e fix(setup): ignore long session login during installation
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2024-08-27 12:29:42 -01:00
Julius Härtl b8b5f2c8aa Merge pull request #47507 from nextcloud/feat/apcu-setup-check
feat(settings): Add setup check for apcu cache expunge
2024-08-27 15:18:34 +02:00
Josh Richards 2e73932c8e fix: custom port handling in UI for SFTP
Signed-off-by: Josh Richards <josh.t.richards@gmail.com>
2024-08-27 09:01:12 -04:00
Julien Veyssier 396b8f52f1 fix(taskprocessing): fix condition to reschedule SynchronousBackgroundJob
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-27 14:59:20 +02:00
Josh 6db4099246 fix: custom port handling in UI for FTP External Storage
Signed-off-by: Josh <josh.t.richards@gmail.com>
2024-08-27 08:49:24 -04:00
Hamza Mahjoubi 6361edb864 fix: optimise getWrongShareOwnership query
Signed-off-by: Hamza Mahjoubi <hamzamahjoubi221@gmail.com>
2024-08-27 14:08:29 +02:00
Julien Veyssier c1ed256d50 feat(taskprocessing): add IManager::runTask method to run task synchronously
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-27 13:11:51 +02:00
Côme Chilliet 36479df042 chore: composer run cs:fix
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-27 13:03:25 +02:00
Kate 829642c9e5 Merge pull request #47508 from nextcloud/fix/router/attribute-routes-all-apps 2024-08-27 12:48:50 +02:00
Louis d2c372639c Merge pull request #47495 from nextcloud/artonge/dept/delegat_is_encrypted_to_e2ee
feat: Delegate is-encrypted handling to the e2ee app
2024-08-27 12:32:40 +02:00
Côme Chilliet c3029c70d5 fix(user_ldap): Fix user_ldap tests by mocking new method exists in manager
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-27 12:14:34 +02:00
Côme Chilliet eb27243056 fix(user_ldap): Lowercase value for all attributes in configuration
Avoid surprises by making sure these are lowercased apart from
 documented special case user displayname.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-27 12:13:30 +02:00
Joas Schilling 0fdcaa584e Merge pull request #47494 from nextcloud/bugfix/eun-100/allow-apps-to-get-unshared-users
fix(dav): Allow apps to get unshares for DAV resources
2024-08-27 11:23:48 +02:00
Elizabeth Danzberger 99221f2a42 fix(files): fix list gap at bottom
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-27 08:53:57 +00:00
Louis Chemineau 675c7fab78 chore: Improve isEncrypted description
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-08-27 10:52:35 +02:00
Julius Härtl f3419c5f57 feat(settings): Add setup check for apcu cache expunge
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-08-27 10:45:32 +02:00
provokateurin 12b44844e1 fix(Router): Load attribute routes of all apps when not app is specified
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-27 10:42:47 +02:00
Joas Schilling ead3f66379 Merge pull request #47510 from nextcloud/fix/db/slow-transactions-higher-log-level
fix(db): Increase log level for very slow transactions
2024-08-27 10:30:52 +02:00
Christoph Wurst bdcfe5b8a9 fix(db): Increase log level for very slow transactions
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2024-08-27 10:12:14 +02:00
Côme Chilliet fffba1c6af fix(ldap): Fix user_ldap attribute casing to fix tests
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-27 10:06:45 +02:00
Côme Chilliet d2bc636a79 fix(user_ldap): Correctly cache that user exists to avoid a request on mapping new user
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-27 10:06:43 +02:00
Côme Chilliet 4fb1d2f3e5 fix(user_ldap): Avoid extra LDAP request when mapping a user for the first time
Avoids using several LDAP searches to get UUID, display name and
 internal name, now gets all attributes at the same time.
Also avoids extra request to build an unused user object in userExists.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-27 10:05:12 +02:00
Richard Steinmetz cd928ed4ed fix: gracefully handle unexpected exif orientation types
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2024-08-27 09:32:04 +02:00
Joas Schilling b8ab7b7e55 Merge pull request #47448 from nextcloud/fix/47187/user-status-absence
fix(user_status): add link to Availability page if user set predefined 'Vacationing'
2024-08-27 07:37:52 +02:00
Nextcloud bot f35e33f2d8 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-27 00:20:54 +00:00
Ferdinand Thiessen 21b997f845 Merge pull request #47490 from nextcloud/chore/adjust-translations
chore(files): Adjust wording for file type filter
2024-08-26 21:40:27 +02:00
Ferdinand Thiessen 2665151105 Merge pull request #47465 from nextcloud/fix/files-drop-notice
fix(files): Reset drop notice on firefox
2024-08-26 21:00:05 +02:00
nextcloud-command 290610b630 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-26 20:44:06 +02:00
Ferdinand Thiessen 3ffdf56c8f chore(files): Adjust wording for file type filter
* Resolves: https://github.com/nextcloud/server/issues/47440

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 20:42:41 +02:00
nextcloud-command 744b41b216 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-26 20:41:36 +02:00
Ferdinand Thiessen f7b7474cd3 fix(files): Reset drop notice on firefox
On firefox there is an old bug where when you move a dragged file outside
the window the `dragleave` event is never emitted.
So we just use a timeout to reset the drag over state.

Also a small change: Use the ID of the main container instead of relying on tag name and class.
(The ID is guranteed as other APIs rely on it, while the class is just used internally).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 20:31:31 +02:00
Ferdinand Thiessen 4fcf4dba02 Merge pull request #47466 from nextcloud/chore/migrate-vitest
test: Migrate from Jest to vitest
2024-08-26 20:30:26 +02:00
Louis Chemineau ac1d8cdbef feat: Delegate is-encrypted handling to the e2ee app
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-08-26 19:45:30 +02:00
Louis Chemineau fffe826d90 feat: Improve encryption mode detection in occ info:file
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-08-26 19:28:44 +02:00
Joas Schilling 7a1a0eb7a2 fix(dav): Allow apps to get unshares for DAV resources
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-26 18:58:32 +02:00
Jérôme Herbinet c00b5094ff chore: npm run build
Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>
2024-08-26 18:08:23 +02:00
Jérôme Herbinet f9bf3eda1c fix(wording): "Line" manager instead of "Account" manager
Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>
2024-08-26 18:08:04 +02:00
Ferdinand Thiessen 6d31abdfd5 Merge pull request #47467 from nextcloud/fix/virtual-files-list
fix(files): Adjust margin at the file list bottom
2024-08-26 17:44:06 +02:00
Ferdinand Thiessen 30d090fb78 chore: Update source maps due to dependency changes
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 17:29:42 +02:00
Ferdinand Thiessen e0b81410f4 chore: Add vitest.config.ts as expected and remove Jest config
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 17:27:22 +02:00
Ferdinand Thiessen a5e58dc45e test: Migrated all Jest tests to vitest
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 17:27:22 +02:00
Ferdinand Thiessen c0b39bb909 chore: Move from Jest to vitest
There are some benefits, like faster tests and thus saving CI time, but the main reason for me is:

Jest still does not properly support ESM packages, this casues a lot of breaking stuff.
Sometimes you need to adjust imports for mocking, and somethimes other random stuff break.
Instead of wasting valuable developer lifetime we can use vitest which works perfectly with ESM.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 17:27:22 +02:00
Ferdinand Thiessen e840ec23f1 chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 16:33:21 +02:00
Ferdinand Thiessen b1eecde452 fix(files): Remove huge margin on bottom
Instead make it relative to screen size.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 16:31:25 +02:00
Joas Schilling c6ec82203e Merge pull request #47480 from nextcloud/fix/41639/flow-check-user-agent
fix(flow): cannot set custom user agent
2024-08-26 14:09:25 +02:00
nextcloud-command cc72f738ed chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-26 11:53:28 +00:00
Julius Härtl 6d2253e692 Merge pull request #46013 from nextcloud/obj-store-move-from-storage-preserve-fileid
fix: write object to the correct urn when moving from another storage to object store
2024-08-26 13:47:27 +02:00
Maksim Sukharev f23875dcb1 fix(user_status): add link to Availability page if user set predefined 'Vacationing'
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2024-08-26 13:41:56 +02:00
Arthur Schiwon 2b270f54ee build: js assets
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-26 13:31:57 +02:00
Arthur Schiwon 0eeb459cc3 fix(flow): cannot set customer user agent
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-26 13:25:33 +02:00
Andy Scherzinger e2b1de8bc1 Merge pull request #47470 from nextcloud/automated/noid/master-fix-npm-audit
[master] Fix npm audit
2024-08-26 09:50:52 +02:00
Joas Schilling 36f272d03b Merge pull request #47435 from phreaker0/fix-mail-template-class-call
fix(mailer): Call to custom mail_template_class
2024-08-26 08:58:00 +02:00
Kate c42412f3d2 Merge pull request #47474 from nextcloud/fix/cs-fixer/ignore-git-ignored-entries 2024-08-26 07:40:16 +02:00
Nextcloud bot 23bbb31445 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-26 00:20:22 +00:00
Daniel cead56ac6a Merge pull request #47464 from nextcloud/dependabot/composer/vendor-bin/cs-fixer/nextcloud/coding-standard-1.2.3
bump nextcloud/coding-standard from 1.2.1 to 1.2.3 in /vendor-bin/cs-fixer
2024-08-25 21:09:41 +02:00
Daniel Kesselberg 47168ad5bd chore: ignore coding-standard update 1.2.3 in git blame
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-08-25 20:43:43 +02:00
Daniel Kesselberg e88693a473 style: update codestyle for coding-standard 1.2.3
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-08-25 20:43:43 +02:00
dependabot[bot] 9067932f3b build(deps-dev): Bump nextcloud/coding-standard from 1.2.1 to 1.2.3
Bumps [nextcloud/coding-standard](https://github.com/nextcloud/coding-standard) from 1.2.1 to 1.2.3.
- [Release notes](https://github.com/nextcloud/coding-standard/releases)
- [Changelog](https://github.com/nextcloud/coding-standard/blob/master/CHANGELOG.md)
- [Commits](nextcloud/coding-standard@v1.2.1...v1.2.3)

---
updated-dependencies:
- dependency-name: nextcloud/coding-standard
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-25 20:43:04 +02:00
provokateurin ffc8a86d7d fix(cs-fixer): Correctly ignore files ignored by git
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-25 20:40:47 +02:00
Daniel 5d632154c2 Merge pull request #47449 from nextcloud/debt/noid/update-codestyle
Update to coding-standard 1.2.3
2024-08-25 19:56:37 +02:00
Daniel Kesselberg dd165cf53a chore: add .git-blame-ignore-revs as expected file
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-08-25 19:35:40 +02:00
Daniel Kesselberg 8622edb4b3 chore: ignore coding-standard update 1.2.3 in git blame
https://docs.github.com/en/repositories/working-with-files/using-files/viewing-a-file#ignore-commits-in-the-blame-view

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-08-25 19:35:40 +02:00
Daniel Kesselberg af6de04e9e style: update codestyle for coding-standard 1.2.3
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-08-25 19:34:58 +02:00
nextcloud-command 82183693e9 fix(deps): Fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2024-08-25 02:49:40 +00:00
Nextcloud bot 1cc6b3577f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-25 00:24:21 +00:00
Ferdinand Thiessen c18cd4df66 Merge pull request #47460 from nextcloud/dependabot/npm_and_yarn/vueuse/integrations-11.0.1
chore(deps): bump @vueuse/integrations from 11.0.0 to 11.0.1
2024-08-24 12:25:55 +02:00
dependabot[bot] 6c4b56b0f3 chore(deps): bump @vueuse/integrations from 11.0.0 to 11.0.1
Bumps [@vueuse/integrations](https://github.com/vueuse/vueuse/tree/HEAD/packages/integrations) from 11.0.0 to 11.0.1.
- [Release notes](https://github.com/vueuse/vueuse/releases)
- [Commits](https://github.com/vueuse/vueuse/commits/v11.0.1/packages/integrations)

---
updated-dependencies:
- dependency-name: "@vueuse/integrations"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-24 10:01:53 +00:00
dependabot[bot] 3656a24e21 Merge pull request #47463 from nextcloud/dependabot/npm_and_yarn/vueuse/core-11.0.1 2024-08-24 09:46:42 +00:00
dependabot[bot] 31319be951 chore(deps): bump @vueuse/core from 11.0.0 to 11.0.1
Bumps [@vueuse/core](https://github.com/vueuse/vueuse/tree/HEAD/packages/core) from 11.0.0 to 11.0.1.
- [Release notes](https://github.com/vueuse/vueuse/releases)
- [Commits](https://github.com/vueuse/vueuse/commits/v11.0.1/packages/core)

---
updated-dependencies:
- dependency-name: "@vueuse/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-24 09:33:09 +00:00
Nextcloud bot e97421f12a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-24 00:20:27 +00:00
Sebastian Krupinski e5e795c935 Merge pull request #47452 from nextcloud/fix/issue-47447-mail-provider-documentation
fix: correct documentation for mail provider
2024-08-23 12:34:19 -04:00
SebastianKrupinski b260dd0a9d fix: correct documentation for mail provider
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2024-08-23 12:09:44 -04:00
Robin Appelman 4a3ade5d43 Merge pull request #46021 from nextcloud/middleware-delay-admin
perf: delay getting (sub)admin status for user in the security middleware untill we need it
2024-08-23 17:38:01 +02:00
Robin Appelman 3e7695235c Merge pull request #45457 from nextcloud/qb-escape-like
expose escapeLikeParameter trough query builder
2024-08-23 17:08:58 +02:00
Robin Appelman 44aa4836aa Merge pull request #45880 from nextcloud/memcache-redis-command
feat: add command to send raw commands to redis
2024-08-23 16:53:22 +02:00
SebastianKrupinski 7363c4a403 fix: correct documentation for mail provider
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2024-08-23 10:26:40 -04:00
Robin Appelman 8b60df1600 perf: delay getting (sub)admin status for user in the security middleware untill we need it
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-23 15:26:40 +02:00
Robin Appelman bd740ac0b0 fix: write object to the correct urn when moving from another storage to object store
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-23 15:22:16 +02:00
Robin Appelman 2f9f9e83e8 feat: add command to send raw commands to redis
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-23 15:14:15 +02:00
Robin Appelman 658d2f7ea1 feat: expose escapeLikeParameter trough query builder
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-23 15:12:10 +02:00
Nextcloud bot 0cab17bfe7 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-23 00:20:06 +00:00
Pytal 3d1785bb2f Merge pull request #47204 from nextcloud/fix/tree-hidden-files
fix(files): Respect "Show hidden files" setting in tree
2024-08-22 16:41:04 -07:00
nextcloud-command 5b412b505b chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-22 23:17:06 +00:00
Christopher Ng fc1edaf4c1 refactor(files): Consolidate node registration
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-22 16:09:10 -07:00
Christopher Ng 3b185b1156 refactor(files): Organize event subscriptions
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-22 16:09:10 -07:00
Christopher Ng 4062883459 fix(files): Respect "Show hidden files" setting in tree
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-22 16:09:10 -07:00
Ferdinand Thiessen 920a74118c Merge pull request #47403 from nextcloud/feat/password-context
feat(Security): Allow defining a password context for password validation and generation
2024-08-23 00:01:39 +02:00
Daniel d78bfb7181 Merge pull request #47419 from nextcloud/bugfix/noid/add-missing-attribute
fix(migration): Add missing migration attributes
2024-08-22 21:34:35 +02:00
Andy Scherzinger 6c934b831e Merge pull request #47407 from nextcloud/fix/version-name-dialog
fix(files_versions): Migrate version name dialog from NcModal to NcDialog
2024-08-22 21:27:05 +02:00
Joas Schilling 4b6490eaa6 fix(migration): Add missing migration attributes
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-22 20:58:50 +02:00
Christoph Klaffl d7da93489b Merge branch 'master' into fix-mail-template-class-call 2024-08-22 19:42:51 +02:00
Christoph Klaffl ae787c5ef2 fix call to custom mail_template_class
Signed-off-by: Christoph Klaffl <christoph@phreaker.eu>
2024-08-22 19:39:23 +02:00
nextcloud-command e2c299f28c chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-22 17:38:36 +00:00
Ferdinand Thiessen dd58e5290f feat: Use new password context in sharing API
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-22 19:16:55 +02:00
Ferdinand Thiessen 127cacdd19 feat(Security): Allow setting password context for validation and generation
Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-22 19:16:50 +02:00
Ferdinand Thiessen 351dd6dd8a fix(files_versions): Migrate version name dialog from NcModal to NcDialog
* Resolves https://github.com/nextcloud/viewer/issues/2390

Make the version name dialog a real dialog instead of a modal.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-22 19:16:24 +02:00
Andy Scherzinger f4f0316a55 Merge pull request #47408 from nextcloud/fix/dashboard-widgets
fix(dashboard): Adjust widget border radius
2024-08-22 18:59:35 +02:00
nextcloud-command 5940c96414 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-22 18:07:33 +02:00
Ferdinand Thiessen a6556e9b46 fix(dashboard): Adjust widget border radius
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-22 18:07:33 +02:00
Anna 1b39abb501 Merge pull request #47415 from nextcloud/Fix/trusted-server-icon-recovery-without-addressbook-change
fix: Trusted server icon recovery without addressbook change
2024-08-22 17:01:28 +02:00
Pablo Zimdahl 3c3667fe18 fix(federation): always set server status to OK after successful runs
Previously if a server status got set to failure, it stayed that way
until an addressbook-sync found changes. Now the server status is set to
OK after each successful sync check (if that's not the case already),
regardless of addressbook changes.

This change also includes two new logging statements, which could help
next time someone debugs this.

Signed-off-by: Pablo Zimdahl <pablo@nextcloud.com>
2024-08-22 16:02:21 +02:00
John Molakvoæ 4eebf471e5 Merge pull request #47379 from nextcloud/fix/cypress-stop-cache 2024-08-22 14:32:31 +02:00
skjnldsv 5e2e2ba7ad fix(cypress): drop unwanted docker output characters
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-08-22 13:32:59 +02:00
skjnldsv d3a0e8308b chore(cypress): enable apcu
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-08-22 13:32:59 +02:00
skjnldsv c0781f524f chore(cypress): skip cypress binary install on init step
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-08-22 13:32:59 +02:00
skjnldsv 5a7e21187b chore(cypress): put nextcloud into ram
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-08-22 13:32:59 +02:00
skjnldsv b6bc28833c chore(cypress): allow db snapshot and restore fo faster tests
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-08-22 13:32:59 +02:00
skjnldsv 49fa2e508d fix(cypress): do not install deps twice
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-08-22 13:32:59 +02:00
Anna 639caf6150 Merge pull request #47413 from nextcloud/fix/limit-property-values
fix(caldav): limit property length
2024-08-22 13:17:21 +02:00
Anna Larch 3ff7d64fda fix(caldav): limit property length
Signed-off-by: Anna Larch <anna@nextcloud.com>
2024-08-22 12:15:51 +02:00
provokateurin ebfbe99652 fix(files): Create non-existent parents of mountpoints
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-22 12:04:31 +02:00
Joas Schilling 0df3a46db2 Merge pull request #47409 from nextcloud/followup/46991/allow-setting-new-configs
fix(provisioning): Support setting new app configs as well
2024-08-22 08:39:14 +02:00
Joas Schilling 9641433001 fix(provisioning): Support setting new app configs as well
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-22 08:02:15 +02:00
Nextcloud bot b33260a22c Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-22 00:20:22 +00:00
John Molakvoæ 003bf4b8ee Merge pull request #47363 from nextcloud/fix/template-picker-press-enter
fix: use empty template by default when pressing enter
2024-08-21 22:01:51 +02:00
Elizabeth Danzberger 82c6b92d41 chore: build assets
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-08-21 15:02:14 -04:00
nextcloud-command 5ead5fc6c5 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-21 15:00:33 -04:00
Elizabeth Danzberger e53684e1d9 fix: use empty template by default when pressing enter
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-08-21 15:00:26 -04:00
Ferdinand Thiessen b36ced878f Merge pull request #47397 from nextcloud/chore/update-vue
Update `@nextcloud/vue` to v8.17.0
2024-08-21 19:56:05 +02:00
Ferdinand Thiessen a01797d2f2 chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-21 17:19:12 +00:00
Ferdinand Thiessen b87c1ebfcc chore: Update @nextcloud/vue to v8.17.0
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 17:55:07 +02:00
Robin Appelman c3ad469750 Merge pull request #47259 from nextcloud/memcache-ncad
feat: add negative compare-and-delete to imemcache
2024-08-21 17:19:04 +02:00
Joas Schilling 6214e3ad76 Merge pull request #47388 from nextcloud/bugfix/noid/green-ci
ci: Skip flaky test on PHP 8.3
2024-08-21 15:53:27 +02:00
Arthur Schiwon ebe2429c0a Merge pull request #46991 from nextcloud/fix/45083/config-from-js
fix(ProvisioningAPI): set typed config values by via API
2024-08-21 14:58:24 +02:00
Ferdinand Thiessen 974cda636f Merge pull request #47370 from nextcloud/fix/loading-icon
fix(files): Move loading icon before grid toggle
2024-08-21 14:37:47 +02:00
Ferdinand Thiessen 1992a6d72b Merge pull request #47371 from nextcloud/fix/disable-auto-zoom-ios
fix: Disable auto-zoom on iOS
2024-08-21 14:32:16 +02:00
Andy Scherzinger 7290d9d7ca Merge pull request #47352 from nextcloud/fix/context-write-wording
fix(TaskProcessing/ContextWrite): Fix wording "ContextWrite" -> "Context write"
2024-08-21 13:25:09 +02:00
Andy Scherzinger f309ba9dc9 Merge pull request #47381 from nextcloud/chore/deps/openapi-extractor
chore(deps): Update openapi-extractor to v1.0.0
2024-08-21 13:20:10 +02:00
Joas Schilling e1caa198e3 ci: Skip flaky test on PHP 8.3
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-21 13:13:12 +02:00
Ferdinand Thiessen d5140fe034 Merge pull request #47372 from nextcloud/fix/filename-validator
fix: `FilenameValidator::isForbidden` should only check forbidden files
2024-08-21 13:07:33 +02:00
Ferdinand Thiessen c82b17d0a3 fix: Support Safari mobile
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 13:01:23 +02:00
Ferdinand Thiessen ec00367f30 fix: Disable auto-zoom on iOS
When using iOS and focussing an input element the view should not be zoomed.
So if we set a maximum scale iOS will not auto-zoom but still allow users to zoom.
But we can not do this by default as this will disable user zoom on Chrome.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 13:01:18 +02:00
Ferdinand Thiessen 2d0f65851e chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 12:50:59 +02:00
Ferdinand Thiessen 1331ce7e7c fix(files): Move loading icon before grid toggle
This prevents jumping of that toggle button when the view is loading.
Also adjust the design for Nextcloud 30 (prevent jumping of breadcrumbs when loading due to increased height).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 12:47:21 +02:00
Joas Schilling c07cf51beb Merge pull request #47380 from nextcloud/bugfix/noid/make-logo-dimension-more-save
fix(theming): Make getImage() call save against missing non-SVG version
2024-08-21 12:01:44 +02:00
Joas Schilling 7fe62b9364 Merge pull request #47331 from nextcloud/skalidindi53/12351/Add-blurhash-to-richobjectstrings
fix: adding blurhash to definitions
2024-08-21 11:59:16 +02:00
provokateurin ff10f9f60f chore(deps): Update openapi-extractor to v1.0.0
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-21 11:07:50 +02:00
Joas Schilling dbbe2bbcb7 fix(theming): Make getImage() call save against missing non-SVG version
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-21 10:30:25 +02:00
Andy Scherzinger cf56874cb1 Merge pull request #47365 from nextcloud/fix/share-sorting
fix(files_sharing): Sort by correct share attribute ("share with displayname")
2024-08-21 09:53:37 +02:00
Marcel Klehr c9ef3f72bc fix(TaskProcessing/ContextWrite): Fix wording "ContextWrite" -> "Context write"
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2024-08-21 08:59:46 +02:00
Ferdinand Thiessen 91573781df docs: Add information how forbidden filenames are handled on existing files.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 04:22:13 +02:00
Ferdinand Thiessen b9cc7bcec7 fix: FilenameValidator::isForbidden should only check forbidden files
And not forbidden basenames as this is used for different purposes.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 04:16:14 +02:00
nextcloud-command d6cfcd7825 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-21 00:38:53 +00:00
Ferdinand Thiessen dc153f2ada fix(files_sharing): Sort by correct share attribute ("share with displayname")
There is no `title` attribute, so this causes an exception.
Instead sort by the "share with" displayname which will be the user or group the node is shared to.
Meaning this will also be the title of the share in the UI.
If this is not available or there are multiple for the same, then sort by the custom label.
If also this is not set sort by the creation time.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 02:32:02 +02:00
Nextcloud bot 1907eeea35 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-21 00:20:18 +00:00
Andy Scherzinger 748e267b44 Merge pull request #47358 from nextcloud/chore/noid/hub9
Bump Hub 8 -> Hub 9
2024-08-21 00:01:11 +02:00
Arthur Schiwon a3cd963264 fix(ProvisioningAPI): set typed config values by via API
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-20 23:10:09 +02:00
Andy Scherzinger e817bc6d3c Merge pull request #47356 from nextcloud/fix/add-webhook_listeners-to-shipped-apps-lists
chore: Add webhook_listeners to list of shipped apps
2024-08-20 22:52:52 +02:00
Andy Scherzinger bc4527a80d chore: Bump Hub 8 -> Hub 9
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-08-20 22:29:41 +02:00
John Molakvoæ 4f70998e35 Merge pull request #47351 from nextcloud/fix/build/update-apps 2024-08-20 20:55:52 +02:00
John Molakvoæ 05c9b06cdd Merge pull request #47350 from nextcloud/chore/build/remove-signed-off-checker 2024-08-20 20:55:27 +02:00
Robin Appelman 20dbb6c7e8 feat: add negative compare-and-delete to imemcache
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-20 19:34:28 +02:00
Joas Schilling cd0217b2bd fix(CI): Add a check that all server apps are translated
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-20 16:45:12 +02:00
Côme Chilliet da38ff0088 chore: Add webhook_listeners to list of shipped apps
As well as CODEOWNERS and l10n

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-20 16:40:16 +02:00
John Molakvoæ 307608b26c Merge pull request #47346 from nextcloud/encryption-key-copy-mountpoint 2024-08-20 16:16:08 +02:00
provokateurin 0e3ca084c4 fix(build): Allow update-apps.sh script to work with non-master branches
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-20 15:33:00 +02:00
provokateurin acca93e793 chore(build): Remove old Drone CI signed-off checker
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-20 15:10:49 +02:00
Robin Appelman 3756152cb1 fix: use mountpoint from storage to find the encryption keys
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-20 13:32:03 +02:00
Robin Appelman 1071201052 feat: store the mountpoint of storages in the mount options
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-20 13:31:35 +02:00
Anna 560282a47b Merge pull request #47332 from nextcloud/fix/allow-renaming-of-birthday-calendars
fix(caldav): allow renaming of birthday calendars
2024-08-20 10:48:57 +02:00
Anna Larch 5bbc23a261 fix(caldav): allow renaming of birthday calendars
Signed-off-by: Anna Larch <anna@nextcloud.com>
2024-08-20 10:16:57 +02:00
Joas Schilling 3a6716895a fix: adding blurhash to definitions
Signed-off-by: skalidindi53 <s.teja2004@gmail.com>
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-20 08:25:24 +02:00
Nextcloud bot 2b7d9c1c9d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-20 00:20:33 +00:00
F. E Noel Nfebe 3b795cde79 Merge pull request #47319 from nextcloud/fix/47056/focus-unified-search-on-open
fix(UnifiedSearch): Focus search input on open
2024-08-19 19:30:16 +01:00
nextcloud-command ecca9e1ad6 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-19 12:59:40 +00:00
fenn-cs cf59575120 fix(UnifiedSearch): Focus search input on open
Resolves : https://github.com/nextcloud/server/issues/47056

Signed-off-by: fenn-cs <fenn25.fn@gmail.com>
2024-08-19 13:49:34 +01:00
Côme Chilliet ba9638eae5 Merge pull request #47291 from nextcloud/refactor/log-php-8-1
refactor(Log): Use new in initializer instead of constructor body
2024-08-19 14:12:11 +02:00
Robin Appelman 40c91aa31e Merge pull request #47182 from nextcloud/orphan-cleanup-chunk-perf
perf: improve cleanup of tags/comments
2024-08-19 13:40:01 +02:00
Nextcloud bot 551ff4955e Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-19 00:20:19 +00:00
John Molakvoæ 6fce6fa1d6 Merge pull request #47310 from nextcloud/automated/noid/master-fix-npm-audit 2024-08-18 13:52:36 +02:00
nextcloud-command 652c1f7b65 fix(deps): Fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2024-08-18 11:33:08 +00:00
Ferdinand Thiessen 6286d3236c Merge pull request #47301 from nextcloud/dependabot/npm_and_yarn/vueuse/components-11.0.0
chore(deps): bump @vueuse/components from 10.11.0 to 11.0.0
2024-08-18 12:38:00 +02:00
dependabot[bot] 2c47285d6d chore(deps): bump @vueuse/components from 10.11.0 to 11.0.0
Bumps [@vueuse/components](https://github.com/vueuse/vueuse/tree/HEAD/packages/components) from 10.11.0 to 11.0.0.
- [Release notes](https://github.com/vueuse/vueuse/releases)
- [Commits](https://github.com/vueuse/vueuse/commits/v11.0.0/packages/components)

---
updated-dependencies:
- dependency-name: "@vueuse/components"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-18 01:53:17 +00:00
Ferdinand Thiessen 0d9d68eea1 Merge pull request #47302 from nextcloud/dependabot/npm_and_yarn/vueuse/integrations-11.0.0
chore(deps): bump @vueuse/integrations from 10.11.0 to 11.0.0
2024-08-18 03:45:55 +02:00
Nextcloud bot e06931854a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-18 00:22:56 +00:00
John Molakvoæ a7658f3ec8 Merge pull request #47300 from nextcloud/dependabot/npm_and_yarn/elliptic-6.5.7
chore(deps): bump elliptic from 6.5.6 to 6.5.7
2024-08-17 22:19:59 +02:00
dependabot[bot] 2af0eb765f chore(deps): bump elliptic from 6.5.6 to 6.5.7
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.6 to 6.5.7.
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.6...v6.5.7)

---
updated-dependencies:
- dependency-name: elliptic
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-17 16:38:49 +00:00
Ferdinand Thiessen 2ec68b1eb9 refactor(Log): Use new in initializer instead of constructor body
PHP 8.1 allows us to now move the `new` into the initializer,
this makes the code a bit nicer (and 3 lines shorter).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-17 18:38:28 +02:00
nextcloud-command 87e28b0bb7 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-17 16:37:58 +00:00
dependabot[bot] d6d173f74e chore(deps): bump @vueuse/integrations from 10.11.0 to 11.0.0
Bumps [@vueuse/integrations](https://github.com/vueuse/vueuse/tree/HEAD/packages/integrations) from 10.11.0 to 11.0.0.
- [Release notes](https://github.com/vueuse/vueuse/releases)
- [Commits](https://github.com/vueuse/vueuse/commits/v11.0.0/packages/integrations)

---
updated-dependencies:
- dependency-name: "@vueuse/integrations"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-17 18:30:44 +02:00
Ferdinand Thiessen 81b4ced076 Merge pull request #47287 from nextcloud/fix/files-access-owner
fix: Access node owner by top level `owner` property
2024-08-17 18:29:45 +02:00
nextcloud-command fa11a67e88 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-17 17:59:14 +02:00
Ferdinand Thiessen 132220a89f fix: Access node owner by top level owner property
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-17 17:59:10 +02:00
John Molakvoæ ad8200d963 Merge pull request #47297 from nextcloud/dependabot/npm_and_yarn/vueuse/core-11.0.0
chore(deps): bump @vueuse/core from 10.11.0 to 11.0.0
2024-08-17 12:57:00 +02:00
nextcloud-command 2dfd51cc03 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-17 10:18:30 +00:00
dependabot[bot] b52ab4388b chore(deps): bump @vueuse/core from 10.11.0 to 11.0.0
Bumps [@vueuse/core](https://github.com/vueuse/vueuse/tree/HEAD/packages/core) from 10.11.0 to 11.0.0.
- [Release notes](https://github.com/vueuse/vueuse/releases)
- [Commits](https://github.com/vueuse/vueuse/commits/v11.0.0/packages/core)

---
updated-dependencies:
- dependency-name: "@vueuse/core"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-17 12:10:25 +02:00
John Molakvoæ 09428d15a3 Merge pull request #47296 from nextcloud/dependabot/npm_and_yarn/pinia/testing-0.1.5
chore(deps-dev): bump @pinia/testing from 0.1.4 to 0.1.5
2024-08-17 10:01:11 +02:00
dependabot[bot] c0110409fc chore(deps-dev): bump @pinia/testing from 0.1.4 to 0.1.5
Bumps [@pinia/testing](https://github.com/vuejs/pinia) from 0.1.4 to 0.1.5.
- [Release notes](https://github.com/vuejs/pinia/releases)
- [Commits](https://github.com/vuejs/pinia/compare/@pinia/testing@0.1.4...@pinia/testing@0.1.5)

---
updated-dependencies:
- dependency-name: "@pinia/testing"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-17 01:25:24 +00:00
Nextcloud bot dcdb4bbf8a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-17 00:20:22 +00:00
Julien Veyssier 8d4968168f Merge pull request #47277 from nextcloud/enh/noid/occ-bg-job-worker-max-time
[occ:bg-job:worker] Add 'stop_after' option
2024-08-17 00:28:00 +02:00
Julien Veyssier 8638f3b587 feat(occ): add 'stop_after' option to stop the worker after some time
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-16 17:54:46 +02:00
Robin Appelman c8e09d158b Merge pull request #47038 from nextcloud/reshare-fed-share
fix: check for correct storage class when checking for link parent
2024-08-16 17:15:28 +02:00
John Molakvoæ 62f9c26111 Merge pull request #39611 from FedericoHeichou/add-command-user-welcome 2024-08-16 15:47:51 +02:00
John Molakvoæ 6fda0c15f0 fix: copyright header
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
2024-08-16 15:25:04 +02:00
John Molakvoæ d63148ee8d Merge pull request #35867 from e-foundation/ldap-check-pwd-improvement 2024-08-16 15:17:27 +02:00
Akhil b1230cd53d Use cache in LDAP backend's checkPassword
Signed-off-by: Akhil <akhil@e.email>
2024-08-16 17:55:47 +05:30
Robin Appelman a92171260f fix: check for correct storage class when checking for link parent
fixes #39123

Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-16 13:13:31 +02:00
John Molakvoæ 13a72d0f0e Merge pull request #38750 from whlsxl/postgres-install-error 2024-08-16 12:58:58 +02:00
John Molakvoæ 74b8de5665 Merge pull request #47248 from nextcloud/fix/settings-styles 2024-08-16 12:51:53 +02:00
John Molakvoæ d94073de92 Merge pull request #38630 from joshtrichards/jr-readdir-false-false 2024-08-16 12:43:53 +02:00
John Molakvoæ b8b81254f3 Merge pull request #38857 from joshtrichards/jr-earlier-check-for-php-xml 2024-08-16 12:43:32 +02:00
John Molakvoæ b8dbed3e32 Merge pull request #37761 from nextcloud/invalidateTokensOnlySeenUsers 2024-08-16 12:16:58 +02:00
Josh Richards 8032b6ac63 (base) Give a hint in web interface if SimpleXML (php-xml) is missing
Fixes #2180
And prevents #31473, #23970, #18610, #15708

Avoids a 500 error and also gives a useful error message on the web interface if this module isn't installed, gets overlooked during a PHP upgrade, etc.

While we check for it later, it's too late for session.

Inspired by #17163

Signed-off-by: Josh Richards <josh.t.richards@gmail.com>
2024-08-16 11:06:21 +02:00
Hailong Wang 67c52d202c fix: use $this->tryCreateDbUser condition 2024-08-16 10:59:15 +02:00
Hailong Wang f490a4e8c0 fix: postgresql GRANT user's permission after createDatabase, ensure database exist when GRANT 2024-08-16 10:57:11 +02:00
John Molakvoæ d35c4eb911 Merge branch 'master' into jr-readdir-false-false
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
2024-08-16 10:53:50 +02:00
Artur Neumann 84ee79fe43 fix: expect invalidateTokensOfUser only be called for seen users
Signed-off-by: Artur Neumann <artur@jankaritech.com>
2024-08-16 10:33:56 +02:00
Artur Neumann cc44ec54ad invalidate oauth2 tokens only for seen users
Signed-off-by: Artur Neumann <artur@jankaritech.com>
2024-08-16 10:33:52 +02:00
John Molakvoæ 75180a6292 Merge pull request #39692 from fsamapoor/refactor_encryption_app_commands 2024-08-16 10:24:18 +02:00
FedericoHeichou a41e2f01b7 feat: Add user:welcome command
Signed-off-by: FedericoHeichou <federicoheichou@gmail.com>
2024-08-16 10:11:29 +02:00
Faraz Samapoor 6b795da540 Uses early returns.
To improve code readability.

Signed-off-by: Faraz Samapoor <fsa@adlas.at>
2024-08-16 09:33:16 +02:00
Faraz Samapoor fc8b886295 Refactors encryption app commands.
To improve code readability.

Signed-off-by: Faraz Samapoor <fsa@adlas.at>
2024-08-16 09:33:16 +02:00
Josh Richards 71fff03e9b fix(occ): Add support for UNIX sockets to db:convert-type
Fixes #31998

Adds support to `occ db:convert-type` to support UNIX socket connections via MySQL/MariaDB. Uses same `dbhost` / `hostname` parameter parsing logic (adapted) as used elsewhere (at least the relevant parts) for consistency.

Signed-off-by: Josh Richards <josh.t.richards@gmail.com>
2024-08-16 09:04:36 +02:00
Nextcloud bot f4f7c757d4 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-16 00:20:07 +00:00
Joas Schilling 3dfe306724 Merge pull request #47258 from nextcloud/bugfix/noid/translated-predefined-user-status
Don't save translated predefined user status as custom status
2024-08-15 19:17:35 +02:00
Robin Appelman 0f9ea1992c perf: improve cleanup of tags/comments
delete entire chunk at once instead of one-by-one

Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-15 17:13:57 +02:00
Joas Schilling 15550de8ce Merge pull request #47252 from nextcloud/bugfix/noid/dont-crash-when-creating-folder
fix(adminaudit): Don't crash when creating folder
2024-08-15 15:33:49 +02:00
Joas Schilling 28e6328d65 chore(assets): Recompile assets
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-15 14:41:08 +02:00
Joas Schilling 50c48aa538 fix(userstatus): Don't set predefined user status as custom when changing "Clear at"
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-15 14:39:56 +02:00
Joas Schilling 601b3b16cb Merge pull request #47253 from nextcloud/feat/webauthn-uv
feat(webauthn): Add user verification to webauthn challenges
2024-08-15 11:50:00 +02:00
S1m 9189bc290b feat(webauthn): Add user verification to webauthn challenges
Require user verification if all tokens are registered
with UV flag, else discourage it

Signed-off-by: S1m <git@sgougeon.fr>
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2024-08-15 11:03:10 +02:00
Joas Schilling 774427a03a fix(adminaudit): Don't crash when creating folder
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-15 10:00:22 +02:00
Nextcloud bot e218d1f98e Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-15 00:25:46 +00:00
Ferdinand Thiessen d025c55193 chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-15 02:05:02 +02:00
Ferdinand Thiessen d0a0be9959 fix: Adjust legacy CSS styles for new Nextcloud 30 design
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-15 02:04:51 +02:00
Ferdinand Thiessen 2c24c3c469 Merge pull request #47240 from nextcloud/fix/webauth-credentials-length
fix(webauthn): Increase database column for public key id
2024-08-15 00:19:55 +02:00
Ferdinand Thiessen b582630715 fix(webauthn): Increase database column for public key id
* Resolves https://github.com/nextcloud/server/issues/34476

There is no maximum length defined in the standard,
most common the length is between 128 and 200 characters,
but as we store it not in plain data but base64 encoded the length can grow about 1/3.

We had a regression with 'Nitrokey 3' which created IDs with 196 byte length -> 262 bytes encoded base64.
So to be save we increase the size to 512 bytes.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-14 22:12:54 +02:00
Ferdinand Thiessen fb90e7e2cf Merge pull request #47203 from nextcloud/fix/app-menu-hover
fix(AppMenu): Prevent menu entries from jumping on hover
2024-08-14 16:56:37 +02:00
dependabot[bot] 0f10cabf2a Merge pull request #47225 from nextcloud/dependabot/npm_and_yarn/is-svg-5.1.0 2024-08-14 12:35:06 +00:00
Ferdinand Thiessen 44705abacb chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-14 12:24:31 +02:00
Ferdinand Thiessen 21c30e5259 fix(AppMenu): Prevent menu entries from jumping on hover
Only grow and shrink app menu entry if needed

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-14 12:22:15 +02:00
dependabot[bot] ded69c0ed2 chore(deps): bump actions/upload-artifact in the github-actions group
Bumps the github-actions group with 1 update: [actions/upload-artifact](https://github.com/actions/upload-artifact).


Updates `actions/upload-artifact` from 4.3.4 to 4.3.6
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/0b2256b8c012f0828dc542b3febcab082c67f72b...834a144ee995460fba8ed112a2fc961b36a5ec5a)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-14 09:40:02 +00:00
dependabot[bot] a7eb156130 chore(deps): bump is-svg from 5.0.1 to 5.1.0
Bumps [is-svg](https://github.com/sindresorhus/is-svg) from 5.0.1 to 5.1.0.
- [Release notes](https://github.com/sindresorhus/is-svg/releases)
- [Commits](https://github.com/sindresorhus/is-svg/compare/v5.0.1...v5.1.0)

---
updated-dependencies:
- dependency-name: is-svg
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-14 09:33:21 +00:00
John Molakvoæ effbc44756 Merge pull request #47212 from nextcloud/chore/master-is-now-31 2024-08-14 11:29:57 +02:00
Joas Schilling 9d446d566b fix(3rdparty): Update 3rdparty after dependabot changes
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-14 10:28:31 +02:00
Joas Schilling 71bfa5b574 chore(assets): Recompile assets
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-14 10:07:48 +02:00
Joas Schilling eb365438d6 feat(branchoff): Bump versions and requirements in apps
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-14 10:03:30 +02:00
Joas Schilling 7b53a85bb6 feat(release)!: Bump Server version to 31
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-14 09:58:57 +02:00
Joas Schilling 04944aaa23 fix(security): Update expiration date in security.txt
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-14 09:58:02 +02:00
Joas Schilling 31b74bc671 fix(CI)!: Add stable30 to and remove stable27 from GitHub Actions
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-14 09:56:47 +02:00
Git'Fellow 2156a927a3 fix: lint
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-08-09 22:47:32 +02:00
Git'Fellow c6be80a75d fix(jobs): Swicth to executeStatement() while deleting rows
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-08-09 22:38:33 +02:00
Josh Richards e7cbaf3ee3 Clean-up some remaining readdir calls with undesirable false evaluation potential
Signed-off-by: Josh Richards <josh.t.richards@gmail.com>
2023-06-24 15:37:06 +02:00
5218 changed files with 120789 additions and 142993 deletions
+9
View File
@@ -2,3 +2,12 @@
# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: AGPL-3.0-or-later
# Format control structures
caff1023ea72bb2ea94130e18a2a6e2ccf819e5f
# Update to coding-standard 1.1.1
aa5f037af71c915424c6dcfd5ad2dc82797dc0d6
# Update to coding-standard 1.2.3
af6de04e9e141466dc229e444ff3f146f4a34765
0bd284cb81b6866338aaaa67aa1d81ef9bfbb2ab
8af7ecb2576071f170ecbb0aa2311b26581e40e2
+10 -18
View File
@@ -2,18 +2,14 @@
/apps/admin_audit/appinfo/info.xml @luka-nextcloud @blizzz
/apps/cloud_federation_api/appinfo/info.xml @mejo-
/apps/comments/appinfo/info.xml @edward-ly @Pytal
/apps/contactsinteraction/appinfo/info.xml @kesselb @SebastianKrupinski
/apps/contactsinteraction/lib @kesselb @SebastianKrupinski
/apps/contactsinteraction/tests @kesselb @SebastianKrupinski
/apps/dashboard/appinfo/info.xml @julien-nc @juliusknorr
/apps/dav/lib/CalDAV @st3iny @SebastianKrupinski @tcitworld
/apps/dav/lib/CardDAV @hamza221 @SebastianKrupinski
/apps/dav/tests/unit/CalDAV @st3iny @SebastianKrupinski @tcitworld
/apps/dav/tests/unit/CardDAV @hamza221 @SebastianKrupinski
/apps/contactsinteraction/appinfo/info.xml @kesselb @miaulalala @ChristophWurst @GretaD @hamza221 @st3iny
/apps/dashboard/appinfo/info.xml @julien-nc @juliushaertl
/apps/dav/lib/CalDAV @ChristophWurst @miaulalala @tcitworld
/apps/dav/lib/CardDAV @ChristophWurst @miaulalala @tcitworld
/apps/encryption/appinfo/info.xml @come-nc @icewind1991
/apps/federatedfilesharing/appinfo/info.xml @icewind1991 @danxuliu
/apps/federation/appinfo/info.xml @nfebe
/apps/files/appinfo/info.xml @skjnldsv @Pytal @ArtificialOwl @come-nc @artonge @icewind1991 @szaimen @susnux @nfebe
/apps/federation/appinfo/info.xml @datenangebot
/apps/files/appinfo/info.xml @skjnldsv @Pytal @ArtificialOwl @come-nc @artonge @icewind1991 @szaimen @susnux @Fenn-CS
/apps/files_external/appinfo/info.xml @icewind1991 @artonge
/apps/files_reminders/appinfo/info.xml @Pytal
/apps/files_sharing/appinfo/info.xml @skjnldsv @come-nc
@@ -24,14 +20,14 @@
/apps/settings/appinfo/info.xml @Pytal @JuliaKirschenheuter
/apps/sharebymail/appinfo/info.xml @Altahrim
/apps/systemtags/appinfo/info.xml @Antreesy @marcelklehr
/apps/theming/appinfo/info.xml @skjnldsv @juliusknorr
/apps/theming/appinfo/info.xml @skjnldsv @juliushaertl
/apps/twofactor_backupcodes/appinfo/info.xml @st3iny @miaulalala @ChristophWurst
/apps/updatenotification/appinfo/info.xml @Pytal @JuliaKirschenheuter
/apps/user_ldap/appinfo/info.xml @come-nc @blizzz
/apps/user_status/appinfo/info.xml @Antreesy @nickvergessen
/apps/weather_status/appinfo/info.xml @julien-nc @juliusknorr
/apps/weather_status/appinfo/info.xml @julien-nc @juliushaertl
/apps/webhook_listeners/appinfo/info.xml @come-nc @julien-nc
/apps/workflowengine/appinfo/info.xml @blizzz @juliusknorr
/apps/workflowengine/appinfo/info.xml @blizzz @juliushaertl
# Frontend expertise
/apps/files/src* @skjnldsv
@@ -42,7 +38,7 @@
# Security team
/resources/codesigning @mgallien @miaulalala @nickvergessen
/resources/config/ca-bundle.crt @miaulalala @nickvergessen
/resources/config/ca-bundle.crt @ChristophWurst @miaulalala @nickvergessen
/.drone.yml @nickvergessen
# Two-Factor Authentication
@@ -69,10 +65,6 @@ ResponseDefinitions.php @provokateurin
/lib/public/Talk @nickvergessen
/lib/public/UserStatus @nickvergessen
# Groupware
/build/integration/dav_features/caldav.feature @miaulalala @st3iny @SebastianKrupinski
/build/integration/dav_features/carddav.feature @miaulalala @st3iny @SebastianKrupinski
# Personal interest
*/Activity/* @nickvergessen
*/Notifications/* @nickvergessen
+3 -19
View File
@@ -62,22 +62,6 @@ body:
description: Describe what you expected to happen instead.
validations:
required: true
- type: dropdown
id: install-method
attributes:
label: Installation method
description: |
Select installation method you've used.
_Describe the method in the "Additional info" section if you chose "Other"._
options:
- "Community Web installer on a VPS or web space"
- "Community Manual installation with Archive"
- "Community Docker image"
- "Community NextcloudPi appliance"
- "Community SNAP package"
- "Community VM appliance"
- "Other Community project"
- "Official All-in-One appliance"
- type: dropdown
id: nextcloud-version
attributes:
@@ -110,10 +94,10 @@ body:
Select PHP engine version serving Nextcloud Server.
_Describe in the "Additional info" section if you chose "Other"._
options:
- "PHP 8.0"
- "PHP 8.1"
- "PHP 8.2"
- "PHP 8.3"
- "PHP 8.2"
- "PHP 8.1"
- "PHP 8.0"
- "Other"
- type: dropdown
id: webserver
+37 -14
View File
@@ -59,20 +59,6 @@ updates:
reviewers:
- "nextcloud/server-dependabot"
# phpunit
- package-ecosystem: composer
directory: "/vendor-bin/phpunit"
schedule:
interval: weekly
day: saturday
time: "04:40"
timezone: Europe/Madrid
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
# Main master npm
- package-ecosystem: npm
directory: "/"
@@ -152,6 +138,25 @@ updates:
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
- package-ecosystem: npm
directory: "/"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable30
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
- package-ecosystem: composer
directory: "/build/integration"
schedule:
@@ -188,6 +193,24 @@ updates:
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: composer
directory: "/build/integration"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable30
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
ignore:
# ignore all GitHub linguist patch updates
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
# GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
+6 -33
View File
@@ -37,7 +37,7 @@ jobs:
- 'composer.lock'
- '**.php'
autoloader:
autocheckers:
runs-on: ubuntu-latest
needs: changes
@@ -51,16 +51,15 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
extensions: ctype, json, mbstring
coverage: none
ini-file: development
env:
@@ -72,32 +71,6 @@ jobs:
- name: Check auto loaders
run: bash ./build/autoloaderchecker.sh
autocheckers:
runs-on: ubuntu-latest-low
strategy:
matrix:
php-versions: ['8.1']
name: Translation and Files checkers
steps:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: none
ini-file: development
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check translations are JSON decodeable
run: php ./build/translation-checker.php
@@ -114,7 +87,7 @@ jobs:
permissions:
contents: none
runs-on: ubuntu-latest-low
needs: [changes, autoloader, autocheckers]
needs: [changes, autocheckers]
if: always()
@@ -122,4 +95,4 @@ jobs:
steps:
- name: Summary status
run: if ${{ needs.autocheckers.result != 'success' || (needs.changes.outputs.src != 'false' && needs.autoloader.result != 'success') }}; then exit 1; fi
run: if ${{ needs.changes.outputs.src != 'false' && needs.autocheckers.result != 'success' }}; then exit 1; fi
+15 -10
View File
@@ -29,6 +29,8 @@ jobs:
npmVersion: ${{ steps.versions.outputs.npmVersion }}
env:
# We'll install cypress in the cypress job
CYPRESS_INSTALL_BINARY: 0
PUPPETEER_SKIP_DOWNLOAD: true
steps:
@@ -115,9 +117,14 @@ jobs:
- name: Set up npm ${{ needs.init.outputs.npmVersion }}
run: npm i -g 'npm@${{ needs.init.outputs.npmVersion }}'
- name: Install cypress
run: ./node_modules/cypress/bin/cypress install
- name: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }} cypress tests
uses: cypress-io/github-action@df7484c5ba85def7eef30db301afa688187bc378 # v6.7.2
uses: cypress-io/github-action@496e7dc0edc421a9de8a36a31c793340e00c61bf # v6.7.5
with:
# We already installed the dependencies in the init job
install: false
component: ${{ matrix.containers == 'component' }}
group: ${{ matrix.use-cypress-cloud && matrix.containers == 'component' && 'Run component' || matrix.use-cypress-cloud && 'Run E2E' || '' }}
# cypress env
@@ -136,20 +143,18 @@ jobs:
SPLIT_INDEX: ${{ matrix.containers == 'component' && 0 || matrix.containers }}
- name: Upload snapshots
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: always()
with:
name: snapshots_videos_${{ matrix.containers }}
path: |
cypress/snapshots
cypress/videos
name: snapshots_${{ matrix.containers }}
path: cypress/snapshots
- name: Extract NC logs
if: failure() && matrix.containers != 'component'
run: docker logs nextcloud-cypress-tests_${{ env.APP_NAME }} > nextcloud.log
run: docker logs nextcloud-cypress-tests-${{ env.APP_NAME }} > nextcloud.log
- name: Upload NC logs
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure() && matrix.containers != 'component'
with:
name: nc_logs_${{ matrix.containers }}
@@ -157,10 +162,10 @@ jobs:
- name: Create data dir archive
if: failure() && matrix.containers != 'component'
run: docker exec nextcloud-cypress-tests_${{ env.APP_NAME }} tar -cvjf - data > data.tar
run: docker exec nextcloud-cypress-tests-server tar -cvjf - data > data.tar
- name: Upload data dir archive
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure() && matrix.containers != 'component'
with:
name: nc_data_${{ matrix.containers }}
+1 -1
View File
@@ -72,7 +72,7 @@ jobs:
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
extensions: ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+1 -1
View File
@@ -68,7 +68,7 @@ jobs:
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
extensions: ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -34,7 +34,7 @@ jobs:
- '**.php'
files-external-smb-kerberos:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
needs: changes
if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
@@ -53,12 +53,6 @@ jobs:
repository: nextcloud/user_saml
path: apps/user_saml
- name: Install user_saml
run: |
cd apps/user_saml
composer i
cd ../..
- name: Pull images
run: |
docker pull ghcr.io/icewind1991/samba-krb-test-dc
+2 -2
View File
@@ -65,7 +65,7 @@ jobs:
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, smbclient, sqlite, pdo_sqlite
extensions: ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, smbclient, sqlite, pdo_sqlite
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
ini-file: development
env:
@@ -94,7 +94,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@922d8d7b314a529f2be903c1e79ee8283c492863 # v4.1.1
uses: codecov/codecov-action@4b21c320b5517fc6ffd4406a28e66325c721dc20 # v4.1.1
with:
files: ./clover.xml
flags: phpunit-files-external-smb
+1 -1
View File
@@ -91,7 +91,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@922d8d7b314a529f2be903c1e79ee8283c492863 # v4.1.1
uses: codecov/codecov-action@4b21c320b5517fc6ffd4406a28e66325c721dc20 # v4.1.1
with:
files: ./clover.xml
flags: phpunit-files-external-webdav
+1 -1
View File
@@ -71,7 +71,7 @@ jobs:
- 'videoverification_features'
php-versions: ['8.1']
spreed-versions: ['stable30']
spreed-versions: ['main']
services:
redis:
+1 -1
View File
@@ -99,7 +99,7 @@ jobs:
run: npm run test:coverage --if-present
- name: Collect coverage
uses: codecov/codecov-action@922d8d7b314a529f2be903c1e79ee8283c492863 # v4.3.1
uses: codecov/codecov-action@4b21c320b5517fc6ffd4406a28e66325c721dc20 # v4.3.1
with:
files: ./coverage/lcov.info
+1 -1
View File
@@ -21,7 +21,7 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ['main', 'master', 'stable29', 'stable28', 'stable27']
branches: ['main', 'master', 'stable30', 'stable29', 'stable28']
name: npm-audit-fix-${{ matrix.branches }}
+4 -4
View File
@@ -38,7 +38,7 @@ jobs:
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -64,7 +64,7 @@ jobs:
curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt
curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt
output: before.json
profiler-branch: stable30
profiler-branch: master
- name: Apply PR
run: |
@@ -86,12 +86,12 @@ jobs:
curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt
curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt
output: after.json
profiler-branch: stable30
profiler-branch: master
compare-with: before.json
- name: Upload profiles
if: always()
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874
with:
name: profiles
path: |
+2 -2
View File
@@ -125,7 +125,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -159,7 +159,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v4.1.1
uses: codecov/codecov-action@v4.5.0
with:
files: ./clover.db.xml
flags: phpunit-mysql
-1
View File
@@ -42,7 +42,6 @@ jobs:
- '**/lib/**'
- '**/templates/**'
- '**/tests/**'
- 'resources/**'
- 'vendor/**'
- 'vendor-bin/**'
- '.php-cs-fixer.dist.php'
@@ -1,121 +0,0 @@
# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: PHPUnit primary object store
on:
pull_request:
schedule:
- cron: "15 2 * * *"
concurrency:
group: phpunit-object-store-primary-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
changes:
runs-on: ubuntu-latest-low
outputs:
src: ${{ steps.changes.outputs.src}}
steps:
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- '3rdparty/**'
- '**/appinfo/**'
- '**/lib/**'
- '**/templates/**'
- '**/tests/**'
- 'vendor/**'
- 'vendor-bin/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'
- '**.php'
object-store-primary-tests-minio:
runs-on: ubuntu-latest
needs: changes
if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
strategy:
# do not stop on another job's failure
fail-fast: false
matrix:
php-versions: ['8.1']
key: ['s3', 's3-multibucket']
name: php${{ matrix.php-versions }}-${{ matrix.key }}-minio
services:
cache:
image: ghcr.io/nextcloud/continuous-integration-redis:latest
ports:
- 6379:6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
minio:
image: bitnami/minio
env:
MINIO_ROOT_USER: nextcloud
MINIO_ROOT_PASSWORD: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
MINIO_DEFAULT_BUCKETS: nextcloud
ports:
- "9000:9000"
steps:
- name: Checkout server
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Nextcloud
env:
OBJECT_STORE: ${{ matrix.key }}
OBJECT_STORE_KEY: nextcloud
OBJECT_STORE_SECRET: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
run: |
composer install
cp tests/redis.config.php config/
cp tests/preseed-config.php config/config.php
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
- name: Wait for S3
run: |
sleep 10
curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://localhost:9000/minio/health/ready
- name: PHPUnit
run: composer run test:db
- name: S3 logs
if: always()
run: |
cat data/nextcloud.log
docker ps -a
docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
object-store-primary-summary:
runs-on: ubuntu-latest-low
needs: [changes,object-store-primary-tests-minio]
if: always()
steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.object-store-primary-tests-minio.result != 'success' }}; then exit 1; fi
+6 -6
View File
@@ -25,7 +25,7 @@ jobs:
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: '8.1'
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -38,7 +38,7 @@ jobs:
- name: Show potential changes in Psalm baseline
if: always()
run: git diff --exit-code -- . ':!lib/composer'
run: git diff -- . ':!lib/composer'
- name: Upload Analysis results to GitHub
if: always()
@@ -59,14 +59,14 @@ jobs:
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: '8.1'
extensions: ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
extensions: ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
- name: Composer install
run: composer i
- name: Psalm taint analysis
run: composer run psalm:ci -- --monochrome --no-progress --output-format=github --report=results.sarif --taint-analysis --ignore-baseline
run: composer run psalm:ci -- --monochrome --no-progress --output-format=github --report=results.sarif --taint-analysis
- name: Upload Security Analysis results to GitHub
if: always()
@@ -87,7 +87,7 @@ jobs:
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: '8.1'
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -100,4 +100,4 @@ jobs:
- name: Show potential changes in Psalm baseline
if: always()
run: git diff --exit-code -- . ':!lib/composer'
run: git diff -- . ':!lib/composer'
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ['master', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
branches: ['master', 'stable30', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
name: update-ca-certificate-bundle-${{ matrix.branches }}
@@ -14,7 +14,7 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ['master', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
branches: ['master', 'stable30', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
name: update-code-signing-crl-${{ matrix.branches }}
@@ -0,0 +1,52 @@
# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Auto approve psalm baseline update
on:
pull_request_target:
branches:
- main
- master
- stable*
permissions:
contents: read
concurrency:
group: update-psalm-baseline-approve-merge-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
auto-approve-merge:
if: github.actor == 'nextcloud-command'
runs-on: ubuntu-latest-low
permissions:
# for hmarr/auto-approve-action to approve PRs
pull-requests: write
# for alexwilson/enable-github-automerge-action to approve PRs
contents: write
steps:
- name: Disabled on forks
if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
run: |
echo 'Can not approve PRs from forks'
exit 1
- uses: mdecoleman/pr-branch-name@55795d86b4566d300d237883103f052125cc7508 # v3.0.0
id: branchname
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
# GitHub actions bot approve
- uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-psalm-baseline')
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
# Enable GitHub auto merge
- name: Auto merge
uses: alexwilson/enable-github-automerge-action@56e3117d1ae1540309dc8f7a9f2825bc3c5f06ff # main
if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-psalm-baseline')
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,69 @@
# SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Update Psalm baseline
on:
workflow_dispatch:
schedule:
- cron: "5 2 * * *"
jobs:
update-psalm-baseline:
runs-on: ubuntu-latest
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
strategy:
fail-fast: false
matrix:
branches: ['master', 'stable30', 'stable29', 'stable28']
name: update-psalm-baseline-${{ matrix.branches }}
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
ref: ${{ matrix.branches }}
submodules: true
- name: Set up php
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: '8.1'
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Composer install
run: composer install
- name: Psalm
run: composer run psalm:ci -- --monochrome --no-progress --output-format=text --update-baseline
continue-on-error: true
- name: Psalm OCP
run: composer run psalm:ci -- -c psalm-ocp.xml --monochrome --no-progress --output-format=github --update-baseline
continue-on-error: true
- name: Reset composer
run: |
git clean -f lib/composer
git checkout composer.json composer.lock lib/composer
- name: Create Pull Request
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: 'chore(tests): Update psalm baseline'
committer: GitHub <noreply@github.com>
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
signoff: true
branch: 'automated/noid/${{ matrix.branches }}-update-psalm-baseline'
title: '[${{ matrix.branches }}] Update psalm-baseline.xml'
body: |
Auto-generated update psalm-baseline.xml with fixed psalm warnings
labels: |
automated pr
3. to review
team-reviewers: server-backend
+4 -4
View File
@@ -49,8 +49,8 @@
</Else>
</FilesMatch>
# Let browsers cache OTF and WOFF files for a week
<FilesMatch "\.(otf|woff2?)$">
# Let browsers cache WOFF files for a week
<FilesMatch "\.woff2?$">
Header set Cache-Control "max-age=604800"
</FilesMatch>
</IfModule>
@@ -103,10 +103,10 @@
# - https://docs.cyberduck.io/mountainduck/issues/fastcgi/
# - https://docs.nextcloud.com/server/latest/admin_manual/issues/general_troubleshooting.html#troubleshooting-webdav
<IfModule mod_setenvif.c>
SetEnvIfNoCase Transfer-Encoding "chunked" proxy-sendcl=1
SetEnvIf Transfer-Encoding "chunked" proxy-sendcl=1
</IfModule>
# Apache disabled the sending of the server-side content-length header
# Apache disabled the sending of the server-side content-length header
# in their 2.4.59 patch updated which breaks some use-cases in Nextcloud.
# Setting ap_trust_cgilike_cl allows to bring back the usual behaviour.
# See https://bz.apache.org/bugzilla/show_bug.cgi?id=68973
+13 -19
View File
@@ -14,29 +14,23 @@ $config = new Config();
$config
->setParallelConfig(ParallelConfigFactory::detect())
->getFinder()
->ignoreVCSIgnored(true)
->exclude('config')
->exclude('data')
->notPath('3rdparty')
->notPath('build/integration/vendor')
->notPath('build/lib')
->notPath('build/node_modules')
->notPath('build/stubs')
->notPath('composer')
->notPath('node_modules')
->notPath('vendor')
->in('apps')
->exclude('3rdparty')
->exclude('build/stubs')
->exclude('composer')
->in(__DIR__);
// Ignore additional app directories
$rootDir = new \DirectoryIterator(__DIR__);
foreach ($rootDir as $node) {
if (str_starts_with($node->getFilename(), 'apps')) {
$return = shell_exec('git check-ignore ' . escapeshellarg($node->getFilename() . '/'));
$ignoredEntries = shell_exec('git status --porcelain --ignored ' . escapeshellarg(__DIR__));
$ignoredEntries = explode("\n", $ignoredEntries);
$ignoredEntries = array_filter($ignoredEntries, static fn (string $line) => str_starts_with($line, '!! '));
$ignoredEntries = array_map(static fn (string $line) => substr($line, 3), $ignoredEntries);
$ignoredEntries = array_values($ignoredEntries);
if ($return !== null) {
$config->getFinder()->exclude($node->getFilename());
}
foreach ($ignoredEntries as $ignoredEntry) {
if (str_ends_with($ignoredEntry, '/')) {
$config->getFinder()->exclude($ignoredEntry);
} else {
$config->getFinder()->notPath($ignoredEntry);
}
}
+12 -24
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -6,4 +6,4 @@ and our products: “Nextcloud Files”; “Nextcloud Groupware” and “Nextcl
This set of marks is collectively referred to as the “Nextcloud marks.”
Use of Nextcloud logos and other marks is only permitted under the guidelines provided by the Nextcloud GmbH.
A copy can be found at https://nextcloud.com/trademarks/
A copy can be found at https://discord.com/branding
+6 -2
View File
@@ -5,8 +5,8 @@
-->
# Nextcloud Server ☁
[![REUSE status](https://api.reuse.software/badge/github.com/nextcloud/server)](https://api.reuse.software/info/github.com/nextcloud/server)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/server/badges/quality-score.png?b=stable30)](https://scrutinizer-ci.com/g/nextcloud/server/?branch=stable30)
[![codecov](https://codecov.io/gh/nextcloud/server/branch/stable30/graph/badge.svg)](https://codecov.io/gh/nextcloud/server)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/server/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/nextcloud/server/?branch=master)
[![codecov](https://codecov.io/gh/nextcloud/server/branch/master/graph/badge.svg)](https://codecov.io/gh/nextcloud/server)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/209/badge)](https://bestpractices.coreinfrastructure.org/projects/209)
[![Design](https://contribute.design/api/shield/nextcloud/server)](https://contribute.design/nextcloud/server)
@@ -74,6 +74,10 @@ Otherwise, git checkouts can be handled the same as release archives, by using t
- Comment on a pull request with `/update-3rdparty` to update the 3rd party submodule. It will update to the last commit of the 3rd party branch named like the PR target.
#### Ignore code style updates in git blame
`git config blame.ignoreRevsFile .git-blame-ignore-revs`
## Contribution guidelines 📜
All contributions to this repository from June 16, 2016, and onward are considered to be
-18
View File
@@ -1,18 +0,0 @@
/**
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import JSDOMEnvironment from 'jest-environment-jsdom'
// https://github.com/facebook/jest/blob/v29.4.3/website/versioned_docs/version-29.4/Configuration.md#testenvironment-string
export default class FixJSDOMEnvironment extends JSDOMEnvironment {
constructor(...args: ConstructorParameters<typeof JSDOMEnvironment>) {
super(...args)
// https://github.com/jsdom/jsdom/issues/3363
// 31 ad above switched to vitest and don't have that issue
this.global.structuredClone = structuredClone
}
}
-12
View File
@@ -1,12 +0,0 @@
/**
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import '@testing-library/jest-dom'
// Mock `window.location` with Jest spies and extend expect
import 'jest-location-mock'
// Mock `window.fetch` with Jest
import 'jest-fetch-mock'
+2 -1
View File
@@ -2,7 +2,8 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
window.OC = { ...window.OC }
window.OCA = { ...window.OCA }
window.OCP = { ...window.OCP }
window._oc_webroot = ''
+5
View File
@@ -0,0 +1,5 @@
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: CC0-1.0
*/
import '@testing-library/jest-dom/vitest'
-6
View File
@@ -1,6 +0,0 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"verbatimModuleSyntax": false
}
}
+2 -2
View File
@@ -10,7 +10,7 @@
<name>Auditing / Logging</name>
<summary>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</summary>
<description>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</description>
<version>1.20.0</version>
<version>1.21.0</version>
<licence>agpl</licence>
<author>Nextcloud</author>
<namespace>AdminAudit</namespace>
@@ -20,7 +20,7 @@
<category>monitoring</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="30" max-version="30"/>
<nextcloud min-version="31" max-version="31"/>
</dependencies>
<background-jobs>
<job>OCA\AdminAudit\BackgroundJobs\Rotate</job>
@@ -8,20 +8,22 @@ $baseDir = $vendorDir;
return array(
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
'OCA\\AdminAudit\\Actions\\Action' => $baseDir . '/../lib/Actions/Action.php',
'OCA\\AdminAudit\\Actions\\AppManagement' => $baseDir . '/../lib/Actions/AppManagement.php',
'OCA\\AdminAudit\\Actions\\Auth' => $baseDir . '/../lib/Actions/Auth.php',
'OCA\\AdminAudit\\Actions\\Console' => $baseDir . '/../lib/Actions/Console.php',
'OCA\\AdminAudit\\Actions\\Files' => $baseDir . '/../lib/Actions/Files.php',
'OCA\\AdminAudit\\Actions\\GroupManagement' => $baseDir . '/../lib/Actions/GroupManagement.php',
'OCA\\AdminAudit\\Actions\\Security' => $baseDir . '/../lib/Actions/Security.php',
'OCA\\AdminAudit\\Actions\\Sharing' => $baseDir . '/../lib/Actions/Sharing.php',
'OCA\\AdminAudit\\Actions\\TagManagement' => $baseDir . '/../lib/Actions/TagManagement.php',
'OCA\\AdminAudit\\Actions\\Trashbin' => $baseDir . '/../lib/Actions/Trashbin.php',
'OCA\\AdminAudit\\Actions\\UserManagement' => $baseDir . '/../lib/Actions/UserManagement.php',
'OCA\\AdminAudit\\Actions\\Versions' => $baseDir . '/../lib/Actions/Versions.php',
'OCA\\AdminAudit\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php',
'OCA\\AdminAudit\\AuditLogger' => $baseDir . '/../lib/AuditLogger.php',
'OCA\\AdminAudit\\BackgroundJobs\\Rotate' => $baseDir . '/../lib/BackgroundJobs/Rotate.php',
'OCA\\AdminAudit\\IAuditLogger' => $baseDir . '/../lib/IAuditLogger.php',
'OCA\\AdminAudit\\Listener\\AppManagementEventListener' => $baseDir . '/../lib/Listener/AppManagementEventListener.php',
'OCA\\AdminAudit\\Listener\\AuthEventListener' => $baseDir . '/../lib/Listener/AuthEventListener.php',
'OCA\\AdminAudit\\Listener\\ConsoleEventListener' => $baseDir . '/../lib/Listener/ConsoleEventListener.php',
'OCA\\AdminAudit\\Listener\\CriticalActionPerformedEventListener' => $baseDir . '/../lib/Listener/CriticalActionPerformedEventListener.php',
'OCA\\AdminAudit\\Listener\\FileEventListener' => $baseDir . '/../lib/Listener/FileEventListener.php',
'OCA\\AdminAudit\\Listener\\GroupManagementEventListener' => $baseDir . '/../lib/Listener/GroupManagementEventListener.php',
'OCA\\AdminAudit\\Listener\\SecurityEventListener' => $baseDir . '/../lib/Listener/SecurityEventListener.php',
'OCA\\AdminAudit\\Listener\\SharingEventListener' => $baseDir . '/../lib/Listener/SharingEventListener.php',
'OCA\\AdminAudit\\Listener\\UserManagementEventListener' => $baseDir . '/../lib/Listener/UserManagementEventListener.php',
);
@@ -23,22 +23,24 @@ class ComposerStaticInitAdminAudit
public static $classMap = array (
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
'OCA\\AdminAudit\\Actions\\Action' => __DIR__ . '/..' . '/../lib/Actions/Action.php',
'OCA\\AdminAudit\\Actions\\AppManagement' => __DIR__ . '/..' . '/../lib/Actions/AppManagement.php',
'OCA\\AdminAudit\\Actions\\Auth' => __DIR__ . '/..' . '/../lib/Actions/Auth.php',
'OCA\\AdminAudit\\Actions\\Console' => __DIR__ . '/..' . '/../lib/Actions/Console.php',
'OCA\\AdminAudit\\Actions\\Files' => __DIR__ . '/..' . '/../lib/Actions/Files.php',
'OCA\\AdminAudit\\Actions\\GroupManagement' => __DIR__ . '/..' . '/../lib/Actions/GroupManagement.php',
'OCA\\AdminAudit\\Actions\\Security' => __DIR__ . '/..' . '/../lib/Actions/Security.php',
'OCA\\AdminAudit\\Actions\\Sharing' => __DIR__ . '/..' . '/../lib/Actions/Sharing.php',
'OCA\\AdminAudit\\Actions\\TagManagement' => __DIR__ . '/..' . '/../lib/Actions/TagManagement.php',
'OCA\\AdminAudit\\Actions\\Trashbin' => __DIR__ . '/..' . '/../lib/Actions/Trashbin.php',
'OCA\\AdminAudit\\Actions\\UserManagement' => __DIR__ . '/..' . '/../lib/Actions/UserManagement.php',
'OCA\\AdminAudit\\Actions\\Versions' => __DIR__ . '/..' . '/../lib/Actions/Versions.php',
'OCA\\AdminAudit\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php',
'OCA\\AdminAudit\\AuditLogger' => __DIR__ . '/..' . '/../lib/AuditLogger.php',
'OCA\\AdminAudit\\BackgroundJobs\\Rotate' => __DIR__ . '/..' . '/../lib/BackgroundJobs/Rotate.php',
'OCA\\AdminAudit\\IAuditLogger' => __DIR__ . '/..' . '/../lib/IAuditLogger.php',
'OCA\\AdminAudit\\Listener\\AppManagementEventListener' => __DIR__ . '/..' . '/../lib/Listener/AppManagementEventListener.php',
'OCA\\AdminAudit\\Listener\\AuthEventListener' => __DIR__ . '/..' . '/../lib/Listener/AuthEventListener.php',
'OCA\\AdminAudit\\Listener\\ConsoleEventListener' => __DIR__ . '/..' . '/../lib/Listener/ConsoleEventListener.php',
'OCA\\AdminAudit\\Listener\\CriticalActionPerformedEventListener' => __DIR__ . '/..' . '/../lib/Listener/CriticalActionPerformedEventListener.php',
'OCA\\AdminAudit\\Listener\\FileEventListener' => __DIR__ . '/..' . '/../lib/Listener/FileEventListener.php',
'OCA\\AdminAudit\\Listener\\GroupManagementEventListener' => __DIR__ . '/..' . '/../lib/Listener/GroupManagementEventListener.php',
'OCA\\AdminAudit\\Listener\\SecurityEventListener' => __DIR__ . '/..' . '/../lib/Listener/SecurityEventListener.php',
'OCA\\AdminAudit\\Listener\\SharingEventListener' => __DIR__ . '/..' . '/../lib/Listener/SharingEventListener.php',
'OCA\\AdminAudit\\Listener\\UserManagementEventListener' => __DIR__ . '/..' . '/../lib/Listener/UserManagementEventListener.php',
);
public static function getInitializer(ClassLoader $loader)
-7
View File
@@ -1,7 +0,0 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Auditēšana / Žurnalizēšana",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nodrošina Nextcloud žurnalizēšanas iespējas, piemēram, faila piekļuves žurnalizēšanu vai citas sensitīvas darbības."
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
-5
View File
@@ -1,5 +0,0 @@
{ "translations": {
"Auditing / Logging" : "Auditēšana / Žurnalizēšana",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nodrošina Nextcloud žurnalizēšanas iespējas, piemēram, faila piekļuves žurnalizēšanu vai citas sensitīvas darbības."
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
}
-7
View File
@@ -1,7 +0,0 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Pengauditan / Pengelogan",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Menyediakan kebolehan pengelogan untuk Nextcloud seperti akses fail log atau tindakan sensitif."
},
"nplurals=1; plural=0;");
-5
View File
@@ -1,5 +0,0 @@
{ "translations": {
"Auditing / Logging" : "Pengauditan / Pengelogan",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Menyediakan kebolehan pengelogan untuk Nextcloud seperti akses fail log atau tindakan sensitif."
},"pluralForm" :"nplurals=1; plural=0;"
}
+2 -2
View File
@@ -1,7 +1,7 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Auditorias / registos",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fornece funcionalidades de registo para o Nextcloud como registar acessos a ficheiros ou outras ações sensíveis. "
"Auditing / Logging" : "Auditorias / Registos",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fornece funcionalidades de registo para o Nextcloud como registar acessos a ficheiros ou demais ações sensíveis. "
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
+2 -2
View File
@@ -1,5 +1,5 @@
{ "translations": {
"Auditing / Logging" : "Auditorias / registos",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fornece funcionalidades de registo para o Nextcloud como registar acessos a ficheiros ou outras ações sensíveis. "
"Auditing / Logging" : "Auditorias / Registos",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fornece funcionalidades de registo para o Nextcloud como registar acessos a ficheiros ou demais ações sensíveis. "
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}
-7
View File
@@ -1,7 +0,0 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "ئىقتىسادىي تەپتىش / خاتىرىلەش",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nextcloud غا تىزىمغا كىرىش ئىقتىدارى بىلەن تەمىنلەيدۇ ، مەسىلەن ھۆججەتلەرنى زىيارەت قىلىش ياكى باشقا سەزگۈر ھەرىكەتلەر."
},
"nplurals=2; plural=(n != 1);");
-5
View File
@@ -1,5 +0,0 @@
{ "translations": {
"Auditing / Logging" : "ئىقتىسادىي تەپتىش / خاتىرىلەش",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nextcloud غا تىزىمغا كىرىش ئىقتىدارى بىلەن تەمىنلەيدۇ ، مەسىلەن ھۆججەتلەرنى زىيارەت قىلىش ياكى باشقا سەزگۈر ھەرىكەتلەر."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
-7
View File
@@ -1,7 +0,0 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Audit / Kirish",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Next bulut uchun tizimga kirish qobiliyatini ta'minlaydi, masalan, faylga kirish yoki boshqa sezgir harakatlar."
},
"nplurals=1; plural=0;");
-5
View File
@@ -1,5 +0,0 @@
{ "translations": {
"Auditing / Logging" : "Audit / Kirish",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Next bulut uchun tizimga kirish qobiliyatini ta'minlaydi, masalan, faylga kirish yoki boshqa sezgir harakatlar."
},"pluralForm" :"nplurals=1; plural=0;"
}
+2 -2
View File
@@ -1,7 +1,7 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Kiểm tra / Nhật ký",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
"Auditing / Logging" : "Kiểm tra / Nhật ký",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
},
"nplurals=1; plural=0;");
+2 -2
View File
@@ -1,5 +1,5 @@
{ "translations": {
"Auditing / Logging" : "Kiểm tra / Nhật ký",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
"Auditing / Logging" : "Kiểm tra / Nhật ký",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
},"pluralForm" :"nplurals=1; plural=0;"
}
+2 -2
View File
@@ -1,7 +1,7 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "稽核/記錄",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "提供 Nextcloud 的記錄功能,例如錄檔存取或其他敏感操作。"
"Auditing / Logging" : "稽核記錄",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "提供 Nextcloud 的記錄功能,例如錄檔存取或其他敏感操作。"
},
"nplurals=1; plural=0;");
+2 -2
View File
@@ -1,5 +1,5 @@
{ "translations": {
"Auditing / Logging" : "稽核/記錄",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "提供 Nextcloud 的記錄功能,例如錄檔存取或其他敏感操作。"
"Auditing / Logging" : "稽核記錄",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "提供 Nextcloud 的記錄功能,例如錄檔存取或其他敏感操作。"
},"pluralForm" :"nplurals=1; plural=0;"
}
@@ -1,42 +0,0 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Actions;
class AppManagement extends Action {
/**
* @param string $appName
*/
public function enableApp(string $appName): void {
$this->log('App "%s" enabled',
['app' => $appName],
['app']
);
}
/**
* @param string $appName
* @param string[] $groups
*/
public function enableAppForGroups(string $appName, array $groups): void {
$this->log('App "%1$s" enabled for groups: %2$s',
['app' => $appName, 'groups' => implode(', ', $groups)],
['app', 'groups']
);
}
/**
* @param string $appName
*/
public function disableApp(string $appName): void {
$this->log('App "%s" disabled',
['app' => $appName],
['app']
);
}
}
-45
View File
@@ -1,45 +0,0 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Actions;
/**
* Class Auth logs all auth related actions
*
* @package OCA\AdminAudit\Actions
*/
class Auth extends Action {
public function loginAttempt(array $params): void {
$this->log(
'Login attempt: "%s"',
$params,
[
'uid',
],
true
);
}
public function loginSuccessful(array $params): void {
$this->log(
'Login successful: "%s"',
$params,
[
'uid',
],
true
);
}
public function logout(array $params): void {
$this->log(
'Logout occurred',
[],
[]
);
}
}
-28
View File
@@ -1,28 +0,0 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Actions;
class Console extends Action {
/**
* @param array $arguments
*/
public function runCommand(array $arguments): void {
if (!isset($arguments[1]) || $arguments[1] === '_completion') {
// Don't log autocompletion
return;
}
// Remove `./occ`
array_shift($arguments);
$this->log('Console command executed: %s',
['arguments' => implode(' ', $arguments)],
['arguments']
);
}
}
+51 -43
View File
@@ -8,16 +8,16 @@ declare(strict_types=1);
namespace OCA\AdminAudit\Actions;
use OC\Files\Node\NonExistingFile;
use OCP\Files\Events\Node\BeforeNodeDeletedEvent;
use OCP\Files\Events\Node\BeforeNodeReadEvent;
use OCP\Files\Events\Node\BeforeNodeRenamedEvent;
use OCP\Files\Events\Node\BeforeNodeWrittenEvent;
use OCP\Files\Events\Node\NodeCopiedEvent;
use OCP\Files\Events\Node\NodeCreatedEvent;
use OCP\Files\Events\Node\NodeDeletedEvent;
use OCP\Files\Events\Node\NodeRenamedEvent;
use OCP\Files\Events\Node\NodeWrittenEvent;
use OCP\Files\InvalidPathException;
use OCP\Files\NotFoundException;
use OCP\Preview\BeforePreviewFetchedEvent;
use Psr\Log\LoggerInterface;
/**
@@ -28,9 +28,10 @@ use Psr\Log\LoggerInterface;
class Files extends Action {
private array $renamedNodes = [];
/**
* Logs file read actions
*
* @param BeforeNodeReadEvent $event
*/
public function read(BeforeNodeReadEvent $event): void {
try {
@@ -41,7 +42,7 @@ class Files extends Action {
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file read: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
'Exception thrown in file read: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -54,6 +55,8 @@ class Files extends Action {
/**
* Logs rename actions of files
*
* @param BeforeNodeRenamedEvent $event
*/
public function beforeRename(BeforeNodeRenamedEvent $event): void {
try {
@@ -61,7 +64,7 @@ class Files extends Action {
$this->renamedNodes[$source->getId()] = $source;
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file rename: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
'Exception thrown in file rename: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -69,6 +72,8 @@ class Files extends Action {
/**
* Logs rename actions of files
*
* @param NodeRenamedEvent $event
*/
public function afterRename(NodeRenamedEvent $event): void {
try {
@@ -81,7 +86,7 @@ class Files extends Action {
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file rename: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
'Exception thrown in file rename: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -96,6 +101,8 @@ class Files extends Action {
/**
* Logs creation of files
*
* @param NodeCreatedEvent $event
*/
public function create(NodeCreatedEvent $event): void {
try {
@@ -105,7 +112,7 @@ class Files extends Action {
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file create: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
'Exception thrown in file create: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -121,6 +128,8 @@ class Files extends Action {
/**
* Logs copying of files
*
* @param NodeCopiedEvent $event
*/
public function copy(NodeCopiedEvent $event): void {
try {
@@ -132,7 +141,7 @@ class Files extends Action {
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file copy: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
'Exception thrown in file copy: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -145,17 +154,19 @@ class Files extends Action {
/**
* Logs writing of files
*
* @param BeforeNodeWrittenEvent $event
*/
public function write(NodeWrittenEvent $event): void {
public function write(BeforeNodeWrittenEvent $event): void {
$node = $event->getNode();
try {
$params = [
'id' => $node->getId(),
'id' => $node instanceof NonExistingFile ? null : $node->getId(),
'path' => mb_substr($node->getInternalPath(), 5),
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file write: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
'Exception thrown in file write: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -171,9 +182,11 @@ class Files extends Action {
}
/**
* Logs deletions of files
* Logs update of files
*
* @param NodeWrittenEvent $event
*/
public function delete(BeforeNodeDeletedEvent $event): void {
public function update(NodeWrittenEvent $event): void {
try {
$params = [
'id' => $event->getNode()->getId(),
@@ -181,7 +194,31 @@ class Files extends Action {
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file delete: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
'Exception thrown in file update: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
$this->log(
'File with id "%s" updated: "%s"',
$params,
array_keys($params)
);
}
/**
* Logs deletions of files
*
* @param NodeDeletedEvent $event
*/
public function delete(NodeDeletedEvent $event): void {
try {
$params = [
'id' => $event->getNode()->getId(),
'path' => mb_substr($event->getNode()->getInternalPath(), 5),
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
'Exception thrown in file delete: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -191,33 +228,4 @@ class Files extends Action {
array_keys($params)
);
}
/**
* Logs preview access to a file
*
* @param BeforePreviewFetchedEvent $event
*/
public function preview(BeforePreviewFetchedEvent $event): void {
try {
$file = $event->getNode();
$params = [
'id' => $file->getId(),
'width' => $event->getWidth(),
'height' => $event->getHeight(),
'crop' => $event->isCrop(),
'mode' => $event->getMode(),
'path' => mb_substr($file->getInternalPath(), 5)
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file preview: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
$this->log(
'Preview accessed: (id: "%s", width: "%s", height: "%s" crop: "%s", mode: "%s", path: "%s")',
$params,
array_keys($params)
);
}
}
@@ -1,87 +0,0 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Actions;
use OCP\IGroup;
use OCP\IUser;
/**
* Class GroupManagement logs all group manager related events
*
* @package OCA\AdminAudit\Actions
*/
class GroupManagement extends Action {
/**
* log add user to group event
*
* @param IGroup $group
* @param IUser $user
*/
public function addUser(IGroup $group, IUser $user): void {
$this->log('User "%s" added to group "%s"',
[
'group' => $group->getGID(),
'user' => $user->getUID()
],
[
'user', 'group'
]
);
}
/**
* log remove user from group event
*
* @param IGroup $group
* @param IUser $user
*/
public function removeUser(IGroup $group, IUser $user): void {
$this->log('User "%s" removed from group "%s"',
[
'group' => $group->getGID(),
'user' => $user->getUID()
],
[
'user', 'group'
]
);
}
/**
* log create group to group event
*
* @param IGroup $group
*/
public function createGroup(IGroup $group): void {
$this->log('Group created: "%s"',
[
'group' => $group->getGID()
],
[
'group'
]
);
}
/**
* log delete group to group event
*
* @param IGroup $group
*/
public function deleteGroup(IGroup $group): void {
$this->log('Group deleted: "%s"',
[
'group' => $group->getGID()
],
[
'group'
]
);
}
}
-60
View File
@@ -1,60 +0,0 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Actions;
use OCP\Authentication\TwoFactorAuth\IProvider;
use OCP\IUser;
/**
* Class Sharing logs the sharing actions
*
* @package OCA\AdminAudit\Actions
*/
class Security extends Action {
/**
* Logs failed twofactor challenge
*/
public function twofactorFailed(IUser $user, IProvider $provider): void {
$params = [
'displayName' => $user->getDisplayName(),
'uid' => $user->getUID(),
'provider' => $provider->getDisplayName(),
];
$this->log(
'Failed two factor attempt by user %s (%s) with provider %s',
$params,
[
'displayName',
'uid',
'provider',
]
);
}
/**
* Logs successful twofactor challenge
*/
public function twofactorSuccess(IUser $user, IProvider $provider): void {
$params = [
'displayName' => $user->getDisplayName(),
'uid' => $user->getUID(),
'provider' => $provider->getDisplayName(),
];
$this->log(
'Successful two factor attempt by user %s (%s) with provider %s',
$params,
[
'displayName',
'uid',
'provider',
]
);
}
}
-267
View File
@@ -7,279 +7,12 @@ declare(strict_types=1);
*/
namespace OCA\AdminAudit\Actions;
use OCP\Share\IShare;
/**
* Class Sharing logs the sharing actions
*
* @package OCA\AdminAudit\Actions
*/
class Sharing extends Action {
/**
* Logs sharing of data
*
* @param array $params
*/
public function shared(array $params): void {
if ($params['shareType'] === IShare::TYPE_LINK) {
$this->log(
'The %s "%s" with ID "%s" has been shared via link with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_USER) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the user "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_GROUP) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the group "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_ROOM) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the room "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_EMAIL) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the email recipient "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_CIRCLE) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the circle "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_REMOTE) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the remote user "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_REMOTE_GROUP) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the remote group "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_DECK) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the deck card "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_SCIENCEMESH) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the ScienceMesh user "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
}
}
/**
* Logs unsharing of data
*
* @param array $params
*/
public function unshare(array $params): void {
if ($params['shareType'] === IShare::TYPE_LINK) {
$this->log(
'The %s "%s" with ID "%s" has been unshared (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_USER) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the user "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_GROUP) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the group "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_ROOM) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the room "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_EMAIL) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the email recipient "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_CIRCLE) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the circle "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_REMOTE) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the remote user "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_REMOTE_GROUP) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the remote group "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_DECK) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the deck card "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif ($params['shareType'] === IShare::TYPE_SCIENCEMESH) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the ScienceMesh user "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
}
}
/**
* Logs the updating of permission changes for shares
@@ -1,122 +0,0 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Actions;
use OCP\IUser;
/**
* Class UserManagement logs all user management related actions.
*
* @package OCA\AdminAudit\Actions
*/
class UserManagement extends Action {
/**
* Log creation of users
*
* @param array $params
*/
public function create(array $params): void {
$this->log(
'User created: "%s"',
$params,
[
'uid',
]
);
}
/**
* Log assignments of users (typically user backends)
*
* @param string $uid
*/
public function assign(string $uid): void {
$this->log(
'UserID assigned: "%s"',
[ 'uid' => $uid ],
[ 'uid' ]
);
}
/**
* Log deletion of users
*
* @param array $params
*/
public function delete(array $params): void {
$this->log(
'User deleted: "%s"',
$params,
[
'uid',
]
);
}
/**
* Log unassignments of users (typically user backends, no data removed)
*
* @param string $uid
*/
public function unassign(string $uid): void {
$this->log(
'UserID unassigned: "%s"',
[ 'uid' => $uid ],
[ 'uid' ]
);
}
/**
* Log enabling of users
*
* @param array $params
*/
public function change(array $params): void {
switch ($params['feature']) {
case 'enabled':
$this->log(
$params['value'] === true
? 'User enabled: "%s"'
: 'User disabled: "%s"',
['user' => $params['user']->getUID()],
[
'user',
]
);
break;
case 'eMailAddress':
$this->log(
'Email address changed for user %s',
['user' => $params['user']->getUID()],
[
'user',
]
);
break;
}
}
/**
* Logs changing of the user scope
*
* @param IUser $user
*/
public function setPassword(IUser $user): void {
if ($user->getBackendClassName() === 'Database') {
$this->log(
'Password of user "%s" has been changed',
[
'user' => $user->getUID(),
],
[
'user',
]
);
}
}
}
+86 -113
View File
@@ -1,29 +1,35 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\AppInfo;
use OC\Group\Manager as GroupManager;
use OC\User\Session as UserSession;
use OCA\AdminAudit\Actions\AppManagement;
use OCA\AdminAudit\Actions\Auth;
use OCA\AdminAudit\Actions\Console;
use OCA\AdminAudit\Actions\Files;
use OCA\AdminAudit\Actions\GroupManagement;
use OCA\AdminAudit\Actions\Security;
use OCA\AdminAudit\Actions\Sharing;
use OCA\AdminAudit\Actions\TagManagement;
use OCA\AdminAudit\Actions\Trashbin;
use OCA\AdminAudit\Actions\UserManagement;
use OCA\AdminAudit\Actions\Versions;
use OCA\AdminAudit\AuditLogger;
use OCA\AdminAudit\IAuditLogger;
use OCA\AdminAudit\Listener\AppManagementEventListener;
use OCA\AdminAudit\Listener\AuthEventListener;
use OCA\AdminAudit\Listener\ConsoleEventListener;
use OCA\AdminAudit\Listener\CriticalActionPerformedEventListener;
use OCP\App\ManagerEvent;
use OCA\AdminAudit\Listener\FileEventListener;
use OCA\AdminAudit\Listener\GroupManagementEventListener;
use OCA\AdminAudit\Listener\SecurityEventListener;
use OCA\AdminAudit\Listener\SharingEventListener;
use OCA\AdminAudit\Listener\UserManagementEventListener;
use OCP\App\Events\AppDisableEvent;
use OCP\App\Events\AppEnableEvent;
use OCP\App\Events\AppUpdateEvent;
use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
@@ -32,28 +38,39 @@ use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailed;
use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassed;
use OCP\Console\ConsoleEvent;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\Events\Node\BeforeNodeDeletedEvent;
use OCP\Files\Events\Node\BeforeNodeReadEvent;
use OCP\Files\Events\Node\BeforeNodeRenamedEvent;
use OCP\Files\Events\Node\BeforeNodeWrittenEvent;
use OCP\Files\Events\Node\NodeCopiedEvent;
use OCP\Files\Events\Node\NodeCreatedEvent;
use OCP\Files\Events\Node\NodeDeletedEvent;
use OCP\Files\Events\Node\NodeRenamedEvent;
use OCP\Files\Events\Node\NodeWrittenEvent;
use OCP\Group\Events\GroupCreatedEvent;
use OCP\Group\Events\GroupDeletedEvent;
use OCP\Group\Events\UserAddedEvent;
use OCP\Group\Events\UserRemovedEvent;
use OCP\IConfig;
use OCP\IGroupManager;
use OCP\IUserSession;
use OCP\Log\Audit\CriticalActionPerformedEvent;
use OCP\Log\ILogFactory;
use OCP\Preview\BeforePreviewFetchedEvent;
use OCP\Share;
use OCP\Share\Events\ShareCreatedEvent;
use OCP\Share\Events\ShareDeletedEvent;
use OCP\User\Events\BeforeUserLoggedInEvent;
use OCP\User\Events\BeforeUserLoggedOutEvent;
use OCP\User\Events\PasswordUpdatedEvent;
use OCP\User\Events\UserChangedEvent;
use OCP\User\Events\UserCreatedEvent;
use OCP\User\Events\UserDeletedEvent;
use OCP\User\Events\UserIdAssignedEvent;
use OCP\User\Events\UserIdUnassignedEvent;
use OCP\User\Events\UserLoggedInEvent;
use OCP\User\Events\UserLoggedInWithCookieEvent;
use OCP\Util;
use Psr\Container\ContainerInterface;
use Psr\Log\LoggerInterface;
class Application extends App implements IBootstrap {
/** @var LoggerInterface */
protected $logger;
public function __construct() {
parent::__construct('admin_audit');
}
@@ -64,6 +81,45 @@ class Application extends App implements IBootstrap {
});
$context->registerEventListener(CriticalActionPerformedEvent::class, CriticalActionPerformedEventListener::class);
// User management events
$context->registerEventListener(UserCreatedEvent::class, UserManagementEventListener::class);
$context->registerEventListener(UserDeletedEvent::class, UserManagementEventListener::class);
$context->registerEventListener(UserChangedEvent::class, UserManagementEventListener::class);
$context->registerEventListener(PasswordUpdatedEvent::class, UserManagementEventListener::class);
$context->registerEventListener(UserIdAssignedEvent::class, UserManagementEventListener::class);
$context->registerEventListener(UserIdUnassignedEvent::class, UserManagementEventListener::class);
// Group management events
$context->registerEventListener(UserAddedEvent::class, GroupManagementEventListener::class);
$context->registerEventListener(UserRemovedEvent::class, GroupManagementEventListener::class);
$context->registerEventListener(GroupCreatedEvent::class, GroupManagementEventListener::class);
$context->registerEventListener(GroupDeletedEvent::class, GroupManagementEventListener::class);
// Sharing events
$context->registerEventListener(ShareCreatedEvent::class, SharingEventListener::class);
$context->registerEventListener(ShareDeletedEvent::class, SharingEventListener::class);
// Auth events
$context->registerEventListener(BeforeUserLoggedInEvent::class, AuthEventListener::class);
$context->registerEventListener(UserLoggedInWithCookieEvent::class, AuthEventListener::class);
$context->registerEventListener(UserLoggedInEvent::class, AuthEventListener::class);
$context->registerEventListener(BeforeUserLoggedOutEvent::class, AuthEventListener::class);
// File events
$context->registerEventListener(BeforePreviewFetchedEvent::class, FileEventListener::class);
// Security events
$context->registerEventListener(TwoFactorProviderChallengePassed::class, SecurityEventListener::class);
$context->registerEventListener(TwoFactorProviderChallengeFailed::class, SecurityEventListener::class);
// App management events
$context->registerEventListener(AppEnableEvent::class, AppManagementEventListener::class);
$context->registerEventListener(AppDisableEvent::class, AppManagementEventListener::class);
$context->registerEventListener(AppUpdateEvent::class, AppManagementEventListener::class);
// Console events
$context->registerEventListener(ConsoleEvent::class, ConsoleEventListener::class);
}
public function boot(IBootContext $context): void {
@@ -74,102 +130,31 @@ class Application extends App implements IBootstrap {
* TODO: once the hooks are migrated to lazy events, this should be done
* in \OCA\AdminAudit\AppInfo\Application::register
*/
$this->registerHooks($logger, $context->getServerContainer());
$this->registerLegacyHooks($logger, $context->getServerContainer());
}
/**
* Register hooks in order to log them
*/
private function registerHooks(IAuditLogger $logger,
ContainerInterface $serverContainer): void {
$this->userManagementHooks($logger, $serverContainer->get(IUserSession::class));
$this->groupHooks($logger, $serverContainer->get(IGroupManager::class));
$this->authHooks($logger);
private function registerLegacyHooks(IAuditLogger $logger, ContainerInterface $serverContainer): void {
/** @var IEventDispatcher $eventDispatcher */
$eventDispatcher = $serverContainer->get(IEventDispatcher::class);
$this->consoleHooks($logger, $eventDispatcher);
$this->appHooks($logger, $eventDispatcher);
$this->sharingHooks($logger);
$this->sharingLegacyHooks($logger);
$this->fileHooks($logger, $eventDispatcher);
$this->trashbinHooks($logger);
$this->versionsHooks($logger);
$this->securityHooks($logger, $eventDispatcher);
$this->tagHooks($logger, $eventDispatcher);
}
private function userManagementHooks(IAuditLogger $logger,
IUserSession $userSession): void {
$userActions = new UserManagement($logger);
Util::connectHook('OC_User', 'post_createUser', $userActions, 'create');
Util::connectHook('OC_User', 'post_deleteUser', $userActions, 'delete');
Util::connectHook('OC_User', 'changeUser', $userActions, 'change');
assert($userSession instanceof UserSession);
$userSession->listen('\OC\User', 'postSetPassword', [$userActions, 'setPassword']);
$userSession->listen('\OC\User', 'assignedUserId', [$userActions, 'assign']);
$userSession->listen('\OC\User', 'postUnassignedUserId', [$userActions, 'unassign']);
}
private function groupHooks(IAuditLogger $logger,
IGroupManager $groupManager): void {
$groupActions = new GroupManagement($logger);
assert($groupManager instanceof GroupManager);
$groupManager->listen('\OC\Group', 'postRemoveUser', [$groupActions, 'removeUser']);
$groupManager->listen('\OC\Group', 'postAddUser', [$groupActions, 'addUser']);
$groupManager->listen('\OC\Group', 'postDelete', [$groupActions, 'deleteGroup']);
$groupManager->listen('\OC\Group', 'postCreate', [$groupActions, 'createGroup']);
}
private function sharingHooks(IAuditLogger $logger): void {
private function sharingLegacyHooks(IAuditLogger $logger): void {
$shareActions = new Sharing($logger);
Util::connectHook(Share::class, 'post_shared', $shareActions, 'shared');
Util::connectHook(Share::class, 'post_unshare', $shareActions, 'unshare');
Util::connectHook(Share::class, 'post_unshareFromSelf', $shareActions, 'unshare');
Util::connectHook(Share::class, 'post_update_permissions', $shareActions, 'updatePermissions');
Util::connectHook(Share::class, 'post_update_password', $shareActions, 'updatePassword');
Util::connectHook(Share::class, 'post_set_expiration_date', $shareActions, 'updateExpirationDate');
Util::connectHook(Share::class, 'share_link_access', $shareActions, 'shareAccessed');
}
private function authHooks(IAuditLogger $logger): void {
$authActions = new Auth($logger);
Util::connectHook('OC_User', 'pre_login', $authActions, 'loginAttempt');
Util::connectHook('OC_User', 'post_login', $authActions, 'loginSuccessful');
Util::connectHook('OC_User', 'logout', $authActions, 'logout');
}
private function appHooks(IAuditLogger $logger,
IEventDispatcher $eventDispatcher): void {
$eventDispatcher->addListener(ManagerEvent::EVENT_APP_ENABLE, function (ManagerEvent $event) use ($logger) {
$appActions = new AppManagement($logger);
$appActions->enableApp($event->getAppID());
});
$eventDispatcher->addListener(ManagerEvent::EVENT_APP_ENABLE_FOR_GROUPS, function (ManagerEvent $event) use ($logger) {
$appActions = new AppManagement($logger);
$appActions->enableAppForGroups($event->getAppID(), $event->getGroups());
});
$eventDispatcher->addListener(ManagerEvent::EVENT_APP_DISABLE, function (ManagerEvent $event) use ($logger) {
$appActions = new AppManagement($logger);
$appActions->disableApp($event->getAppID());
});
}
private function consoleHooks(IAuditLogger $logger,
IEventDispatcher $eventDispatcher): void {
$eventDispatcher->addListener(ConsoleEvent::class, function (ConsoleEvent $event) use ($logger) {
$appActions = new Console($logger);
$appActions->runCommand($event->getArguments());
});
}
private function tagHooks(IAuditLogger $logger,
IEventDispatcher $eventDispatcher): void {
$eventDispatcher->addListener(\OCP\SystemTag\ManagerEvent::EVENT_CREATE, function (\OCP\SystemTag\ManagerEvent $event) use ($logger) {
@@ -178,15 +163,8 @@ class Application extends App implements IBootstrap {
});
}
private function fileHooks(IAuditLogger $logger,
IEventDispatcher $eventDispatcher): void {
private function fileHooks(IAuditLogger $logger, IEventDispatcher $eventDispatcher): void {
$fileActions = new Files($logger);
$eventDispatcher->addListener(
BeforePreviewFetchedEvent::class,
function (BeforePreviewFetchedEvent $event) use ($fileActions) {
$fileActions->preview($event);
}
);
$eventDispatcher->addListener(
BeforeNodeRenamedEvent::class,
@@ -217,12 +195,19 @@ class Application extends App implements IBootstrap {
);
$eventDispatcher->addListener(
NodeWrittenEvent::class,
function (NodeWrittenEvent $event) use ($fileActions): void {
BeforeNodeWrittenEvent::class,
function (BeforeNodeWrittenEvent $event) use ($fileActions) {
$fileActions->write($event);
}
);
$eventDispatcher->addListener(
NodeWrittenEvent::class,
function (NodeWrittenEvent $event) use ($fileActions) {
$fileActions->update($event);
}
);
$eventDispatcher->addListener(
BeforeNodeReadEvent::class,
function (BeforeNodeReadEvent $event) use ($fileActions) {
@@ -231,8 +216,8 @@ class Application extends App implements IBootstrap {
);
$eventDispatcher->addListener(
BeforeNodeDeletedEvent::class,
function (BeforeNodeDeletedEvent $event) use ($fileActions): void {
NodeDeletedEvent::class,
function (NodeDeletedEvent $event) use ($fileActions) {
$fileActions->delete($event);
}
);
@@ -249,16 +234,4 @@ class Application extends App implements IBootstrap {
Util::connectHook('\OCP\Trashbin', 'preDelete', $trashActions, 'delete');
Util::connectHook('\OCA\Files_Trashbin\Trashbin', 'post_restore', $trashActions, 'restore');
}
private function securityHooks(IAuditLogger $logger,
IEventDispatcher $eventDispatcher): void {
$eventDispatcher->addListener(TwoFactorProviderChallengePassed::class, function (TwoFactorProviderChallengePassed $event) use ($logger) {
$security = new Security($logger);
$security->twofactorSuccess($event->getUser(), $event->getProvider());
});
$eventDispatcher->addListener(TwoFactorProviderChallengeFailed::class, function (TwoFactorProviderChallengeFailed $event) use ($logger) {
$security = new Security($logger);
$security->twofactorFailed($event->getUser(), $event->getProvider());
});
}
}
+3
View File
@@ -1,9 +1,12 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit;
use OCP\IConfig;
@@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\App\Events\AppDisableEvent;
use OCP\App\Events\AppEnableEvent;
use OCP\App\Events\AppUpdateEvent;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
/**
* @template-implements IEventListener<AppEnableEvent|AppDisableEvent|AppUpdateEvent>
*/
class AppManagementEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof AppEnableEvent) {
$this->appEnable($event);
} elseif ($event instanceof AppDisableEvent) {
$this->appDisable($event);
} elseif ($event instanceof AppUpdateEvent) {
$this->appUpdate($event);
}
}
private function appEnable(AppEnableEvent $event): void {
if (empty($event->getGroupIds())) {
$this->log('App "%s" enabled',
['app' => $event->getAppId()],
['app']
);
} else {
$this->log('App "%1$s" enabled for groups: %2$s',
['app' => $event->getAppId(), 'groups' => implode(', ', $event->getGroupIds())],
['app', 'groups']
);
}
}
private function appDisable(AppDisableEvent $event): void {
$this->log('App "%s" disabled',
['app' => $event->getAppId()],
['app']
);
}
private function appUpdate(AppUpdateEvent $event): void {
$this->log('App "%s" updated',
['app' => $event->getAppId()],
['app']
);
}
}
@@ -0,0 +1,67 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\User\Events\BeforeUserLoggedInEvent;
use OCP\User\Events\BeforeUserLoggedOutEvent;
use OCP\User\Events\UserLoggedInEvent;
use OCP\User\Events\UserLoggedInWithCookieEvent;
/**
* @template-implements IEventListener<BeforeUserLoggedInEvent|UserLoggedInWithCookieEvent|UserLoggedInEvent|BeforeUserLoggedOutEvent>
*/
class AuthEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof BeforeUserLoggedInEvent) {
$this->beforeUserLoggedIn($event);
} elseif ($event instanceof UserLoggedInWithCookieEvent || $event instanceof UserLoggedInEvent) {
$this->userLoggedIn($event);
} elseif ($event instanceof BeforeUserLoggedOutEvent) {
$this->beforeUserLogout($event);
}
}
private function beforeUserLoggedIn(BeforeUserLoggedInEvent $event): void {
$this->log(
'Login attempt: "%s"',
[
'uid' => $event->getUsername()
],
[
'uid',
],
true
);
}
private function userLoggedIn(UserLoggedInWithCookieEvent|UserLoggedInEvent $event): void {
$this->log(
'Login successful: "%s"',
[
'uid' => $event->getUser()->getUID()
],
[
'uid',
],
true
);
}
private function beforeUserLogout(BeforeUserLoggedOutEvent $event): void {
$this->log(
'Logout occurred',
[],
[]
);
}
}
@@ -0,0 +1,42 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\Console\ConsoleEvent;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
/**
* @template-implements IEventListener<ConsoleEvent>
*/
class ConsoleEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof ConsoleEvent) {
$this->runCommand($event);
}
}
private function runCommand(ConsoleEvent $event): void {
$arguments = $event->getArguments();
if (!isset($arguments[1]) || $arguments[1] === '_completion') {
// Don't log autocompletion
return;
}
// Remove `./occ`
array_shift($arguments);
$this->log('Console command executed: %s',
['arguments' => implode(' ', $arguments)],
['arguments']
);
}
}
@@ -1,10 +1,12 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
@@ -0,0 +1,56 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\Files\InvalidPathException;
use OCP\Files\NotFoundException;
use OCP\Preview\BeforePreviewFetchedEvent;
use Psr\Log\LoggerInterface;
/**
* @template-implements IEventListener<BeforePreviewFetchedEvent>
*/
class FileEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof BeforePreviewFetchedEvent) {
$this->beforePreviewFetched($event);
}
}
/**
* Logs preview access to a file
*/
private function beforePreviewFetched(BeforePreviewFetchedEvent $event): void {
try {
$file = $event->getNode();
$params = [
'id' => $file->getId(),
'width' => $event->getWidth(),
'height' => $event->getHeight(),
'crop' => $event->isCrop(),
'mode' => $event->getMode(),
'path' => mb_substr($file->getInternalPath(), 5)
];
$this->log(
'Preview accessed: (id: "%s", width: "%s", height: "%s" crop: "%s", mode: "%s", path: "%s")',
$params,
array_keys($params)
);
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
'Exception thrown in file preview: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
}
}
@@ -0,0 +1,81 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\Group\Events\GroupCreatedEvent;
use OCP\Group\Events\GroupDeletedEvent;
use OCP\Group\Events\UserAddedEvent;
use OCP\Group\Events\UserRemovedEvent;
/**
* @template-implements IEventListener<UserAddedEvent|UserRemovedEvent|GroupCreatedEvent|GroupDeletedEvent>
*/
class GroupManagementEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof UserAddedEvent) {
$this->userAdded($event);
} elseif ($event instanceof UserRemovedEvent) {
$this->userRemoved($event);
} elseif ($event instanceof GroupCreatedEvent) {
$this->groupCreated($event);
} elseif ($event instanceof GroupDeletedEvent) {
$this->groupDeleted($event);
}
}
private function userAdded(UserAddedEvent $event): void {
$this->log('User "%s" added to group "%s"',
[
'group' => $event->getGroup()->getGID(),
'user' => $event->getUser()->getUID()
],
[
'user', 'group'
]
);
}
private function userRemoved(UserRemovedEvent $event): void {
$this->log('User "%s" removed from group "%s"',
[
'group' => $event->getGroup()->getGID(),
'user' => $event->getUser()->getUID()
],
[
'user', 'group'
]
);
}
private function groupCreated(GroupCreatedEvent $event): void {
$this->log('Group created: "%s"',
[
'group' => $event->getGroup()->getGID()
],
[
'group'
]
);
}
private function groupDeleted(GroupDeletedEvent $event): void {
$this->log('Group deleted: "%s"',
[
'group' => $event->getGroup()->getGID()
],
[
'group'
]
);
}
}
@@ -0,0 +1,61 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailed;
use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassed;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
/**
* @template-implements IEventListener<TwoFactorProviderChallengePassed|TwoFactorProviderChallengeFailed>
*/
class SecurityEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof TwoFactorProviderChallengePassed) {
$this->twoFactorProviderChallengePassed($event);
} elseif ($event instanceof TwoFactorProviderChallengeFailed) {
$this->twoFactorProviderChallengeFailed($event);
}
}
private function twoFactorProviderChallengePassed(TwoFactorProviderChallengePassed $event): void {
$this->log(
'Successful two factor attempt by user %s (%s) with provider %s',
[
'uid' => $event->getUser()->getUID(),
'displayName' => $event->getUser()->getDisplayName(),
'provider' => $event->getProvider()->getDisplayName()
],
[
'displayName',
'uid',
'provider',
]
);
}
private function twoFactorProviderChallengeFailed(TwoFactorProviderChallengeFailed $event): void {
$this->log(
'Failed two factor attempt by user %s (%s) with provider %s',
[
'uid' => $event->getUser()->getUID(),
'displayName' => $event->getUser()->getDisplayName(),
'provider' => $event->getProvider()->getDisplayName()
],
[
'displayName',
'uid',
'provider',
]
);
}
}
@@ -0,0 +1,291 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\Share\Events\ShareCreatedEvent;
use OCP\Share\Events\ShareDeletedEvent;
use OCP\Share\IShare;
/**
* @template-implements IEventListener<ShareCreatedEvent|ShareDeletedEvent>
*/
class SharingEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof ShareCreatedEvent) {
$this->shareCreated($event);
} elseif ($event instanceof ShareDeletedEvent) {
$this->shareDeleted($event);
}
}
private function shareCreated(ShareCreatedEvent $event): void {
$share = $event->getShare();
$params = [
'itemType' => $share->getNodeType(),
'path' => $share->getNode()->getPath(),
'itemSource' => $share->getNodeId(),
'shareWith' => $share->getSharedWith(),
'permissions' => $share->getPermissions(),
'id' => $share->getId()
];
match ($share->getShareType()) {
IShare::TYPE_LINK => $this->log(
'The %s "%s" with ID "%s" has been shared via link with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'permissions',
'id',
]
),
IShare::TYPE_USER => $this->log(
'The %s "%s" with ID "%s" has been shared to the user "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_GROUP => $this->log(
'The %s "%s" with ID "%s" has been shared to the group "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_ROOM => $this->log(
'The %s "%s" with ID "%s" has been shared to the room "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_EMAIL => $this->log(
'The %s "%s" with ID "%s" has been shared to the email recipient "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_CIRCLE => $this->log(
'The %s "%s" with ID "%s" has been shared to the circle "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_REMOTE => $this->log(
'The %s "%s" with ID "%s" has been shared to the remote user "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_REMOTE_GROUP => $this->log(
'The %s "%s" with ID "%s" has been shared to the remote group "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_DECK => $this->log(
'The %s "%s" with ID "%s" has been shared to the deck card "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
IShare::TYPE_SCIENCEMESH => $this->log(
'The %s "%s" with ID "%s" has been shared to the sciencemesh user "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
default => null
};
}
private function shareDeleted(ShareDeletedEvent $event): void {
$share = $event->getShare();
$params = [
'itemType' => $share->getNodeType(),
'fileTarget' => $share->getTarget(),
'itemSource' => $share->getNodeId(),
'shareWith' => $share->getSharedWith(),
'id' => $share->getId()
];
match ($share->getShareType()) {
IShare::TYPE_LINK => $this->log(
'The %s "%s" with ID "%s" has been unshared (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'id',
]
),
IShare::TYPE_USER => $this->log(
'The %s "%s" with ID "%s" has been unshared from the user "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_GROUP => $this->log(
'The %s "%s" with ID "%s" has been unshared from the group "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_ROOM => $this->log(
'The %s "%s" with ID "%s" has been unshared from the room "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_EMAIL => $this->log(
'The %s "%s" with ID "%s" has been unshared from the email recipient "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_CIRCLE => $this->log(
'The %s "%s" with ID "%s" has been unshared from the circle "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_REMOTE => $this->log(
'The %s "%s" with ID "%s" has been unshared from the remote user "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_REMOTE_GROUP => $this->log(
'The %s "%s" with ID "%s" has been unshared from the remote group "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_DECK => $this->log(
'The %s "%s" with ID "%s" has been unshared from the deck card "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
IShare::TYPE_SCIENCEMESH => $this->log(
'The %s "%s" with ID "%s" has been unshared from the sciencemesh user "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
default => null
};
}
}
@@ -0,0 +1,126 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\User\Events\PasswordUpdatedEvent;
use OCP\User\Events\UserChangedEvent;
use OCP\User\Events\UserCreatedEvent;
use OCP\User\Events\UserDeletedEvent;
use OCP\User\Events\UserIdAssignedEvent;
use OCP\User\Events\UserIdUnassignedEvent;
/**
* @template-implements IEventListener<UserCreatedEvent|UserDeletedEvent|UserChangedEvent|PasswordUpdatedEvent|UserIdAssignedEvent|UserIdUnassignedEvent>
*/
class UserManagementEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof UserCreatedEvent) {
$this->userCreated($event);
} elseif ($event instanceof UserDeletedEvent) {
$this->userDeleted($event);
} elseif ($event instanceof UserChangedEvent) {
$this->userChanged($event);
} elseif ($event instanceof PasswordUpdatedEvent) {
$this->passwordUpdated($event);
} elseif ($event instanceof UserIdAssignedEvent) {
$this->userIdAssigned($event);
} elseif ($event instanceof UserIdUnassignedEvent) {
$this->userIdUnassigned($event);
}
}
private function userCreated(UserCreatedEvent $event): void {
$this->log(
'User created: "%s"',
[
'uid' => $event->getUid()
],
[
'uid',
]
);
}
private function userDeleted(UserDeletedEvent $event): void {
$this->log(
'User deleted: "%s"',
[
'uid' => $event->getUser()->getUID()
],
[
'uid',
]
);
}
private function userChanged(UserChangedEvent $event): void {
switch ($event->getFeature()) {
case 'enabled':
$this->log(
$event->getValue() === true
? 'User enabled: "%s"'
: 'User disabled: "%s"',
['user' => $event->getUser()->getUID()],
[
'user',
]
);
break;
case 'eMailAddress':
$this->log(
'Email address changed for user %s',
['user' => $event->getUser()->getUID()],
[
'user',
]
);
break;
}
}
private function passwordUpdated(PasswordUpdatedEvent $event): void {
if ($event->getUser()->getBackendClassName() === 'Database') {
$this->log(
'Password of user "%s" has been changed',
[
'user' => $event->getUser()->getUID(),
],
[
'user',
]
);
}
}
/**
* Log assignments of users (typically user backends)
*/
private function userIdAssigned(UserIdAssignedEvent $event): void {
$this->log(
'UserID assigned: "%s"',
[ 'uid' => $event->getUserId() ],
[ 'uid' ]
);
}
/**
* Log unassignments of users (typically user backends, no data removed)
*/
private function userIdUnassigned(UserIdUnassignedEvent $event): void {
$this->log(
'UserID unassigned: "%s"',
[ 'uid' => $event->getUserId() ],
[ 'uid' ]
);
}
}
@@ -1,38 +1,47 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Tests\Actions;
use OCA\AdminAudit\Actions\Security;
namespace OCA\AdminAudit\Tests\Listener;
use OCA\AdminAudit\AuditLogger;
use OCA\AdminAudit\Listener\SecurityEventListener;
use OCP\Authentication\TwoFactorAuth\IProvider;
use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailed;
use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassed;
use OCP\IUser;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class SecurityTest extends TestCase {
class SecurityEventListenerTest extends TestCase {
private AuditLogger|MockObject $logger;
private Security $security;
private SecurityEventListener $security;
private MockObject|IUser $user;
/** @var IProvider&MockObject */
private $provider;
protected function setUp(): void {
parent::setUp();
$this->logger = $this->createMock(AuditLogger::class);
$this->security = new Security($this->logger);
$this->security = new SecurityEventListener($this->logger);
$this->user = $this->createMock(IUser::class);
$this->user->method('getUID')->willReturn('myuid');
$this->user->method('getDisplayName')->willReturn('mydisplayname');
$this->provider = $this->createMock(IProvider::class);
$this->provider->method('getDisplayName')->willReturn('myprovider');
}
public function testTwofactorFailed() {
public function testTwofactorFailed(): void {
$this->logger->expects($this->once())
->method('info')
->with(
@@ -40,14 +49,10 @@ class SecurityTest extends TestCase {
['app' => 'admin_audit']
);
$provider = $this->createMock(IProvider::class);
$provider->method('getDisplayName')
->willReturn('myprovider');
$this->security->twofactorFailed($this->user, $provider);
$this->security->handle(new twoFactorProviderChallengeFailed($this->user, $this->provider));
}
public function testTwofactorSuccess() {
public function testTwofactorSuccess(): void {
$this->logger->expects($this->once())
->method('info')
->with(
@@ -55,10 +60,6 @@ class SecurityTest extends TestCase {
['app' => 'admin_audit']
);
$provider = $this->createMock(IProvider::class);
$provider->method('getDisplayName')
->willReturn('myprovider');
$this->security->twofactorSuccess($this->user, $provider);
$this->security->handle(new TwoFactorProviderChallengePassed($this->user, $this->provider));
}
}
+2 -2
View File
@@ -9,7 +9,7 @@
<name>Cloud Federation API</name>
<summary>Enable clouds to communicate with each other and exchange data</summary>
<description>The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.</description>
<version>1.13.0</version>
<version>1.14.0</version>
<licence>agpl</licence>
<author>Bjoern Schiessle</author>
<namespace>CloudFederationAPI</namespace>
@@ -19,6 +19,6 @@
<category>integration</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="30" max-version="30"/>
<nextcloud min-version="31" max-version="31"/>
</dependencies>
</info>
+2 -2
View File
@@ -1,8 +1,8 @@
OC.L10N.register(
"cloud_federation_api",
{
"Cloud Federation API" : "Cloud sammenkoblings API",
"Cloud Federation API" : "Cloud Federation API",
"Enable clouds to communicate with each other and exchange data" : "Gør det muligt for skyer at kommunikere med hinanden og udveksle data",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud sammenkoblings API gør det muligt for forskellige Nextcloud-instanser at kommunikere med hinanden og udveksle data."
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Federation API gør det muligt for forskellige Nextcloud-instanser at kommunikere med hinanden og udveksle data."
},
"nplurals=2; plural=(n != 1);");
+2 -2
View File
@@ -1,6 +1,6 @@
{ "translations": {
"Cloud Federation API" : "Cloud sammenkoblings API",
"Cloud Federation API" : "Cloud Federation API",
"Enable clouds to communicate with each other and exchange data" : "Gør det muligt for skyer at kommunikere med hinanden og udveksle data",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud sammenkoblings API gør det muligt for forskellige Nextcloud-instanser at kommunikere med hinanden og udveksle data."
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Federation API gør det muligt for forskellige Nextcloud-instanser at kommunikere med hinanden og udveksle data."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -2
View File
@@ -2,7 +2,7 @@ OC.L10N.register(
"cloud_federation_api",
{
"Cloud Federation API" : "Ligeann API Comhdhéanta na Scamaill",
"Enable clouds to communicate with each other and exchange data" : "Cumasaigh scamaill cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cuireann API Cloud Federation ar chumas cásanna éagsúla Nextcloud cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú."
"Enable clouds to communicate with each other and exchange data" : "Lig dóimhneacht a chur ar chumas na scamaill cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú.",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Ligeann API Comhdhéanta na Scamaill do réimse éagsúil de chásanna Nextcloud cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú."
},
"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);");
+2 -2
View File
@@ -1,6 +1,6 @@
{ "translations": {
"Cloud Federation API" : "Ligeann API Comhdhéanta na Scamaill",
"Enable clouds to communicate with each other and exchange data" : "Cumasaigh scamaill cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cuireann API Cloud Federation ar chumas cásanna éagsúla Nextcloud cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú."
"Enable clouds to communicate with each other and exchange data" : "Lig dóimhneacht a chur ar chumas na scamaill cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú.",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Ligeann API Comhdhéanta na Scamaill do réimse éagsúil de chásanna Nextcloud cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú."
},"pluralForm" :"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);"
}
-8
View File
@@ -1,8 +0,0 @@
OC.L10N.register(
"cloud_federation_api",
{
"Cloud Federation API" : "Cloud Federation API",
"Enable clouds to communicate with each other and exchange data" : "클라우드 간 소통과 데이터 교환을 가능케 합니다.",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Federation API는 다양한 Nextcloud 인스턴스가 서로 소통하거나 데이터를 교환할 수 있도록 합니다."
},
"nplurals=1; plural=0;");
-6
View File
@@ -1,6 +0,0 @@
{ "translations": {
"Cloud Federation API" : "Cloud Federation API",
"Enable clouds to communicate with each other and exchange data" : "클라우드 간 소통과 데이터 교환을 가능케 합니다.",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Federation API는 다양한 Nextcloud 인스턴스가 서로 소통하거나 데이터를 교환할 수 있도록 합니다."
},"pluralForm" :"nplurals=1; plural=0;"
}
-8
View File
@@ -1,8 +0,0 @@
OC.L10N.register(
"cloud_federation_api",
{
"Cloud Federation API" : "بۇلۇت فېدېراتسىيەسى API",
"Enable clouds to communicate with each other and exchange data" : "بۇلۇتلارنىڭ ئۆز-ئارا ئالاقە قىلىشى ۋە سانلىق مەلۇمات ئالماشتۇرۇشىنى قوزغىتىڭ",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "بۇلۇت فېدېراتسىيەسى API ھەر خىل Nextcloud مىساللىرىنى ئۆز-ئارا ئالاقە قىلىش ۋە سانلىق مەلۇمات ئالماشتۇرۇش ئىمكانىيىتىگە ئىگە قىلىدۇ."
},
"nplurals=2; plural=(n != 1);");
-6
View File
@@ -1,6 +0,0 @@
{ "translations": {
"Cloud Federation API" : "بۇلۇت فېدېراتسىيەسى API",
"Enable clouds to communicate with each other and exchange data" : "بۇلۇتلارنىڭ ئۆز-ئارا ئالاقە قىلىشى ۋە سانلىق مەلۇمات ئالماشتۇرۇشىنى قوزغىتىڭ",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "بۇلۇت فېدېراتسىيەسى API ھەر خىل Nextcloud مىساللىرىنى ئۆز-ئارا ئالاقە قىلىش ۋە سانلىق مەلۇمات ئالماشتۇرۇش ئىمكانىيىتىگە ئىگە قىلىدۇ."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -2
View File
@@ -1,8 +1,8 @@
OC.L10N.register(
"cloud_federation_api",
{
"Cloud Federation API" : "雲端聯 API",
"Cloud Federation API" : "雲端聯 API",
"Enable clouds to communicate with each other and exchange data" : "讓雲端可互相通訊並交換資料",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "雲端聯 API 讓多個 Nextcloud 實體之間,可以互相通訊並交換資料。"
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "雲端聯 API 讓多個 Nextcloud 站台可以互相通訊並交換資料。"
},
"nplurals=1; plural=0;");
+2 -2
View File
@@ -1,6 +1,6 @@
{ "translations": {
"Cloud Federation API" : "雲端聯 API",
"Cloud Federation API" : "雲端聯 API",
"Enable clouds to communicate with each other and exchange data" : "讓雲端可互相通訊並交換資料",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "雲端聯 API 讓多個 Nextcloud 實體之間,可以互相通訊並交換資料。"
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "雲端聯 API 讓多個 Nextcloud 站台可以互相通訊並交換資料。"
},"pluralForm" :"nplurals=1; plural=0;"
}
@@ -55,8 +55,8 @@ class Capabilities implements ICapability {
$resource = $this->provider->createNewResourceType();
$resource->setName('file')
->setShareTypes(['user', 'group'])
->setProtocols(['webdav' => '/public.php/webdav/']);
->setShareTypes(['user', 'group'])
->setProtocols(['webdav' => '/public.php/webdav/']);
$this->provider->addResourceType($resource);
@@ -71,6 +71,7 @@ class RequestHandlerController extends Controller {
* @param string $resourceType 'file', 'calendar',...
*
* @return JSONResponse<Http::STATUS_CREATED, CloudFederationAPIAddShare, array{}>|JSONResponse<Http::STATUS_BAD_REQUEST, CloudFederationAPIValidationError, array{}>|JSONResponse<Http::STATUS_NOT_IMPLEMENTED, CloudFederationAPIError, array{}>
*
* 201: The notification was successfully received. The display name of the recipient might be returned in the body
* 400: Bad request due to invalid parameters, e.g. when `shareWith` is not found or required properties are missing
* 501: Share type or the resource type is not supported
@@ -196,6 +197,7 @@ class RequestHandlerController extends Controller {
* @param array<string, mixed>|null $notification The actual payload of the notification
*
* @return JSONResponse<Http::STATUS_CREATED, array<string, mixed>, array{}>|JSONResponse<Http::STATUS_BAD_REQUEST, CloudFederationAPIValidationError, array{}>|JSONResponse<Http::STATUS_FORBIDDEN|Http::STATUS_NOT_IMPLEMENTED, CloudFederationAPIError, array{}>
*
* 201: The notification was successfully received
* 400: Bad request due to invalid parameters, e.g. when `type` is invalid or missing
* 403: Getting resource is not allowed
+2 -2
View File
@@ -10,7 +10,7 @@
<name>Comments</name>
<summary>Files app plugin to add comments to files</summary>
<description>Files app plugin to add comments to files</description>
<version>1.20.1</version>
<version>1.21.0</version>
<licence>agpl</licence>
<author>Arthur Schiwon</author>
<author>Vincent Petry</author>
@@ -21,7 +21,7 @@
<category>social</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="30" max-version="30"/>
<nextcloud min-version="31" max-version="31"/>
</dependencies>
<activity>
+5 -4
View File
@@ -19,18 +19,19 @@ OC.L10N.register(
"New comment" : "تعليق جديد",
"Write a comment …" : "أكتُب تعليق ...",
"Post comment" : "أضف تعليق",
"@ for mentions, : for emoji, / for smart picker" : "@ للإشارات : للإيموجي / للاقط الذكي",
"@ for mentions, : for emoji, / for smart picker" : "@ للإشارات، : للإيموجي، / للاقط الذكي",
"Could not reload comments" : "تعذّرت إعادة تحميل التعليقات",
"Failed to mark comments as read" : "فشل في تعيين ملاحظات كمقرؤة",
"Unable to load the comments list" : "تعذر تحميل قائمة التعليقات",
"No comments yet, start the conversation!" : "لا توجد تعليقات, ابدأ النقاش الآن!",
"No more messages" : "لامزيد من الرسائل",
"Retry" : "أعد المحاولة",
"Failed to mark comments as read" : "إخفاق في تعيين ملاحظات كمقرؤة",
"Unable to load the comments list" : "تعذر تحميل قائمة التعليقات",
"_1 new comment_::_{unread} new comments_" : ["1 تعليق جديد","1 تعليق جديد","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة"],
"Comment" : "تعليق",
"An error occurred while trying to edit the comment" : "حدث خطأ أثناء محاولة تعديل التعليق",
"Comment deleted" : "التعليق محذوف",
"An error occurred while trying to delete the comment" : "حدث خطأ أثناء محاولة حذف التعليق",
"An error occurred while trying to create the comment" : "حدث خطأ أثناء محاولة إنشاء التعليق"
"An error occurred while trying to create the comment" : "حدث خطأ أثناء محاولة إنشاء التعليق",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "تمت الإشارة إليك في \"{file}\" في تعليق لمستخدم. لكن هذا المستخدم تم حذف حسابه بعدها"
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
+5 -4
View File
@@ -17,18 +17,19 @@
"New comment" : "تعليق جديد",
"Write a comment …" : "أكتُب تعليق ...",
"Post comment" : "أضف تعليق",
"@ for mentions, : for emoji, / for smart picker" : "@ للإشارات : للإيموجي / للاقط الذكي",
"@ for mentions, : for emoji, / for smart picker" : "@ للإشارات، : للإيموجي، / للاقط الذكي",
"Could not reload comments" : "تعذّرت إعادة تحميل التعليقات",
"Failed to mark comments as read" : "فشل في تعيين ملاحظات كمقرؤة",
"Unable to load the comments list" : "تعذر تحميل قائمة التعليقات",
"No comments yet, start the conversation!" : "لا توجد تعليقات, ابدأ النقاش الآن!",
"No more messages" : "لامزيد من الرسائل",
"Retry" : "أعد المحاولة",
"Failed to mark comments as read" : "إخفاق في تعيين ملاحظات كمقرؤة",
"Unable to load the comments list" : "تعذر تحميل قائمة التعليقات",
"_1 new comment_::_{unread} new comments_" : ["1 تعليق جديد","1 تعليق جديد","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة"],
"Comment" : "تعليق",
"An error occurred while trying to edit the comment" : "حدث خطأ أثناء محاولة تعديل التعليق",
"Comment deleted" : "التعليق محذوف",
"An error occurred while trying to delete the comment" : "حدث خطأ أثناء محاولة حذف التعليق",
"An error occurred while trying to create the comment" : "حدث خطأ أثناء محاولة إنشاء التعليق"
"An error occurred while trying to create the comment" : "حدث خطأ أثناء محاولة إنشاء التعليق",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "تمت الإشارة إليك في \"{file}\" في تعليق لمستخدم. لكن هذا المستخدم تم حذف حسابه بعدها"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
}
+4 -3
View File
@@ -21,16 +21,17 @@ OC.L10N.register(
"Post comment" : "Espublizar el comentariu",
"@ for mentions, : for emoji, / for smart picker" : "@ pa les menciones, : pa los fustaxes, / pal selector intelixente",
"Could not reload comments" : "Nun se pudieron recargar los comentarios",
"Failed to mark comments as read" : "Nun se pudieron marcar los comentarios como lleíos",
"Unable to load the comments list" : "Nun ye posible cargar la llista de comentarios",
"No comments yet, start the conversation!" : "Nun hai comentarios, ¡anicia una conversación!",
"No more messages" : "Nun hai más mensaxes",
"Retry" : "Retentar",
"Failed to mark comments as read" : "Nun se pudieron marcar los comentarios como lleíos",
"Unable to load the comments list" : "Nun ye posible cargar la llista de comentarios",
"_1 new comment_::_{unread} new comments_" : ["1 comentariu nuevu","{unread} comentarios nuevos"],
"Comment" : "Comentariu",
"An error occurred while trying to edit the comment" : "Prodúxose un error mentanto se tentaba d'editar el comentariu",
"Comment deleted" : "Desanicióse'l comentariu",
"An error occurred while trying to delete the comment" : "Prodúxose un error mentanto se tentaba de desaniciar el comentariu",
"An error occurred while trying to create the comment" : "Prodúxose un error mentanto se tentaba de crear el comentariu"
"An error occurred while trying to create the comment" : "Prodúxose un error mentanto se tentaba de crear el comentariu",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Un usuariu que ta desaniciáu mentóte nun comentariu de: {file}"
},
"nplurals=2; plural=(n != 1);");
+4 -3
View File
@@ -19,16 +19,17 @@
"Post comment" : "Espublizar el comentariu",
"@ for mentions, : for emoji, / for smart picker" : "@ pa les menciones, : pa los fustaxes, / pal selector intelixente",
"Could not reload comments" : "Nun se pudieron recargar los comentarios",
"Failed to mark comments as read" : "Nun se pudieron marcar los comentarios como lleíos",
"Unable to load the comments list" : "Nun ye posible cargar la llista de comentarios",
"No comments yet, start the conversation!" : "Nun hai comentarios, ¡anicia una conversación!",
"No more messages" : "Nun hai más mensaxes",
"Retry" : "Retentar",
"Failed to mark comments as read" : "Nun se pudieron marcar los comentarios como lleíos",
"Unable to load the comments list" : "Nun ye posible cargar la llista de comentarios",
"_1 new comment_::_{unread} new comments_" : ["1 comentariu nuevu","{unread} comentarios nuevos"],
"Comment" : "Comentariu",
"An error occurred while trying to edit the comment" : "Prodúxose un error mentanto se tentaba d'editar el comentariu",
"Comment deleted" : "Desanicióse'l comentariu",
"An error occurred while trying to delete the comment" : "Prodúxose un error mentanto se tentaba de desaniciar el comentariu",
"An error occurred while trying to create the comment" : "Prodúxose un error mentanto se tentaba de crear el comentariu"
"An error occurred while trying to create the comment" : "Prodúxose un error mentanto se tentaba de crear el comentariu",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Un usuariu que ta desaniciáu mentóte nun comentariu de: {file}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+3 -2
View File
@@ -16,15 +16,16 @@ OC.L10N.register(
"Delete comment" : "Изтрий коментар",
"Cancel edit" : "Отказ на редактиране",
"Post comment" : "Публикуване на коментар",
"Unable to load the comments list" : "Списъкът с коментари не може да се зареди",
"No comments yet, start the conversation!" : "Все още няма коментари, започнете разговор!",
"No more messages" : " Няма повече съобщения",
"Retry" : "Опитай отново",
"Unable to load the comments list" : "Списъкът с коментари не може да се зареди",
"_1 new comment_::_{unread} new comments_" : ["{unread} нови коментари","{unread} нови коментари"],
"Comment" : "Коментар",
"An error occurred while trying to edit the comment" : "Възникна грешка при опит за редактиране на коментара",
"Comment deleted" : " Изтрит е коментар",
"An error occurred while trying to delete the comment" : "Възникна грешка при опит за изтриване на коментара",
"An error occurred while trying to create the comment" : "Възникна грешка при опит за създаване на коментар"
"An error occurred while trying to create the comment" : "Възникна грешка при опит за създаване на коментар",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Бяхте споменат/а към “{file}”, в коментар от потребител, който вече е изтрит"
},
"nplurals=2; plural=(n != 1);");
+3 -2
View File
@@ -14,15 +14,16 @@
"Delete comment" : "Изтрий коментар",
"Cancel edit" : "Отказ на редактиране",
"Post comment" : "Публикуване на коментар",
"Unable to load the comments list" : "Списъкът с коментари не може да се зареди",
"No comments yet, start the conversation!" : "Все още няма коментари, започнете разговор!",
"No more messages" : " Няма повече съобщения",
"Retry" : "Опитай отново",
"Unable to load the comments list" : "Списъкът с коментари не може да се зареди",
"_1 new comment_::_{unread} new comments_" : ["{unread} нови коментари","{unread} нови коментари"],
"Comment" : "Коментар",
"An error occurred while trying to edit the comment" : "Възникна грешка при опит за редактиране на коментара",
"Comment deleted" : " Изтрит е коментар",
"An error occurred while trying to delete the comment" : "Възникна грешка при опит за изтриване на коментара",
"An error occurred while trying to create the comment" : "Възникна грешка при опит за създаване на коментар"
"An error occurred while trying to create the comment" : "Възникна грешка при опит за създаване на коментар",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Бяхте споменат/а към “{file}”, в коментар от потребител, който вече е изтрит"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+4 -3
View File
@@ -21,16 +21,17 @@ OC.L10N.register(
"Post comment" : "Publica el comentari",
"@ for mentions, : for emoji, / for smart picker" : "@ per a mencions, : per a emojis, / per al selector intel·ligent",
"Could not reload comments" : "No s'han pogut tornar a carregar els comentaris",
"Failed to mark comments as read" : "No s'han pogut marcar els comentaris com a llegits",
"Unable to load the comments list" : "No s'ha pogut carregar la llista de comentaris",
"No comments yet, start the conversation!" : "Encara no hi ha cap comentari. Enceteu la conversa!",
"No more messages" : "No hi ha més missatges",
"Retry" : "Torna-ho a provar",
"Failed to mark comments as read" : "No s'han pogut marcar els comentaris com a llegits",
"Unable to load the comments list" : "No s'ha pogut carregar la llista de comentaris",
"_1 new comment_::_{unread} new comments_" : ["1 comentari nou","{unread} comentaris nous"],
"Comment" : "Comentari",
"An error occurred while trying to edit the comment" : "S'ha produït un error en intentar editar el comentari",
"Comment deleted" : "S'ha suprimit el comentari",
"An error occurred while trying to delete the comment" : "S'ha produït un error en intentar suprimir el comentari",
"An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari"
"An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Se us ha esmentat a «{file}» en un comentari d'un usuari que s'ha suprimit"
},
"nplurals=2; plural=(n != 1);");
+4 -3
View File
@@ -19,16 +19,17 @@
"Post comment" : "Publica el comentari",
"@ for mentions, : for emoji, / for smart picker" : "@ per a mencions, : per a emojis, / per al selector intel·ligent",
"Could not reload comments" : "No s'han pogut tornar a carregar els comentaris",
"Failed to mark comments as read" : "No s'han pogut marcar els comentaris com a llegits",
"Unable to load the comments list" : "No s'ha pogut carregar la llista de comentaris",
"No comments yet, start the conversation!" : "Encara no hi ha cap comentari. Enceteu la conversa!",
"No more messages" : "No hi ha més missatges",
"Retry" : "Torna-ho a provar",
"Failed to mark comments as read" : "No s'han pogut marcar els comentaris com a llegits",
"Unable to load the comments list" : "No s'ha pogut carregar la llista de comentaris",
"_1 new comment_::_{unread} new comments_" : ["1 comentari nou","{unread} comentaris nous"],
"Comment" : "Comentari",
"An error occurred while trying to edit the comment" : "S'ha produït un error en intentar editar el comentari",
"Comment deleted" : "S'ha suprimit el comentari",
"An error occurred while trying to delete the comment" : "S'ha produït un error en intentar suprimir el comentari",
"An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari"
"An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Se us ha esmentat a «{file}» en un comentari d'un usuari que s'ha suprimit"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+4 -4
View File
@@ -10,7 +10,6 @@ OC.L10N.register(
"{author} commented on {file}" : "{author} okomentoval(a) {file}",
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> k souborům",
"Files" : "Soubory",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od účtu, který byl později smazán",
"{user} mentioned you in a comment on \"{file}\"" : "{user} vás zmínil(a) v komentáři u „{file}“",
"Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
"Edit comment" : "Upravit komentář",
@@ -21,16 +20,17 @@ OC.L10N.register(
"Post comment" : "Odeslat komentář",
"@ for mentions, : for emoji, / for smart picker" : "@ pro zmínění, : pro emotikony, / pro inteligentní výběr",
"Could not reload comments" : "Znovunačtení komentářů se nezdařilo",
"Failed to mark comments as read" : "Nepodařilo se označit komentáře jako přečtené",
"Unable to load the comments list" : "Nedaří se načíst seznam komentářů",
"No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!",
"No more messages" : "Žádné další zprávy",
"Retry" : "Zkusit znovu",
"Failed to mark comments as read" : "Nepodařilo se označit komentáře jako přečtené",
"Unable to load the comments list" : "Nedaří se načíst seznam komentářů",
"_1 new comment_::_{unread} new comments_" : ["Jeden nový komentář","{unread} nové komentáře","{unread} nových komentářů","{unread} nové komentáře"],
"Comment" : "Komentář",
"An error occurred while trying to edit the comment" : "Došlo k chybě při pokusu o úpravu komentáře",
"Comment deleted" : "Komentář smazán",
"An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře",
"An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře"
"An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
+4 -4
View File
@@ -8,7 +8,6 @@
"{author} commented on {file}" : "{author} okomentoval(a) {file}",
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> k souborům",
"Files" : "Soubory",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od účtu, který byl později smazán",
"{user} mentioned you in a comment on \"{file}\"" : "{user} vás zmínil(a) v komentáři u „{file}“",
"Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
"Edit comment" : "Upravit komentář",
@@ -19,16 +18,17 @@
"Post comment" : "Odeslat komentář",
"@ for mentions, : for emoji, / for smart picker" : "@ pro zmínění, : pro emotikony, / pro inteligentní výběr",
"Could not reload comments" : "Znovunačtení komentářů se nezdařilo",
"Failed to mark comments as read" : "Nepodařilo se označit komentáře jako přečtené",
"Unable to load the comments list" : "Nedaří se načíst seznam komentářů",
"No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!",
"No more messages" : "Žádné další zprávy",
"Retry" : "Zkusit znovu",
"Failed to mark comments as read" : "Nepodařilo se označit komentáře jako přečtené",
"Unable to load the comments list" : "Nedaří se načíst seznam komentářů",
"_1 new comment_::_{unread} new comments_" : ["Jeden nový komentář","{unread} nové komentáře","{unread} nových komentářů","{unread} nové komentáře"],
"Comment" : "Komentář",
"An error occurred while trying to edit the comment" : "Došlo k chybě při pokusu o úpravu komentáře",
"Comment deleted" : "Komentář smazán",
"An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře",
"An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře"
"An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
}
+6 -5
View File
@@ -19,18 +19,19 @@ OC.L10N.register(
"New comment" : "Ny kommentar",
"Write a comment …" : "Skriv kommentar…",
"Post comment" : "Skriv kommentar",
"@ for mentions, : for emoji, / for smart picker" : "\"@\" for at omtale, \":\" for emojis, \"/\" for Smart Vælger",
"@ for mentions, : for emoji, / for smart picker" : "\"@\" for at nævne, \":\" for emojis, \"/\" for Smart Vælger",
"Could not reload comments" : "Kunne ikke indlæse kommentarer",
"Failed to mark comments as read" : "Kunne ikke markere kommentarer som læst",
"Unable to load the comments list" : "Kan ikke indlæse kommentarlisten",
"No comments yet, start the conversation!" : "Ingen kommentarer endnu, start samtalen!",
"No more messages" : "Ikke flere beskeder",
"Retry" : "Prøv igen",
"Failed to mark comments as read" : "Kunne ikke markere kommentarer som læst",
"Unable to load the comments list" : "Kan ikke indlæse kommentarlisten",
"_1 new comment_::_{unread} new comments_" : ["1 ny kommentar","{unread} nye kommentarer"],
"Comment" : "Kommenter",
"Comment" : "Kommentér",
"An error occurred while trying to edit the comment" : "Der opstod en fejl under forsøget på at redigere kommentaren",
"Comment deleted" : "Kommentar slettet",
"An error occurred while trying to delete the comment" : "Der opstod en fejl under forsøget på at slette kommentaren",
"An error occurred while trying to create the comment" : "Der opstod en fejl under forsøget på at oprette kommentaren"
"An error occurred while trying to create the comment" : "Der opstod en fejl under forsøget på at oprette kommentaren",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Du blev nævnt på \"{file}\", i en kommentar af en bruger, som siden er blevet slettet"
},
"nplurals=2; plural=(n != 1);");
+6 -5
View File
@@ -17,18 +17,19 @@
"New comment" : "Ny kommentar",
"Write a comment …" : "Skriv kommentar…",
"Post comment" : "Skriv kommentar",
"@ for mentions, : for emoji, / for smart picker" : "\"@\" for at omtale, \":\" for emojis, \"/\" for Smart Vælger",
"@ for mentions, : for emoji, / for smart picker" : "\"@\" for at nævne, \":\" for emojis, \"/\" for Smart Vælger",
"Could not reload comments" : "Kunne ikke indlæse kommentarer",
"Failed to mark comments as read" : "Kunne ikke markere kommentarer som læst",
"Unable to load the comments list" : "Kan ikke indlæse kommentarlisten",
"No comments yet, start the conversation!" : "Ingen kommentarer endnu, start samtalen!",
"No more messages" : "Ikke flere beskeder",
"Retry" : "Prøv igen",
"Failed to mark comments as read" : "Kunne ikke markere kommentarer som læst",
"Unable to load the comments list" : "Kan ikke indlæse kommentarlisten",
"_1 new comment_::_{unread} new comments_" : ["1 ny kommentar","{unread} nye kommentarer"],
"Comment" : "Kommenter",
"Comment" : "Kommentér",
"An error occurred while trying to edit the comment" : "Der opstod en fejl under forsøget på at redigere kommentaren",
"Comment deleted" : "Kommentar slettet",
"An error occurred while trying to delete the comment" : "Der opstod en fejl under forsøget på at slette kommentaren",
"An error occurred while trying to create the comment" : "Der opstod en fejl under forsøget på at oprette kommentaren"
"An error occurred while trying to create the comment" : "Der opstod en fejl under forsøget på at oprette kommentaren",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Du blev nævnt på \"{file}\", i en kommentar af en bruger, som siden er blevet slettet"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+4 -3
View File
@@ -21,16 +21,17 @@ OC.L10N.register(
"Post comment" : "Kommentar veröffentlichen",
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
"Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden",
"Unable to load the comments list" : "Kommentarliste konnte nicht geladen werden",
"No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginne die Diskussion!",
"No more messages" : "Keine weiteren Nachrichten",
"Retry" : "Wiederholen",
"Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden",
"Unable to load the comments list" : "Kommentarliste konnte nicht geladen werden",
"_1 new comment_::_{unread} new comments_" : ["1 neuer Kommentar","[unread] neue Kommentare"],
"Comment" : "Kommentar",
"An error occurred while trying to edit the comment" : "Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten",
"Comment deleted" : "Kommentar gelöscht",
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten"
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Benutzer erwähnt"
},
"nplurals=2; plural=(n != 1);");
+4 -3
View File
@@ -19,16 +19,17 @@
"Post comment" : "Kommentar veröffentlichen",
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
"Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden",
"Unable to load the comments list" : "Kommentarliste konnte nicht geladen werden",
"No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginne die Diskussion!",
"No more messages" : "Keine weiteren Nachrichten",
"Retry" : "Wiederholen",
"Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden",
"Unable to load the comments list" : "Kommentarliste konnte nicht geladen werden",
"_1 new comment_::_{unread} new comments_" : ["1 neuer Kommentar","[unread] neue Kommentare"],
"Comment" : "Kommentar",
"An error occurred while trying to edit the comment" : "Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten",
"Comment deleted" : "Kommentar gelöscht",
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten"
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Benutzer erwähnt"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+4 -3
View File
@@ -21,16 +21,17 @@ OC.L10N.register(
"Post comment" : "Kommentar veröffentlichen",
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
"Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden",
"Unable to load the comments list" : "Kommentarliste kann nicht geladen werden",
"No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginnen Sie die Diskussion!",
"No more messages" : "Keine weiteren Nachrichten",
"Retry" : "Wiederholen",
"Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden",
"Unable to load the comments list" : "Kommentarliste kann nicht geladen werden",
"_1 new comment_::_{unread} new comments_" : ["1 neuer Kommentar","[unread] neue Kommentare"],
"Comment" : "Kommentar",
"An error occurred while trying to edit the comment" : "Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten",
"Comment deleted" : "Kommentar gelöscht",
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten"
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Sie wurden in einem Kommentar auf \"{file}\" von einem bereits gelöschten Benutzer erwähnt"
},
"nplurals=2; plural=(n != 1);");

Some files were not shown because too many files have changed in this diff Show More