Skip to content

Commit 3f128c5

Browse files
fix: ensure dropzone respects canCreate permissions (#8689)
Prioritize user permissions for upload creation instead of only looking at `admin.allowCreate`
1 parent e4fd1e3 commit 3f128c5

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

packages/ui/src/fields/Upload/Input.tsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ export function UploadInput(props: UploadInputProps) {
158158
const loadedValueDocsRef = React.useRef<boolean>(false)
159159

160160
const canCreate = useMemo(() => {
161+
if (readOnly || !allowCreate) {
162+
return false
163+
}
164+
161165
if (typeof activeRelationTo === 'string') {
162166
if (permissions?.collections && permissions.collections?.[activeRelationTo]?.create) {
163167
if (permissions.collections[activeRelationTo].create?.permission === true) {
@@ -167,7 +171,7 @@ export function UploadInput(props: UploadInputProps) {
167171
}
168172

169173
return false
170-
}, [activeRelationTo, permissions])
174+
}, [activeRelationTo, permissions, readOnly, allowCreate])
171175

172176
const onChange = React.useCallback(
173177
(newValue) => {
@@ -491,10 +495,14 @@ export function UploadInput(props: UploadInputProps) {
491495
) : null}
492496

493497
{showDropzone ? (
494-
<Dropzone disabled={!allowCreate} multipleFiles={hasMany} onChange={onLocalFileSelection}>
498+
<Dropzone
499+
disabled={readOnly || !canCreate}
500+
multipleFiles={hasMany}
501+
onChange={onLocalFileSelection}
502+
>
495503
<div className={`${baseClass}__dropzoneContent`}>
496504
<div className={`${baseClass}__dropzoneContent__buttons`}>
497-
{allowCreate && (
505+
{canCreate && (
498506
<>
499507
<Button
500508
buttonStyle="pill"
@@ -530,14 +538,14 @@ export function UploadInput(props: UploadInputProps) {
530538

531539
<CreateDocDrawer onSave={onDocCreate} />
532540
<ListDrawer
533-
allowCreate={allowCreate}
541+
allowCreate={canCreate}
534542
enableRowSelections={hasMany}
535543
onBulkSelect={onListBulkSelect}
536544
onSelect={onListSelect}
537545
/>
538546
</div>
539547

540-
{allowCreate && (
548+
{canCreate && (
541549
<p className={`${baseClass}__dragAndDropText`}>
542550
{t('general:or')} {t('upload:dragAndDrop')}
543551
</p>

0 commit comments

Comments
 (0)