Skip to content

Commit 6650180

Browse files
author
Andrii Rublov
committed
[Bugfix]nextcloud#43468: 'forbidden_chars' added the condition to drop file and added forbiddenCharacters to UploadPicker
Signed-off-by: Andrii Rublov <airublev@outlook.com>
1 parent 04a918c commit 6650180

2 files changed

Lines changed: 21 additions & 5 deletions

File tree

apps/files/src/services/DropService.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,12 @@ import { getUploader } from '@nextcloud/upload'
2929
import { joinPaths } from '@nextcloud/paths'
3030
import { showError } from '@nextcloud/dialogs'
3131
import { translate as t } from '@nextcloud/l10n'
32+
import { loadState } from '@nextcloud/initial-state'
3233

3334
import logger from '../logger.js'
3435

36+
const forbiddenCharacters = loadState('files', 'forbiddenCharacters', '') as string
37+
3538
export const handleDrop = async (data: DataTransfer): Promise<Upload[]> => {
3639
// TODO: Maybe handle `getAsFileSystemHandle()` in the future
3740

@@ -67,11 +70,18 @@ export const handleDrop = async (data: DataTransfer): Promise<Upload[]> => {
6770
const handleFileUpload = async (file: File, path: string = '') => {
6871
const uploader = getUploader()
6972

70-
try {
71-
return await uploader.upload(`${path}${file.name}`, file)
72-
} catch (e) {
73-
showError(t('files', 'Uploading "{filename}" failed', { filename: file.name }))
74-
throw e
73+
const forbidden = forbiddenCharacters.split('')
74+
let forbiddenChar
75+
76+
if(forbiddenChar = forbidden.find(char => file.name.includes(char))){
77+
showError(t('files', `"${forbiddenChar}" is not allowed inside a file name.`));
78+
}else{
79+
try {
80+
return await uploader.upload(`${path}${file.name}`, file)
81+
} catch (e) {
82+
showError(t('files', 'Uploading "{filename}" failed', { filename: file.name }))
83+
throw e
84+
}
7585
}
7686
}
7787

apps/files/src/views/FilesList.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454

5555
<!-- Uploader -->
5656
<UploadPicker v-else-if="currentFolder"
57+
:forbiddenCharacters="forbiddenCharacters"
5758
:content="dirContents"
5859
:destination="currentFolder"
5960
:multiple="true"
@@ -160,6 +161,7 @@ import filesSortingMixin from '../mixins/filesSorting.ts'
160161
import logger from '../logger.js'
161162
import DragAndDropNotice from '../components/DragAndDropNotice.vue'
162163
164+
const forbiddenCharacters = loadState('files', 'forbiddenCharacters', '') as string
163165
const isSharingEnabled = (getCapabilities() as { files_sharing?: boolean })?.files_sharing !== undefined
164166
165167
export default defineComponent({
@@ -248,6 +250,10 @@ export default defineComponent({
248250
return this.filesStore.getNode(fileId)
249251
},
250252
253+
forbiddenCharacters(): string {
254+
return forbiddenCharacters
255+
},
256+
251257
/**
252258
* Directory content sorting parameters
253259
* Provided by an extra computed property for caching

0 commit comments

Comments
 (0)