Media: Add protection to restrict access to media in recycle bin (closes #2931)#20378
Merged
AndyButland merged 21 commits intomainfrom Nov 4, 2025
Merged
Media: Add protection to restrict access to media in recycle bin (closes #2931)#20378AndyButland merged 21 commits intomainfrom
AndyButland merged 21 commits intomainfrom
Conversation
Protected requests for media in recycle bin.
…media recycle bin.
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR implements media recycle bin protection to restrict access to media files when they are moved to the recycle bin. The feature adds security by renaming trashed media files with a .deleted suffix and provides middleware to control access to these protected files.
- Adds new
EnableMediaRecycleBinProtectionconfiguration setting inImagingSettings - Implements file renaming functionality when media is moved to/from recycle bin
- Introduces middleware protection requiring authentication for trashed media access
Reviewed Changes
Copilot reviewed 28 out of 28 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
src/Umbraco.Core/Configuration/Models/ImagingSettings.cs |
Adds EnableMediaRecycleBinProtection configuration property |
src/Umbraco.Core/Constants-Conventions.cs |
Defines .deleted suffix constant for trashed media files |
src/Umbraco.Core/IO/MediaFileManager.cs |
Implements suffix/remove suffix operations for media files |
src/Umbraco.Core/IO/IFileSystem.cs |
Adds MoveFile method to interface with default implementation |
src/Umbraco.Web.Common/Middleware/ProtectRecycleBinMediaMiddleware.cs |
New middleware to authenticate access to protected media files |
src/Umbraco.Infrastructure/PropertyEditors/NotificationHandlers/FileUploadContentDeletedNotificationHandler.cs |
Handles file operations when media is moved to/from recycle bin |
src/Umbraco.Web.UI.Client/src/packages/media/media/property-editors/image-cropper/property-editor-ui-image-cropper.element.ts |
Updates frontend to handle protected media file paths |
| Multiple test files | Adds test coverage for new file system operations |
...tructure/PropertyEditors/NotificationHandlers/FileUploadContentDeletedNotificationHandler.cs
Outdated
Show resolved
Hide resolved
...kages/media/media/property-editors/image-cropper/property-editor-ui-image-cropper.element.ts
Outdated
Show resolved
Hide resolved
...kages/media/media/property-editors/image-cropper/property-editor-ui-image-cropper.element.ts
Outdated
Show resolved
Hide resolved
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
… and file upload notification handlers.
…thub.com/umbraco/Umbraco-CMS into v16/feature/media-recycle-bin-protection
src/Umbraco.Web.UI.Client/src/packages/core/server/server-connection.ts
Outdated
Show resolved
Hide resolved
...kages/media/media/property-editors/image-cropper/property-editor-ui-image-cropper.element.ts
Outdated
Show resolved
Hide resolved
NillasKA
requested changes
Oct 29, 2025
Contributor
NillasKA
left a comment
There was a problem hiding this comment.
Looks good, tried and tested, works well.
Some small comments
src/Umbraco.Cms.Api.Management/Mapping/Media/MediaMapDefinition.cs
Outdated
Show resolved
Hide resolved
tests/Umbraco.Tests.Integration/Umbraco.Core/IO/FileSystemsTests.cs
Outdated
Show resolved
Hide resolved
8 tasks
This was referenced Jan 12, 2026
Merged
alexsee
pushed a commit
to alexsee/umbraco-container
that referenced
this pull request
Jan 18, 2026
Updated [Umbraco.Cms.Persistence.Sqlite](https://github.com/umbraco/Umbraco-CMS) from 17.0.2 to 17.1.0. <details> <summary>Release notes</summary> _Sourced from [Umbraco.Cms.Persistence.Sqlite's releases](https://github.com/umbraco/Umbraco-CMS/releases)._ ## 17.1.0 # What's Changed Since 17.1.0-rc ### 🐛 Bug Fixes * Media: Fix files not deleted from disk when recycle bin protection is enabled by @AndyButland in umbraco/Umbraco-CMS#21309 * Document Editing: Refactor of Fix property variation change breaking document save via Infinite Editing (closes #21195) by @nielslyngsoe in umbraco/Umbraco-CMS#21293 * umbraco/Umbraco-CMS#21306 by @calm329 in umbraco/Umbraco-CMS#21306 **Full Changelog**: umbraco/Umbraco-CMS@release-17.1.0-rc...release-17.1.0 ## What's Changed Since the Last Release (17.0.2) ### 📦 Dependencies * Dependencies: Fixed dependency conflicts when installing Microsoft.EntityFrameworkCore.Design (closes #20421) by @lauraneto in umbraco/Umbraco-CMS#20474 * Dependencies: Remove `Microsoft.CodeAnalysis.CSharp` dependency from Umbraco.Infrastructure by @lauraneto in umbraco/Umbraco-CMS#20481 * build(deps): bumps @umbraco-ui/uui from 1.16.0-rc.0 to 1.16.0 by @iOvergaard in umbraco/Umbraco-CMS#20535 * Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Client by @dependabot[bot] in umbraco/Umbraco-CMS#20580 * Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Login by @dependabot[bot] in umbraco/Umbraco-CMS#20621 * Bump playwright and @playwright/test in /tests/Umbraco.Tests.AcceptanceTest by @dependabot[bot] in umbraco/Umbraco-CMS#20579 * Bump the npm_and_yarn group across 2 directories with 1 update by @dependabot[bot] in umbraco/Umbraco-CMS#20863 * Dependencies: Updates some dependencies to latest minor or patch releases by @AndyButland in umbraco/Umbraco-CMS#20953 * build(deps): bumps monaco-editor from 0.54.0 to 0.55.1 by @iOvergaard in umbraco/Umbraco-CMS#21054 ### 🌈 Accessibility Improvements * Entity Actions: Create button discernible text (fixes #20205) by @OskarKruger in umbraco/Umbraco-CMS#20434 * Entity Actions: More create button discernible text, extension of #20434 by @OskarKruger in umbraco/Umbraco-CMS#20458 * Header: Adjusted button focus border color contrast by @MrHutmat in umbraco/Umbraco-CMS#20562 * Login: Added custom validation for missing password and user/email on the login form by @MrHutmat in umbraco/Umbraco-CMS#20233 * Accessibility: Adding a label attribute for `<uui-button>` in news dashboard by @MrHutmat in umbraco/Umbraco-CMS#20780 * Keyboard navigation: Return to opening element after modal close by @MrHutmat in umbraco/Umbraco-CMS#20782 ### 🚀 New Features * Preview: Allows changing the preview environment inside the preview app, and other UX changes that enhance the experience by @leekelleher in umbraco/Umbraco-CMS#20598 * Login: Adds show/hide password toggle by @MrHutmat in umbraco/Umbraco-CMS#20611 * Adds Clear Clipboard button & logic by @warrenbuckley in umbraco/Umbraco-CMS#20757 * Member types: Implement containers by @ronaldbarendse in umbraco/Umbraco-CMS#20706 * Log viewer: Improves search functionality and code quality by @iOvergaard in umbraco/Umbraco-CMS#20913 * Log Viewer: Enhances the donut chart to be responsive, link to log search, and show numbers directly by @iOvergaard in umbraco/Umbraco-CMS#20928 * Culture and Hostnames: Add ability to sort hostnames (closes #20691) by @MrHutmat in umbraco/Umbraco-CMS#20826 * Localization: Adds `termOrDefault()` method to accept a fallback value by @iOvergaard in umbraco/Umbraco-CMS#20947 * Block Grid: Sort mode by @leekelleher in umbraco/Umbraco-CMS#20869 * News Dashboard: Adding functionality to overwrite the cache duration by @NillasKA in umbraco/Umbraco-CMS#21064 * Block List: Sort mode by @leekelleher in umbraco/Umbraco-CMS#21060 * Extend RTE output in Delivery API for better support for multi-site URL resolution by @MiguelGuedelha in umbraco/Umbraco-CMS#20846 * Content Types: Introduce schema service to support future schema generation by @lauraneto in umbraco/Umbraco-CMS#21031 * Delivery API: Adding allow list for content types by @NillasKA in umbraco/Umbraco-CMS#21111 * Emails: Add `Expires` header by @rickbutterfield in umbraco/Umbraco-CMS#20285 * Indexing: Make the indexing batch size configurable by @kjac in umbraco/Umbraco-CMS#20543 * Media: Add protection to restrict access to media in recycle bin (closes #2931) by @AndyButland in umbraco/Umbraco-CMS#20378 * Collection: Introduce Collection Item Card extension type by @madsrasmussen in umbraco/Umbraco-CMS#20954 * Collection: Introduce Collection Item Ref extension type by @madsrasmussen in umbraco/Umbraco-CMS#20994 ... (truncated) ## 17.1.0-rc ## What's Changed ### 📦 Dependencies * Dependencies: Fixed dependency conflicts when installing Microsoft.EntityFrameworkCore.Design (closes #20421) by @lauraneto in umbraco/Umbraco-CMS#20474 * Dependencies: Remove `Microsoft.CodeAnalysis.CSharp` dependency from Umbraco.Infrastructure by @lauraneto in umbraco/Umbraco-CMS#20481 * build(deps): bumps @umbraco-ui/uui from 1.16.0-rc.0 to 1.16.0 by @iOvergaard in umbraco/Umbraco-CMS#20535 * Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Client by @dependabot[bot] in umbraco/Umbraco-CMS#20580 * Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Login by @dependabot[bot] in umbraco/Umbraco-CMS#20621 * Bump playwright and @playwright/test in /tests/Umbraco.Tests.AcceptanceTest by @dependabot[bot] in umbraco/Umbraco-CMS#20579 * Bump the npm_and_yarn group across 2 directories with 1 update by @dependabot[bot] in umbraco/Umbraco-CMS#20863 * Dependencies: Updates some dependencies to latest minor or patch releases by @AndyButland in umbraco/Umbraco-CMS#20953 * build(deps): bumps monaco-editor from 0.54.0 to 0.55.1 by @iOvergaard in umbraco/Umbraco-CMS#21054 ### 🌈 Accessibility Improvements * Entity Actions: Create button discernible text (fixes #20205) by @OskarKruger in umbraco/Umbraco-CMS#20434 * Entity Actions: More create button discernible text, extension of #20434 by @OskarKruger in umbraco/Umbraco-CMS#20458 * Header: Adjusted button focus border color contrast by @MrHutmat in umbraco/Umbraco-CMS#20562 * Login: Added custom validation for missing password and user/email on the login form by @MrHutmat in umbraco/Umbraco-CMS#20233 * Accessibility: Adding a label attribute for `<uui-button>` in news dashboard by @MrHutmat in umbraco/Umbraco-CMS#20780 * Keyboard navigation: Return to opening element after modal close by @MrHutmat in umbraco/Umbraco-CMS#20782 ### 🚀 New Features * Preview: Allows changing the preview environment inside the preview app, and other UX changes that enhance the experience by @leekelleher in umbraco/Umbraco-CMS#20598 * Login: Adds show/hide password toggle by @MrHutmat in umbraco/Umbraco-CMS#20611 * Adds Clear Clipboard button & logic by @warrenbuckley in umbraco/Umbraco-CMS#20757 * Member types: Implement containers by @ronaldbarendse in umbraco/Umbraco-CMS#20706 * Log viewer: Improves search functionality and code quality by @iOvergaard in umbraco/Umbraco-CMS#20913 * Log Viewer: Enhances the donut chart to be responsive, link to log search, and show numbers directly by @iOvergaard in umbraco/Umbraco-CMS#20928 * Culture and Hostnames: Add ability to sort hostnames (closes #20691) by @MrHutmat in umbraco/Umbraco-CMS#20826 * Localization: Adds `termOrDefault()` method to accept a fallback value by @iOvergaard in umbraco/Umbraco-CMS#20947 * Block Grid: Sort mode by @leekelleher in umbraco/Umbraco-CMS#20869 * News Dashboard: Adding functionality to overwrite the cache duration by @NillasKA in umbraco/Umbraco-CMS#21064 * Block List: Sort mode by @leekelleher in umbraco/Umbraco-CMS#21060 * Extend RTE output in Delivery API for better support for multi-site URL resolution by @MiguelGuedelha in umbraco/Umbraco-CMS#20846 * Content Types: Introduce schema service to support future schema generation by @lauraneto in umbraco/Umbraco-CMS#21031 * Delivery API: Adding allow list for content types by @NillasKA in umbraco/Umbraco-CMS#21111 * Emails: Add `Expires` header by @rickbutterfield in umbraco/Umbraco-CMS#20285 * Indexing: Make the indexing batch size configurable by @kjac in umbraco/Umbraco-CMS#20543 * Media: Add protection to restrict access to media in recycle bin (closes #2931) by @AndyButland in umbraco/Umbraco-CMS#20378 * Collection: Introduce Collection Item Card extension type by @madsrasmussen in umbraco/Umbraco-CMS#20954 * Collection: Introduce Collection Item Ref extension type by @madsrasmussen in umbraco/Umbraco-CMS#20994 * Collection: Introduce Card and Ref Collection View kinds by @madsrasmussen in umbraco/Umbraco-CMS#21037 ### 🚤 Performance * Performance: Optimize memory footprint of document URL cache (closes #21055) by @AndyButland in umbraco/Umbraco-CMS#21066 * Distributed Background Jobs: Improve distributed background job locking behavior and performance by @nikolajlauridsen in umbraco/Umbraco-CMS#21100 * Repositories: Optimize repository caches to populate for both int and GUID keys by @AndyButland in umbraco/Umbraco-CMS#21124 * Performance: Re-introduce lazy locks by @lauraneto in umbraco/Umbraco-CMS#21102 ### 🐛 Bug Fixes ... (truncated) Commits viewable in [compare view](umbraco/Umbraco-CMS@release-17.0.2...release-17.1.0). </details> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
alexsee
added a commit
to alexsee/umbraco-container
that referenced
this pull request
Jan 18, 2026
Updated [Umbraco.Cms.DevelopmentMode.Backoffice](https://github.com/umbraco/Umbraco-CMS) from 17.0.2 to 17.1.0. <details> <summary>Release notes</summary> _Sourced from [Umbraco.Cms.DevelopmentMode.Backoffice's releases](https://github.com/umbraco/Umbraco-CMS/releases)._ ## 17.1.0 # What's Changed Since 17.1.0-rc ### 🐛 Bug Fixes * Media: Fix files not deleted from disk when recycle bin protection is enabled by @AndyButland in umbraco/Umbraco-CMS#21309 * Document Editing: Refactor of Fix property variation change breaking document save via Infinite Editing (closes #21195) by @nielslyngsoe in umbraco/Umbraco-CMS#21293 * umbraco/Umbraco-CMS#21306 by @calm329 in umbraco/Umbraco-CMS#21306 **Full Changelog**: umbraco/Umbraco-CMS@release-17.1.0-rc...release-17.1.0 ## What's Changed Since the Last Release (17.0.2) ### 📦 Dependencies * Dependencies: Fixed dependency conflicts when installing Microsoft.EntityFrameworkCore.Design (closes #20421) by @lauraneto in umbraco/Umbraco-CMS#20474 * Dependencies: Remove `Microsoft.CodeAnalysis.CSharp` dependency from Umbraco.Infrastructure by @lauraneto in umbraco/Umbraco-CMS#20481 * build(deps): bumps @umbraco-ui/uui from 1.16.0-rc.0 to 1.16.0 by @iOvergaard in umbraco/Umbraco-CMS#20535 * Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Client by @dependabot[bot] in umbraco/Umbraco-CMS#20580 * Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Login by @dependabot[bot] in umbraco/Umbraco-CMS#20621 * Bump playwright and @playwright/test in /tests/Umbraco.Tests.AcceptanceTest by @dependabot[bot] in umbraco/Umbraco-CMS#20579 * Bump the npm_and_yarn group across 2 directories with 1 update by @dependabot[bot] in umbraco/Umbraco-CMS#20863 * Dependencies: Updates some dependencies to latest minor or patch releases by @AndyButland in umbraco/Umbraco-CMS#20953 * build(deps): bumps monaco-editor from 0.54.0 to 0.55.1 by @iOvergaard in umbraco/Umbraco-CMS#21054 ### 🌈 Accessibility Improvements * Entity Actions: Create button discernible text (fixes #20205) by @OskarKruger in umbraco/Umbraco-CMS#20434 * Entity Actions: More create button discernible text, extension of #20434 by @OskarKruger in umbraco/Umbraco-CMS#20458 * Header: Adjusted button focus border color contrast by @MrHutmat in umbraco/Umbraco-CMS#20562 * Login: Added custom validation for missing password and user/email on the login form by @MrHutmat in umbraco/Umbraco-CMS#20233 * Accessibility: Adding a label attribute for `<uui-button>` in news dashboard by @MrHutmat in umbraco/Umbraco-CMS#20780 * Keyboard navigation: Return to opening element after modal close by @MrHutmat in umbraco/Umbraco-CMS#20782 ### 🚀 New Features * Preview: Allows changing the preview environment inside the preview app, and other UX changes that enhance the experience by @leekelleher in umbraco/Umbraco-CMS#20598 * Login: Adds show/hide password toggle by @MrHutmat in umbraco/Umbraco-CMS#20611 * Adds Clear Clipboard button & logic by @warrenbuckley in umbraco/Umbraco-CMS#20757 * Member types: Implement containers by @ronaldbarendse in umbraco/Umbraco-CMS#20706 * Log viewer: Improves search functionality and code quality by @iOvergaard in umbraco/Umbraco-CMS#20913 * Log Viewer: Enhances the donut chart to be responsive, link to log search, and show numbers directly by @iOvergaard in umbraco/Umbraco-CMS#20928 * Culture and Hostnames: Add ability to sort hostnames (closes #20691) by @MrHutmat in umbraco/Umbraco-CMS#20826 * Localization: Adds `termOrDefault()` method to accept a fallback value by @iOvergaard in umbraco/Umbraco-CMS#20947 * Block Grid: Sort mode by @leekelleher in umbraco/Umbraco-CMS#20869 * News Dashboard: Adding functionality to overwrite the cache duration by @NillasKA in umbraco/Umbraco-CMS#21064 * Block List: Sort mode by @leekelleher in umbraco/Umbraco-CMS#21060 * Extend RTE output in Delivery API for better support for multi-site URL resolution by @MiguelGuedelha in umbraco/Umbraco-CMS#20846 * Content Types: Introduce schema service to support future schema generation by @lauraneto in umbraco/Umbraco-CMS#21031 * Delivery API: Adding allow list for content types by @NillasKA in umbraco/Umbraco-CMS#21111 * Emails: Add `Expires` header by @rickbutterfield in umbraco/Umbraco-CMS#20285 * Indexing: Make the indexing batch size configurable by @kjac in umbraco/Umbraco-CMS#20543 * Media: Add protection to restrict access to media in recycle bin (closes #2931) by @AndyButland in umbraco/Umbraco-CMS#20378 * Collection: Introduce Collection Item Card extension type by @madsrasmussen in umbraco/Umbraco-CMS#20954 * Collection: Introduce Collection Item Ref extension type by @madsrasmussen in umbraco/Umbraco-CMS#20994 ... (truncated) ## 17.1.0-rc ## What's Changed ### 📦 Dependencies * Dependencies: Fixed dependency conflicts when installing Microsoft.EntityFrameworkCore.Design (closes #20421) by @lauraneto in umbraco/Umbraco-CMS#20474 * Dependencies: Remove `Microsoft.CodeAnalysis.CSharp` dependency from Umbraco.Infrastructure by @lauraneto in umbraco/Umbraco-CMS#20481 * build(deps): bumps @umbraco-ui/uui from 1.16.0-rc.0 to 1.16.0 by @iOvergaard in umbraco/Umbraco-CMS#20535 * Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Client by @dependabot[bot] in umbraco/Umbraco-CMS#20580 * Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Login by @dependabot[bot] in umbraco/Umbraco-CMS#20621 * Bump playwright and @playwright/test in /tests/Umbraco.Tests.AcceptanceTest by @dependabot[bot] in umbraco/Umbraco-CMS#20579 * Bump the npm_and_yarn group across 2 directories with 1 update by @dependabot[bot] in umbraco/Umbraco-CMS#20863 * Dependencies: Updates some dependencies to latest minor or patch releases by @AndyButland in umbraco/Umbraco-CMS#20953 * build(deps): bumps monaco-editor from 0.54.0 to 0.55.1 by @iOvergaard in umbraco/Umbraco-CMS#21054 ### 🌈 Accessibility Improvements * Entity Actions: Create button discernible text (fixes #20205) by @OskarKruger in umbraco/Umbraco-CMS#20434 * Entity Actions: More create button discernible text, extension of #20434 by @OskarKruger in umbraco/Umbraco-CMS#20458 * Header: Adjusted button focus border color contrast by @MrHutmat in umbraco/Umbraco-CMS#20562 * Login: Added custom validation for missing password and user/email on the login form by @MrHutmat in umbraco/Umbraco-CMS#20233 * Accessibility: Adding a label attribute for `<uui-button>` in news dashboard by @MrHutmat in umbraco/Umbraco-CMS#20780 * Keyboard navigation: Return to opening element after modal close by @MrHutmat in umbraco/Umbraco-CMS#20782 ### 🚀 New Features * Preview: Allows changing the preview environment inside the preview app, and other UX changes that enhance the experience by @leekelleher in umbraco/Umbraco-CMS#20598 * Login: Adds show/hide password toggle by @MrHutmat in umbraco/Umbraco-CMS#20611 * Adds Clear Clipboard button & logic by @warrenbuckley in umbraco/Umbraco-CMS#20757 * Member types: Implement containers by @ronaldbarendse in umbraco/Umbraco-CMS#20706 * Log viewer: Improves search functionality and code quality by @iOvergaard in umbraco/Umbraco-CMS#20913 * Log Viewer: Enhances the donut chart to be responsive, link to log search, and show numbers directly by @iOvergaard in umbraco/Umbraco-CMS#20928 * Culture and Hostnames: Add ability to sort hostnames (closes #20691) by @MrHutmat in umbraco/Umbraco-CMS#20826 * Localization: Adds `termOrDefault()` method to accept a fallback value by @iOvergaard in umbraco/Umbraco-CMS#20947 * Block Grid: Sort mode by @leekelleher in umbraco/Umbraco-CMS#20869 * News Dashboard: Adding functionality to overwrite the cache duration by @NillasKA in umbraco/Umbraco-CMS#21064 * Block List: Sort mode by @leekelleher in umbraco/Umbraco-CMS#21060 * Extend RTE output in Delivery API for better support for multi-site URL resolution by @MiguelGuedelha in umbraco/Umbraco-CMS#20846 * Content Types: Introduce schema service to support future schema generation by @lauraneto in umbraco/Umbraco-CMS#21031 * Delivery API: Adding allow list for content types by @NillasKA in umbraco/Umbraco-CMS#21111 * Emails: Add `Expires` header by @rickbutterfield in umbraco/Umbraco-CMS#20285 * Indexing: Make the indexing batch size configurable by @kjac in umbraco/Umbraco-CMS#20543 * Media: Add protection to restrict access to media in recycle bin (closes #2931) by @AndyButland in umbraco/Umbraco-CMS#20378 * Collection: Introduce Collection Item Card extension type by @madsrasmussen in umbraco/Umbraco-CMS#20954 * Collection: Introduce Collection Item Ref extension type by @madsrasmussen in umbraco/Umbraco-CMS#20994 * Collection: Introduce Card and Ref Collection View kinds by @madsrasmussen in umbraco/Umbraco-CMS#21037 ### 🚤 Performance * Performance: Optimize memory footprint of document URL cache (closes #21055) by @AndyButland in umbraco/Umbraco-CMS#21066 * Distributed Background Jobs: Improve distributed background job locking behavior and performance by @nikolajlauridsen in umbraco/Umbraco-CMS#21100 * Repositories: Optimize repository caches to populate for both int and GUID keys by @AndyButland in umbraco/Umbraco-CMS#21124 * Performance: Re-introduce lazy locks by @lauraneto in umbraco/Umbraco-CMS#21102 ### 🐛 Bug Fixes ... (truncated) Commits viewable in [compare view](umbraco/Umbraco-CMS@release-17.0.2...release-17.1.0). </details> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alexander Seeliger <alexsee@users.noreply.github.com>
This was referenced Jan 26, 2026
This was referenced Feb 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Prerequisites
Addresses #2931
Description
This PR attempts to address the long standing issue of media files that are associated with media items in the recycle bin being accessible.
There are a couple of prerequisites as part of the PR:
MoveFilemethod toIFileSystemand the various implementations, including a default for any third-party implementations that won't have yet implemented it.Then the implementation itself includes:
.deletedsuffix - somedia/xxx/test.pngbecomesmedia/xxx/test.deleted.png..deletedsuffix is removed.MoveFileimplementation onIFileSystem..deletedsuffix will be added in they are being viewed in the recycle bin..deletedsuffix and only allow access if there is a backoffice user logged in who has access to the "Media" section.IBackOfficeUserAccessoralways fails to find the current backoffice user in this context.Testing
With the code from this PR in place, verify that, with
Umbraco:Cms:Imaging:EnableMediaRecycleBinProtectionset totrue..deletedsuffix.To Do
IFileSystem.MoveFile.