web/admin: fix file upload not preserving extension for custom names with dots#19548
web/admin: fix file upload not preserving extension for custom names with dots#19548
Conversation
✅ Deploy Preview for authentik-storybook ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview for authentik-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #19548 +/- ##
==========================================
+ Coverage 93.26% 93.27% +0.01%
==========================================
Files 949 949
Lines 52187 52187
==========================================
+ Hits 48671 48677 +6
+ Misses 3516 3510 -6
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
|
authentik PR Installation instructions Instructions for docker-composeAdd the following block to your AUTHENTIK_IMAGE=ghcr.io/goauthentik/dev-server
AUTHENTIK_TAG=gh-576ce315dcc3046e0ca95e0abdb327e968734192
AUTHENTIK_OUTPOSTS__CONTAINER_IMAGE_BASE=ghcr.io/goauthentik/dev-%(type)s:gh-%(build_hash)sAfterwards, run the upgrade commands from the latest release notes. Instructions for KubernetesAdd the following block to your authentik:
outposts:
container_image_base: ghcr.io/goauthentik/dev-%(type)s:gh-%(build_hash)s
global:
image:
repository: ghcr.io/goauthentik/dev-server
tag: gh-576ce315dcc3046e0ca95e0abdb327e968734192Afterwards, run the upgrade commands from the latest release notes. |
kensternberg-authentik
left a comment
There was a problem hiding this comment.
It's valid and it does what it says it should do, but the custom filename logic is a little convoluted and obscures intent; I left a suggestion on how to clean it up.
…with dots Overview: The `hasBasenameExtension()` function in `FileUploadForm.ts` incorrectly determined whether a custom filename already had an extension by checking if it contained any dot at position > 0. This caused filenames like "e._.e" to be treated as having an extension, so the original file's extension was not appended. The file would be saved as "e._.e" instead of "e._.e.jpg", which caused `mimetypes.guess_type()` to return `None` (since ".e" is not a recognized extension) and the backend to fall back to "application/octet-stream". Removed `hasBasenameExtension()` entirely. Since the UI explicitly states "Optionally rename the file (without extension)", we now always append the original file's extension when a custom name is provided. Testing: 1. Upload a JPG file with custom name "e" --> saves as "e.jpg", and is detected as "image/jpeg" 2. Upload a JPG file with custom name "e._.e" --> now saves as "e._.e.jpg",and is detected as "image/jpeg" Motivation: Fixes incorrect MIME type detection for uploaded files when users provide custom filenames containing dots.
673bafd to
ca9a8c9
Compare
|
|
* main: (115 commits) internal: fix incorrect metric calculation (#19701) core, web: update translations (#19684) core: bump goauthentik.io/api/v3 from 3.2026020.12 to 3.2026020.14 (#19686) lifecycle/aws: bump aws-cdk from 2.1101.0 to 2.1102.0 in /lifecycle/aws (#19687) core: bump goauthentik/selenium from 143.0-ak-0.35.3 to 144.0-ak-0.35.7 in /tests/e2e (#19688) core: bump msgraph-sdk from 1.52.0 to 1.53.0 (#19689) core: bump ruff from 0.14.13 to 0.14.14 (#19690) core: bump twilio from 9.9.1 to 9.10.0 (#19691) core: bump gunicorn from 23.0.0 to 24.0.0 (#19692) web: bump the bundler group across 1 directory with 3 updates (#19693) web: bump unist-util-visit from 5.0.0 to 5.1.0 in /web (#19694) web: bump globals from 17.0.0 to 17.1.0 in /web (#19695) ci: bump actions/checkout from 6.0.1 to 6.0.2 (#19696) web: Form Modal Independence: Part 1 (#19395) web/common: add dev middleware to show warnings for consecutive identical requests (#19671) web/admin: fix file upload not preserving extension for custom names with dots (#19548) web/admin: fix brand form sending "undefined" string for blank default application (#19658) providers/proxy: Fix incorrect comparison of redirect URL and CookieDomain (#15686) core: add bulk session revocation (#18564) website/docs: endpoint devices: add serial number note (#19677) ...
Overview:
The
hasBasenameExtension()function inFileUploadForm.tsincorrectly determined whether a custom filename already had an extension by checking if it contained any dot at position > 0.This caused filenames like "
e._.e" to be treated as having an extension, so the original file's extension was not appended. The file would be saved as "e._.e" instead of "e._.e.jpg", which causedmimetypes.guess_type()to returnNone(since ".e" is not a recognized extension) and the backend to fall back to "application/octet-stream".Removed
hasBasenameExtension()entirely. Since the UI explicitly states "Optionally rename the file (without extension)", we now always append the original file's extension when a custom name is provided.Testing:
e._.e" --> now saves as "e._.e.jpg",and is detected as "image/jpeg"Motivation:
Fixes incorrect MIME type detection for uploaded files when users provide custom filenames containing dots.