From cdb90383f66d93c11c2cdefd4eec73ec97404026 Mon Sep 17 00:00:00 2001 From: Willy Kloucek Date: Tue, 9 Nov 2021 10:59:27 +0100 Subject: [PATCH] fix opening images in media viewer for some usernames --- changelog/unreleased/fix-mediaviewer-url-encoded.md | 5 +++++ webdav/pkg/dav/requests/thumbnail.go | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 changelog/unreleased/fix-mediaviewer-url-encoded.md diff --git a/changelog/unreleased/fix-mediaviewer-url-encoded.md b/changelog/unreleased/fix-mediaviewer-url-encoded.md new file mode 100644 index 0000000000..a15e7b4d16 --- /dev/null +++ b/changelog/unreleased/fix-mediaviewer-url-encoded.md @@ -0,0 +1,5 @@ +Bugfix: Fix opening images in media viewer for some usernames + +We've fixed the opening of images in the media viewer for user names containing special characters (eg. `@`) which will be URL-escaped. Before this fix users could not see the image in the media viewer. Now the user name is correctly escaped and the user can view the image in the media viewer. + +https://github.com/owncloud/ocis/pull/2738 diff --git a/webdav/pkg/dav/requests/thumbnail.go b/webdav/pkg/dav/requests/thumbnail.go index 4bb1fc35a8..6ce7b3d38a 100644 --- a/webdav/pkg/dav/requests/thumbnail.go +++ b/webdav/pkg/dav/requests/thumbnail.go @@ -66,10 +66,15 @@ func ParseThumbnailRequest(r *http.Request) (*ThumbnailRequest, error) { // So using the URLParam function is not possible. func extractFilePath(r *http.Request) (string, error) { user := chi.URLParam(r, "user") + user, err := url.QueryUnescape(user) + if err != nil { + return "", errors.New("could not unescape user") + } if user != "" { parts := strings.SplitN(r.URL.Path, user, 2) return parts[1], nil } + token := chi.URLParam(r, "token") if token != "" { parts := strings.SplitN(r.URL.Path, token, 2)