1
1
import type { EditViewComponent } from 'payload/config'
2
2
import type { AdminViewComponent , ServerSideEditViewProps } from 'payload/types'
3
- import type { DocumentPermissions } from 'payload/types'
4
3
import type { AdminViewProps } from 'payload/types'
5
4
6
5
import { DocumentHeader } from '@payloadcms/ui/elements/DocumentHeader'
@@ -9,15 +8,15 @@ import { RenderCustomComponent } from '@payloadcms/ui/elements/RenderCustomCompo
9
8
import { DocumentInfoProvider } from '@payloadcms/ui/providers/DocumentInfo'
10
9
import { EditDepthProvider } from '@payloadcms/ui/providers/EditDepth'
11
10
import { FormQueryParamsProvider } from '@payloadcms/ui/providers/FormQueryParams'
12
- import { hasSavePermission as getHasSavePermission } from '@payloadcms/ui/utilities/hasSavePermission'
13
11
import { isEditing as getIsEditing } from '@payloadcms/ui/utilities/isEditing'
14
12
import { notFound , redirect } from 'next/navigation.js'
15
- import { docAccessOperation } from 'payload/operations'
16
13
import React from 'react'
17
14
18
15
import type { GenerateEditViewMetadata } from './getMetaBySegment.js'
19
16
20
17
import { NotFoundView } from '../NotFound/index.js'
18
+ import { getDocumentData } from './getDocumentData.js'
19
+ import { getDocumentPermissions } from './getDocumentPermissions.js'
21
20
import { getMetaBySegment } from './getMetaBySegment.js'
22
21
import { getViewsFromConfig } from './getViewsFromConfig.js'
23
22
@@ -61,32 +60,33 @@ export const Document: React.FC<AdminViewProps> = async ({
61
60
let DefaultView : EditViewComponent
62
61
let ErrorView : AdminViewComponent
63
62
64
- let docPermissions : DocumentPermissions
65
- let hasSavePermission : boolean
66
63
let apiURL : string
67
64
let action : string
68
65
66
+ const data = await getDocumentData ( {
67
+ id,
68
+ collectionConfig,
69
+ globalConfig,
70
+ locale,
71
+ payload,
72
+ req,
73
+ } )
74
+
75
+ const { docPermissions, hasPublishPermission, hasSavePermission } = await getDocumentPermissions ( {
76
+ id,
77
+ collectionConfig,
78
+ data,
79
+ globalConfig,
80
+ req,
81
+ } )
82
+
69
83
if ( collectionConfig ) {
70
84
if ( ! visibleEntities ?. collections ?. find ( ( visibleSlug ) => visibleSlug === collectionSlug ) ) {
71
85
notFound ( )
72
86
}
73
87
74
- try {
75
- docPermissions = await docAccessOperation ( {
76
- id,
77
- collection : {
78
- config : collectionConfig ,
79
- } ,
80
- req,
81
- } )
82
- } catch ( error ) {
83
- notFound ( )
84
- }
85
-
86
88
action = `${ serverURL } ${ apiRoute } /${ collectionSlug } ${ isEditing ? `/${ id } ` : '' } `
87
89
88
- hasSavePermission = getHasSavePermission ( { collectionSlug, docPermissions, isEditing } )
89
-
90
90
apiURL = `${ serverURL } ${ apiRoute } /${ collectionSlug } /${ id } ?locale=${ locale . code } ${
91
91
collectionConfig . versions ?. drafts ? '&draft=true' : ''
92
92
} `
@@ -117,9 +117,6 @@ export const Document: React.FC<AdminViewProps> = async ({
117
117
notFound ( )
118
118
}
119
119
120
- docPermissions = permissions ?. globals ?. [ globalSlug ]
121
- hasSavePermission = getHasSavePermission ( { docPermissions, globalSlug, isEditing } )
122
-
123
120
action = `${ serverURL } ${ apiRoute } /globals/${ globalSlug } `
124
121
125
122
apiURL = `${ serverURL } ${ apiRoute } /${ globalSlug } ?locale=${ locale . code } ${
@@ -191,6 +188,7 @@ export const Document: React.FC<AdminViewProps> = async ({
191
188
disableActions = { false }
192
189
docPermissions = { docPermissions }
193
190
globalSlug = { globalConfig ?. slug }
191
+ hasPublishPermission = { hasPublishPermission }
194
192
hasSavePermission = { hasSavePermission }
195
193
id = { id }
196
194
isEditing = { isEditing }
0 commit comments