1
1
'use client'
2
2
3
- import React , { useCallback } from 'react'
3
+ import React , { useCallback , useMemo } from 'react'
4
4
5
5
import type { UploadInputProps } from './Input.js'
6
6
import type { UploadFieldProps } from './types.js'
7
7
8
8
import { useFieldProps } from '../../forms/FieldPropsProvider/index.js'
9
9
import { useField } from '../../forms/useField/index.js'
10
10
import { withCondition } from '../../forms/withCondition/index.js'
11
+ import { useAuth } from '../../providers/Auth/index.js'
11
12
import { useConfig } from '../../providers/Config/index.js'
12
13
import { UploadInput } from './Input.js'
13
14
import './index.scss'
@@ -36,10 +37,12 @@ const _Upload: React.FC<UploadFieldProps> = (props) => {
36
37
37
38
const {
38
39
collections,
39
- routes : { api } ,
40
+ routes : { api : apiRoute } ,
40
41
serverURL,
41
42
} = useConfig ( )
42
43
44
+ const { permissions } = useAuth ( )
45
+
43
46
const collection = collections . find ( ( coll ) => coll . slug === relationTo )
44
47
45
48
const memoizedValidate = useCallback (
@@ -53,6 +56,17 @@ const _Upload: React.FC<UploadFieldProps> = (props) => {
53
56
54
57
const { path : pathFromContext , readOnly : readOnlyFromContext } = useFieldProps ( )
55
58
59
+ // Checks if the user has permissions to create a new document in the related collection
60
+ const canCreate = useMemo ( ( ) => {
61
+ if ( permissions ?. collections && permissions . collections ?. [ relationTo ] ?. create ) {
62
+ if ( permissions . collections [ relationTo ] . create ?. permission === true ) {
63
+ return true
64
+ }
65
+ }
66
+
67
+ return false
68
+ } , [ relationTo , permissions ] )
69
+
56
70
const { filterOptions, formInitializing, formProcessing, path, setValue, showError, value } =
57
71
useField < string > ( {
58
72
path : pathFromContext ?? pathFromProps ,
@@ -75,7 +89,8 @@ const _Upload: React.FC<UploadFieldProps> = (props) => {
75
89
CustomDescription = { CustomDescription }
76
90
CustomError = { CustomError }
77
91
CustomLabel = { CustomLabel }
78
- api = { api }
92
+ allowNewUpload = { canCreate }
93
+ api = { apiRoute }
79
94
className = { className }
80
95
collection = { collection }
81
96
descriptionProps = { descriptionProps }
0 commit comments