@payloadcms/next 3.0.0-canary.518fabe → 3.0.0-canary.51be7be

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/dist/cjs/withPayload.cjs +145 -0
  2. package/dist/cjs/withPayload.cjs.map +1 -0
  3. package/dist/elements/DocumentHeader/Tabs/Tab/index.scss +70 -68
  4. package/dist/elements/DocumentHeader/Tabs/index.scss +41 -39
  5. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.d.ts.map +1 -1
  6. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +28 -24
  7. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
  8. package/dist/elements/DocumentHeader/index.scss +44 -42
  9. package/dist/elements/DocumentLocked/index.d.ts +12 -0
  10. package/dist/elements/DocumentLocked/index.d.ts.map +1 -0
  11. package/dist/elements/DocumentLocked/index.js +142 -0
  12. package/dist/elements/DocumentLocked/index.js.map +1 -0
  13. package/dist/elements/DocumentLocked/index.scss +39 -0
  14. package/dist/elements/DocumentTakeOver/index.d.ts +8 -0
  15. package/dist/elements/DocumentTakeOver/index.d.ts.map +1 -0
  16. package/dist/elements/DocumentTakeOver/index.js +98 -0
  17. package/dist/elements/DocumentTakeOver/index.js.map +1 -0
  18. package/dist/elements/DocumentTakeOver/index.scss +39 -0
  19. package/dist/elements/FormHeader/index.d.ts +9 -0
  20. package/dist/elements/FormHeader/index.d.ts.map +1 -0
  21. package/dist/elements/FormHeader/index.js +20 -0
  22. package/dist/elements/FormHeader/index.js.map +1 -0
  23. package/dist/elements/FormHeader/index.scss +8 -0
  24. package/dist/elements/LeaveWithoutSaving/index.scss +28 -26
  25. package/dist/elements/Nav/NavWrapper/index.scss +21 -14
  26. package/dist/elements/Nav/index.scss +127 -121
  27. package/dist/exports/utilities.d.ts +1 -0
  28. package/dist/exports/utilities.d.ts.map +1 -1
  29. package/dist/exports/utilities.js +1 -0
  30. package/dist/exports/utilities.js.map +1 -1
  31. package/dist/layouts/Root/index.d.ts.map +1 -1
  32. package/dist/layouts/Root/index.js +55 -23
  33. package/dist/layouts/Root/index.js.map +1 -1
  34. package/dist/prod/styles.css +1 -1
  35. package/dist/routes/graphql/handler.d.ts.map +1 -1
  36. package/dist/routes/graphql/handler.js +23 -11
  37. package/dist/routes/graphql/handler.js.map +1 -1
  38. package/dist/routes/rest/auth/login.js +2 -2
  39. package/dist/routes/rest/auth/login.js.map +1 -1
  40. package/dist/routes/rest/auth/logout.d.ts.map +1 -1
  41. package/dist/routes/rest/auth/logout.js +3 -2
  42. package/dist/routes/rest/auth/logout.js.map +1 -1
  43. package/dist/routes/rest/auth/refresh.js +2 -2
  44. package/dist/routes/rest/auth/refresh.js.map +1 -1
  45. package/dist/routes/rest/auth/registerFirstUser.js +2 -2
  46. package/dist/routes/rest/auth/registerFirstUser.js.map +1 -1
  47. package/dist/routes/rest/auth/resetPassword.js +2 -2
  48. package/dist/routes/rest/auth/resetPassword.js.map +1 -1
  49. package/dist/routes/rest/collections/delete.d.ts.map +1 -1
  50. package/dist/routes/rest/collections/delete.js +2 -0
  51. package/dist/routes/rest/collections/delete.js.map +1 -1
  52. package/dist/routes/rest/collections/deleteByID.d.ts.map +1 -1
  53. package/dist/routes/rest/collections/deleteByID.js +2 -0
  54. package/dist/routes/rest/collections/deleteByID.js.map +1 -1
  55. package/dist/routes/rest/collections/find.d.ts.map +1 -1
  56. package/dist/routes/rest/collections/find.js +3 -0
  57. package/dist/routes/rest/collections/find.js.map +1 -1
  58. package/dist/routes/rest/collections/findByID.d.ts.map +1 -1
  59. package/dist/routes/rest/collections/findByID.js +2 -0
  60. package/dist/routes/rest/collections/findByID.js.map +1 -1
  61. package/dist/routes/rest/collections/update.d.ts.map +1 -1
  62. package/dist/routes/rest/collections/update.js +4 -0
  63. package/dist/routes/rest/collections/update.js.map +1 -1
  64. package/dist/routes/rest/collections/updateByID.d.ts.map +1 -1
  65. package/dist/routes/rest/collections/updateByID.js +4 -0
  66. package/dist/routes/rest/collections/updateByID.js.map +1 -1
  67. package/dist/routes/rest/globals/update.d.ts.map +1 -1
  68. package/dist/routes/rest/globals/update.js +2 -0
  69. package/dist/routes/rest/globals/update.js.map +1 -1
  70. package/dist/routes/rest/index.d.ts +12 -12
  71. package/dist/routes/rest/index.d.ts.map +1 -1
  72. package/dist/routes/rest/index.js +17 -15
  73. package/dist/routes/rest/index.js.map +1 -1
  74. package/dist/routes/rest/routeError.d.ts +2 -7
  75. package/dist/routes/rest/routeError.d.ts.map +1 -1
  76. package/dist/routes/rest/routeError.js +33 -19
  77. package/dist/routes/rest/routeError.js.map +1 -1
  78. package/dist/routes/rest/utilities/sanitizeJoinParams.d.ts +13 -0
  79. package/dist/routes/rest/utilities/sanitizeJoinParams.d.ts.map +1 -0
  80. package/dist/routes/rest/utilities/sanitizeJoinParams.js +17 -0
  81. package/dist/routes/rest/utilities/sanitizeJoinParams.js.map +1 -0
  82. package/dist/scss/app.scss +166 -162
  83. package/dist/scss/colors.scss +256 -254
  84. package/dist/scss/resets.scss +9 -7
  85. package/dist/scss/toastify.scss +42 -40
  86. package/dist/scss/toasts.scss +105 -103
  87. package/dist/scss/type.scss +80 -79
  88. package/dist/templates/Default/Wrapper/index.scss +38 -36
  89. package/dist/templates/Default/index.d.ts.map +1 -1
  90. package/dist/templates/Default/index.js +18 -6
  91. package/dist/templates/Default/index.js.map +1 -1
  92. package/dist/templates/Default/index.scss +62 -50
  93. package/dist/templates/Minimal/index.scss +22 -20
  94. package/dist/utilities/getNextRequestI18n.js +2 -2
  95. package/dist/utilities/getNextRequestI18n.js.map +1 -1
  96. package/dist/utilities/getRequestTheme.d.ts.map +1 -1
  97. package/dist/utilities/getRequestTheme.js +3 -0
  98. package/dist/utilities/getRequestTheme.js.map +1 -1
  99. package/dist/utilities/initPage/handleAdminPage.d.ts +12 -11
  100. package/dist/utilities/initPage/handleAdminPage.d.ts.map +1 -1
  101. package/dist/utilities/initPage/handleAdminPage.js +9 -21
  102. package/dist/utilities/initPage/handleAdminPage.js.map +1 -1
  103. package/dist/utilities/initPage/handleAuthRedirect.d.ts +6 -3
  104. package/dist/utilities/initPage/handleAuthRedirect.d.ts.map +1 -1
  105. package/dist/utilities/initPage/handleAuthRedirect.js +23 -36
  106. package/dist/utilities/initPage/handleAuthRedirect.js.map +1 -1
  107. package/dist/utilities/initPage/index.d.ts +1 -1
  108. package/dist/utilities/initPage/index.d.ts.map +1 -1
  109. package/dist/utilities/initPage/index.js +44 -42
  110. package/dist/utilities/initPage/index.js.map +1 -1
  111. package/dist/utilities/initPage/shared.d.ts +2 -2
  112. package/dist/utilities/initPage/shared.d.ts.map +1 -1
  113. package/dist/utilities/initPage/shared.js +18 -13
  114. package/dist/utilities/initPage/shared.js.map +1 -1
  115. package/dist/utilities/initReq.d.ts +11 -0
  116. package/dist/utilities/initReq.d.ts.map +1 -0
  117. package/dist/utilities/initReq.js +46 -0
  118. package/dist/utilities/initReq.js.map +1 -0
  119. package/dist/views/API/RenderJSON/index.scss +68 -66
  120. package/dist/views/API/index.scss +98 -96
  121. package/dist/views/Account/Settings/index.d.ts +2 -1
  122. package/dist/views/Account/Settings/index.d.ts.map +1 -1
  123. package/dist/views/Account/Settings/index.js +3 -2
  124. package/dist/views/Account/Settings/index.js.map +1 -1
  125. package/dist/views/Account/Settings/index.scss +37 -35
  126. package/dist/views/Account/index.d.ts.map +1 -1
  127. package/dist/views/Account/index.js +4 -2
  128. package/dist/views/Account/index.js.map +1 -1
  129. package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
  130. package/dist/views/CreateFirstUser/index.client.js +35 -16
  131. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  132. package/dist/views/CreateFirstUser/index.scss +13 -11
  133. package/dist/views/Dashboard/Default/index.d.ts +8 -1
  134. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  135. package/dist/views/Dashboard/Default/index.js +14 -2
  136. package/dist/views/Dashboard/Default/index.js.map +1 -1
  137. package/dist/views/Dashboard/Default/index.scss +53 -46
  138. package/dist/views/Dashboard/index.d.ts.map +1 -1
  139. package/dist/views/Dashboard/index.js +16 -1
  140. package/dist/views/Dashboard/index.js.map +1 -1
  141. package/dist/views/Document/getDocumentData.d.ts +5 -2
  142. package/dist/views/Document/getDocumentData.d.ts.map +1 -1
  143. package/dist/views/Document/getDocumentData.js +13 -2
  144. package/dist/views/Document/getDocumentData.js.map +1 -1
  145. package/dist/views/Document/getDocumentPermissions.d.ts.map +1 -1
  146. package/dist/views/Document/getDocumentPermissions.js +4 -1
  147. package/dist/views/Document/getDocumentPermissions.js.map +1 -1
  148. package/dist/views/Edit/Default/Auth/index.scss +56 -54
  149. package/dist/views/Edit/Default/index.d.ts.map +1 -1
  150. package/dist/views/Edit/Default/index.js +127 -14
  151. package/dist/views/Edit/Default/index.js.map +1 -1
  152. package/dist/views/Edit/Default/index.scss +15 -13
  153. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
  154. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +12 -11
  155. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  156. package/dist/views/ForgotPassword/index.d.ts.map +1 -1
  157. package/dist/views/ForgotPassword/index.js +8 -8
  158. package/dist/views/ForgotPassword/index.js.map +1 -1
  159. package/dist/views/List/Default/index.d.ts.map +1 -1
  160. package/dist/views/List/Default/index.js +62 -58
  161. package/dist/views/List/Default/index.js.map +1 -1
  162. package/dist/views/List/Default/index.scss +136 -134
  163. package/dist/views/List/index.d.ts.map +1 -1
  164. package/dist/views/List/index.js +1 -0
  165. package/dist/views/List/index.js.map +1 -1
  166. package/dist/views/LivePreview/IFrame/index.scss +8 -6
  167. package/dist/views/LivePreview/Preview/index.scss +32 -30
  168. package/dist/views/LivePreview/Toolbar/Controls/index.scss +49 -47
  169. package/dist/views/LivePreview/Toolbar/SizeInput/index.scss +11 -9
  170. package/dist/views/LivePreview/Toolbar/index.scss +33 -31
  171. package/dist/views/LivePreview/ToolbarArea/index.scss +5 -3
  172. package/dist/views/LivePreview/index.client.d.ts.map +1 -1
  173. package/dist/views/LivePreview/index.client.js +214 -200
  174. package/dist/views/LivePreview/index.client.js.map +1 -1
  175. package/dist/views/LivePreview/index.scss +48 -46
  176. package/dist/views/LivePreview/usePopupWindow.js +119 -74
  177. package/dist/views/LivePreview/usePopupWindow.js.map +1 -1
  178. package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
  179. package/dist/views/Login/LoginForm/index.js +3 -3
  180. package/dist/views/Login/LoginForm/index.js.map +1 -1
  181. package/dist/views/Login/LoginForm/index.scss +8 -6
  182. package/dist/views/Login/index.scss +8 -6
  183. package/dist/views/Logout/LogoutClient.d.ts.map +1 -1
  184. package/dist/views/Logout/LogoutClient.js +77 -55
  185. package/dist/views/Logout/LogoutClient.js.map +1 -1
  186. package/dist/views/Logout/index.scss +17 -15
  187. package/dist/views/NotFound/index.d.ts +5 -5
  188. package/dist/views/NotFound/index.d.ts.map +1 -1
  189. package/dist/views/NotFound/index.js +4 -2
  190. package/dist/views/NotFound/index.js.map +1 -1
  191. package/dist/views/NotFound/index.scss +38 -36
  192. package/dist/views/ResetPassword/ResetPasswordForm/index.d.ts +7 -0
  193. package/dist/views/ResetPassword/ResetPasswordForm/index.d.ts.map +1 -0
  194. package/dist/views/ResetPassword/{index.client.js → ResetPasswordForm/index.js} +16 -19
  195. package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -0
  196. package/dist/views/ResetPassword/index.d.ts.map +1 -1
  197. package/dist/views/ResetPassword/index.js +17 -10
  198. package/dist/views/ResetPassword/index.js.map +1 -1
  199. package/dist/views/ResetPassword/index.scss +6 -26
  200. package/dist/views/Root/getViewFromConfig.d.ts.map +1 -1
  201. package/dist/views/Root/getViewFromConfig.js +1 -7
  202. package/dist/views/Root/getViewFromConfig.js.map +1 -1
  203. package/dist/views/Root/index.d.ts +5 -5
  204. package/dist/views/Root/index.d.ts.map +1 -1
  205. package/dist/views/Root/index.js +9 -4
  206. package/dist/views/Root/index.js.map +1 -1
  207. package/dist/views/Root/meta.d.ts +5 -5
  208. package/dist/views/Root/meta.d.ts.map +1 -1
  209. package/dist/views/Root/meta.js +3 -2
  210. package/dist/views/Root/meta.js.map +1 -1
  211. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  212. package/dist/views/Unauthorized/index.js +14 -7
  213. package/dist/views/Unauthorized/index.js.map +1 -1
  214. package/dist/views/Unauthorized/index.scss +4 -31
  215. package/dist/views/Verify/index.client.d.ts +7 -0
  216. package/dist/views/Verify/index.client.d.ts.map +1 -0
  217. package/dist/views/Verify/index.client.js +46 -0
  218. package/dist/views/Verify/index.client.js.map +1 -0
  219. package/dist/views/Verify/index.d.ts.map +1 -1
  220. package/dist/views/Verify/index.js +12 -11
  221. package/dist/views/Verify/index.js.map +1 -1
  222. package/dist/views/Verify/index.scss +13 -11
  223. package/dist/views/Version/Default/index.d.ts.map +1 -1
  224. package/dist/views/Version/Default/index.js +2 -0
  225. package/dist/views/Version/Default/index.js.map +1 -1
  226. package/dist/views/Version/Default/index.scss +52 -50
  227. package/dist/views/Version/RenderFieldsToDiff/Label/index.scss +5 -3
  228. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.scss +29 -27
  229. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.scss +11 -9
  230. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.scss +12 -10
  231. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.scss +12 -10
  232. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.scss +12 -10
  233. package/dist/views/Version/RenderFieldsToDiff/index.scss +12 -10
  234. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  235. package/dist/views/Version/Restore/index.js +8 -14
  236. package/dist/views/Version/Restore/index.js.map +1 -1
  237. package/dist/views/Version/Restore/index.scss +57 -55
  238. package/dist/views/Version/SelectComparison/index.d.ts.map +1 -1
  239. package/dist/views/Version/SelectComparison/index.js +24 -3
  240. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  241. package/dist/views/Version/SelectComparison/index.scss +12 -10
  242. package/dist/views/Version/SelectComparison/types.d.ts +1 -0
  243. package/dist/views/Version/SelectComparison/types.d.ts.map +1 -1
  244. package/dist/views/Version/SelectComparison/types.js.map +1 -1
  245. package/dist/views/Version/SelectLocales/index.scss +6 -4
  246. package/dist/views/Version/index.d.ts.map +1 -1
  247. package/dist/views/Version/index.js +2 -0
  248. package/dist/views/Version/index.js.map +1 -1
  249. package/dist/views/Versions/buildColumns.d.ts.map +1 -1
  250. package/dist/views/Versions/buildColumns.js +63 -48
  251. package/dist/views/Versions/buildColumns.js.map +1 -1
  252. package/dist/views/Versions/cells/AutosaveCell/index.d.ts.map +1 -1
  253. package/dist/views/Versions/cells/AutosaveCell/index.js +48 -20
  254. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  255. package/dist/views/Versions/getLatestVersion.d.ts +1 -0
  256. package/dist/views/Versions/getLatestVersion.d.ts.map +1 -1
  257. package/dist/views/Versions/getLatestVersion.js +14 -3
  258. package/dist/views/Versions/getLatestVersion.js.map +1 -1
  259. package/dist/views/Versions/index.d.ts.map +1 -1
  260. package/dist/views/Versions/index.js +30 -7
  261. package/dist/views/Versions/index.js.map +1 -1
  262. package/dist/views/Versions/index.scss +78 -76
  263. package/dist/withPayload.d.ts.map +1 -1
  264. package/dist/withPayload.js +4 -4
  265. package/dist/withPayload.js.map +1 -1
  266. package/package.json +24 -16
  267. package/dist/cjs/withPayload.js +0 -111
  268. package/dist/cjs/withPayload.js.map +0 -1
  269. package/dist/views/ResetPassword/index.client.d.ts +0 -7
  270. package/dist/views/ResetPassword/index.client.d.ts.map +0 -1
  271. package/dist/views/ResetPassword/index.client.js.map +0 -1
@@ -1,66 +1,78 @@
1
1
  @import '../../scss/styles.scss';
2
2
 
3
- .template-default {
4
- background-color: var(--theme-bg);
5
- color: var(--theme-text);
3
+ @layer payload-default {
4
+ .template-default {
5
+ background-color: var(--theme-bg);
6
+ color: var(--theme-text);
6
7
 
7
- [dir='rtl'] &__nav-toggler-wrapper {
8
- left: unset;
9
- right: 0;
10
- }
8
+ [dir='rtl'] &__nav-toggler-wrapper {
9
+ left: unset;
10
+ right: 0;
11
+ }
11
12
 
12
- &__nav-toggler-wrapper {
13
- position: fixed;
14
- z-index: var(--z-modal);
15
- top: 0;
16
- left: 0;
17
- height: var(--app-header-height);
18
- width: var(--gutter-h);
19
- display: flex;
20
- align-items: center;
21
- justify-content: center;
22
- }
13
+ &__nav-toggler-wrapper {
14
+ position: sticky;
15
+ z-index: var(--z-modal);
16
+ top: 0;
17
+ left: 0;
18
+ height: 0;
19
+ width: var(--gutter-h);
20
+ display: flex;
21
+ justify-content: center;
22
+ }
23
23
 
24
- &__wrap {
25
- min-width: 0;
26
- width: 100%;
27
- flex-grow: 1;
28
- position: relative;
29
- background-color: var(--theme-bg);
30
- &:before {
31
- content: '';
32
- display: block;
33
- position: absolute;
34
- inset: 0;
35
- background-color: inherit;
36
- opacity: 0;
37
- z-index: var(--z-status);
38
- visibility: hidden;
39
- transition: all var(--nav-trans-time) linear;
24
+ &__nav-toggler-container {
25
+ height: var(--app-header-height);
26
+ display: flex;
27
+ align-items: center;
40
28
  }
41
- }
42
29
 
43
- @include mid-break {
44
- &__nav-toggler-wrapper {
45
- .hamburger {
46
- left: unset;
47
- }
30
+ &__nav-toggler {
31
+ display: flex;
32
+ align-items: center;
48
33
  }
49
- }
50
34
 
51
- @include small-break {
52
- &__nav-toggler-wrapper {
53
- width: unset;
54
- justify-content: unset;
35
+ &__wrap {
36
+ min-width: 0;
37
+ width: 100%;
38
+ flex-grow: 1;
39
+ position: relative;
40
+ background-color: var(--theme-bg);
41
+ &:before {
42
+ content: '';
43
+ display: block;
44
+ position: absolute;
45
+ inset: 0;
46
+ background-color: inherit;
47
+ opacity: 0;
48
+ z-index: var(--z-status);
49
+ visibility: hidden;
50
+ transition: all var(--nav-trans-time) linear;
51
+ }
52
+ }
55
53
 
56
- .hamburger {
57
- display: none;
54
+ @include mid-break {
55
+ &__nav-toggler-wrapper {
56
+ .hamburger {
57
+ left: unset;
58
+ }
58
59
  }
59
60
  }
60
61
 
61
- .template-default {
62
- &__wrap {
63
- min-width: 100%;
62
+ @include small-break {
63
+ &__nav-toggler-wrapper {
64
+ width: unset;
65
+ justify-content: unset;
66
+
67
+ .hamburger {
68
+ display: none;
69
+ }
70
+ }
71
+
72
+ .template-default {
73
+ &__wrap {
74
+ min-width: 100%;
75
+ }
64
76
  }
65
77
  }
66
78
  }
@@ -1,28 +1,30 @@
1
1
  @import '../../scss/styles';
2
2
 
3
- .template-minimal {
4
- display: flex;
5
- width: 100%;
6
- justify-content: center;
7
- align-items: center;
8
- padding: base(3) $baseline;
9
- margin-left: auto;
10
- margin-right: auto;
11
- min-height: 100%;
12
- background-color: var(--theme-bg-color);
13
- color: var(--theme-text);
3
+ @layer payload-default {
4
+ .template-minimal {
5
+ display: flex;
6
+ width: 100%;
7
+ justify-content: center;
8
+ align-items: center;
9
+ padding: base(3) $baseline;
10
+ margin-left: auto;
11
+ margin-right: auto;
12
+ min-height: 100%;
13
+ background-color: var(--theme-bg-color);
14
+ color: var(--theme-text);
14
15
 
15
- &--width-normal {
16
- .template-minimal__wrap {
17
- max-width: base(24);
18
- width: 100%;
16
+ &--width-normal {
17
+ .template-minimal__wrap {
18
+ max-width: base(24);
19
+ width: 100%;
20
+ }
19
21
  }
20
- }
21
22
 
22
- &--width-wide {
23
- .template-minimal__wrap {
24
- max-width: base(48);
25
- width: 100%;
23
+ &--width-wide {
24
+ .template-minimal__wrap {
25
+ max-width: base(48);
26
+ width: 100%;
27
+ }
26
28
  }
27
29
  }
28
30
  }
@@ -14,8 +14,8 @@ export const getNextRequestI18n = async ({
14
14
  context: 'client',
15
15
  language: getRequestLanguage({
16
16
  config,
17
- cookies: cookies(),
18
- headers: headers()
17
+ cookies: await cookies(),
18
+ headers: await headers()
19
19
  })
20
20
  });
21
21
  };
@@ -1 +1 @@
1
- {"version":3,"file":"getNextRequestI18n.js","names":["initI18n","cookies","headers","getRequestLanguage","getNextRequestI18n","config","i18n","context","language"],"sources":["../../src/utilities/getNextRequestI18n.ts"],"sourcesContent":["import type { ClientTranslationsObject, I18nClient } from '@payloadcms/translations'\nimport type { SanitizedConfig } from 'payload'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { cookies, headers } from 'next/headers.js'\n\nimport { getRequestLanguage } from './getRequestLanguage.js'\n\n/**\n * In the context of Next.js, this function initializes the i18n object for the current request.\n *\n * It must be called on the server side, and within the lifecycle of a request since it relies on the request headers and cookies.\n */\nexport const getNextRequestI18n = async <\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n TAdditionalTranslations = {},\n TAdditionalClientTranslationKeys extends string = never,\n>({\n config,\n}: {\n config: SanitizedConfig\n}): Promise<\n [TAdditionalClientTranslationKeys] extends [never]\n ? I18nClient\n : TAdditionalTranslations extends object\n ? I18nClient<TAdditionalTranslations, TAdditionalClientTranslationKeys>\n : I18nClient<ClientTranslationsObject, TAdditionalClientTranslationKeys>\n> => {\n return (await initI18n({\n config: config.i18n,\n context: 'client',\n language: getRequestLanguage({ config, cookies: cookies(), headers: headers() }),\n })) as any\n}\n"],"mappings":"AAGA,SAASA,QAAQ,QAAQ;AACzB,SAASC,OAAO,EAAEC,OAAO,QAAQ;AAEjC,SAASC,kBAAkB,QAAQ;AAEnC;;;;;AAKA,OAAO,MAAMC,kBAAA,GAAqB,MAAAA,CAIhC;EACAC;AAAM,CAGP;EAOC,OAAQ,MAAML,QAAA,CAAS;IACrBK,MAAA,EAAQA,MAAA,CAAOC,IAAI;IACnBC,OAAA,EAAS;IACTC,QAAA,EAAUL,kBAAA,CAAmB;MAAEE,MAAA;MAAQJ,OAAA,EAASA,OAAA;MAAWC,OAAA,EAASA,OAAA;IAAU;EAChF;AACF","ignoreList":[]}
1
+ {"version":3,"file":"getNextRequestI18n.js","names":["initI18n","cookies","headers","getRequestLanguage","getNextRequestI18n","config","i18n","context","language"],"sources":["../../src/utilities/getNextRequestI18n.ts"],"sourcesContent":["import type { ClientTranslationsObject, I18nClient } from '@payloadcms/translations'\nimport type { SanitizedConfig } from 'payload'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { cookies, headers } from 'next/headers.js'\n\nimport { getRequestLanguage } from './getRequestLanguage.js'\n\n/**\n * In the context of Next.js, this function initializes the i18n object for the current request.\n *\n * It must be called on the server side, and within the lifecycle of a request since it relies on the request headers and cookies.\n */\nexport const getNextRequestI18n = async <\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n TAdditionalTranslations = {},\n TAdditionalClientTranslationKeys extends string = never,\n>({\n config,\n}: {\n config: SanitizedConfig\n}): Promise<\n [TAdditionalClientTranslationKeys] extends [never]\n ? I18nClient\n : TAdditionalTranslations extends object\n ? I18nClient<TAdditionalTranslations, TAdditionalClientTranslationKeys>\n : I18nClient<ClientTranslationsObject, TAdditionalClientTranslationKeys>\n> => {\n return (await initI18n({\n config: config.i18n,\n context: 'client',\n language: getRequestLanguage({ config, cookies: await cookies(), headers: await headers() }),\n })) as any\n}\n"],"mappings":"AAGA,SAASA,QAAQ,QAAQ;AACzB,SAASC,OAAO,EAAEC,OAAO,QAAQ;AAEjC,SAASC,kBAAkB,QAAQ;AAEnC;;;;;AAKA,OAAO,MAAMC,kBAAA,GAAqB,MAAAA,CAIhC;EACAC;AAAM,CAGP;EAOC,OAAQ,MAAML,QAAA,CAAS;IACrBK,MAAA,EAAQA,MAAA,CAAOC,IAAI;IACnBC,OAAA,EAAS;IACTC,QAAA,EAAUL,kBAAA,CAAmB;MAAEE,MAAA;MAAQJ,OAAA,EAAS,MAAMA,OAAA;MAAWC,OAAA,EAAS,MAAMA,OAAA;IAAU;EAC5F;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"getRequestTheme.d.ts","sourceRoot":"","sources":["../../src/utilities/getRequestTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAA;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,EAAgB,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEzD,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,sBAAsB,CAAA;IACrD,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;CAC5B,CAAA;AAID,eAAO,MAAM,eAAe,iCAAkC,sBAAsB,KAAG,KAkBtF,CAAA"}
1
+ {"version":3,"file":"getRequestTheme.d.ts","sourceRoot":"","sources":["../../src/utilities/getRequestTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAA;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,EAAgB,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEzD,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,sBAAsB,CAAA;IACrD,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;CAC5B,CAAA;AAID,eAAO,MAAM,eAAe,iCAAkC,sBAAsB,KAAG,KAsBtF,CAAA"}
@@ -5,6 +5,9 @@ export const getRequestTheme = ({
5
5
  cookies,
6
6
  headers
7
7
  }) => {
8
+ if (config.admin.theme !== 'all' && acceptedThemes.includes(config.admin.theme)) {
9
+ return config.admin.theme;
10
+ }
8
11
  const themeCookie = cookies.get(`${config.cookiePrefix || 'payload'}-theme`);
9
12
  const themeFromCookie = typeof themeCookie === 'string' ? themeCookie : themeCookie?.value;
10
13
  if (themeFromCookie && acceptedThemes.includes(themeFromCookie)) {
@@ -1 +1 @@
1
- {"version":3,"file":"getRequestTheme.js","names":["defaultTheme","acceptedThemes","getRequestTheme","config","cookies","headers","themeCookie","get","cookiePrefix","themeFromCookie","value","includes","themeFromHeader"],"sources":["../../src/utilities/getRequestTheme.ts"],"sourcesContent":["import type { ReadonlyRequestCookies } from 'next/dist/server/web/spec-extension/adapters/request-cookies.js'\nimport type { SanitizedConfig } from 'payload'\n\nimport { defaultTheme, type Theme } from '@payloadcms/ui'\n\ntype GetRequestLanguageArgs = {\n config: SanitizedConfig\n cookies: Map<string, string> | ReadonlyRequestCookies\n headers: Request['headers']\n}\n\nconst acceptedThemes: Theme[] = ['dark', 'light']\n\nexport const getRequestTheme = ({ config, cookies, headers }: GetRequestLanguageArgs): Theme => {\n const themeCookie = cookies.get(`${config.cookiePrefix || 'payload'}-theme`)\n\n const themeFromCookie: Theme = (\n typeof themeCookie === 'string' ? themeCookie : themeCookie?.value\n ) as Theme\n\n if (themeFromCookie && acceptedThemes.includes(themeFromCookie)) {\n return themeFromCookie\n }\n\n const themeFromHeader = headers.get('Sec-CH-Prefers-Color-Scheme') as Theme\n\n if (themeFromHeader && acceptedThemes.includes(themeFromHeader)) {\n return themeFromHeader\n }\n\n return defaultTheme\n}\n"],"mappings":"AAGA,SAASA,YAAY,QAAoB;AAQzC,MAAMC,cAAA,GAA0B,CAAC,QAAQ,QAAQ;AAEjD,OAAO,MAAMC,eAAA,GAAkBA,CAAC;EAAEC,MAAM;EAAEC,OAAO;EAAEC;AAAO,CAA0B;EAClF,MAAMC,WAAA,GAAcF,OAAA,CAAQG,GAAG,CAAC,GAAGJ,MAAA,CAAOK,YAAY,IAAI,iBAAiB;EAE3E,MAAMC,eAAA,GACJ,OAAOH,WAAA,KAAgB,WAAWA,WAAA,GAAcA,WAAA,EAAaI,KAAA;EAG/D,IAAID,eAAA,IAAmBR,cAAA,CAAeU,QAAQ,CAACF,eAAA,GAAkB;IAC/D,OAAOA,eAAA;EACT;EAEA,MAAMG,eAAA,GAAkBP,OAAA,CAAQE,GAAG,CAAC;EAEpC,IAAIK,eAAA,IAAmBX,cAAA,CAAeU,QAAQ,CAACC,eAAA,GAAkB;IAC/D,OAAOA,eAAA;EACT;EAEA,OAAOZ,YAAA;AACT","ignoreList":[]}
1
+ {"version":3,"file":"getRequestTheme.js","names":["defaultTheme","acceptedThemes","getRequestTheme","config","cookies","headers","admin","theme","includes","themeCookie","get","cookiePrefix","themeFromCookie","value","themeFromHeader"],"sources":["../../src/utilities/getRequestTheme.ts"],"sourcesContent":["import type { ReadonlyRequestCookies } from 'next/dist/server/web/spec-extension/adapters/request-cookies.js'\nimport type { SanitizedConfig } from 'payload'\n\nimport { defaultTheme, type Theme } from '@payloadcms/ui'\n\ntype GetRequestLanguageArgs = {\n config: SanitizedConfig\n cookies: Map<string, string> | ReadonlyRequestCookies\n headers: Request['headers']\n}\n\nconst acceptedThemes: Theme[] = ['dark', 'light']\n\nexport const getRequestTheme = ({ config, cookies, headers }: GetRequestLanguageArgs): Theme => {\n if (config.admin.theme !== 'all' && acceptedThemes.includes(config.admin.theme)) {\n return config.admin.theme\n }\n\n const themeCookie = cookies.get(`${config.cookiePrefix || 'payload'}-theme`)\n\n const themeFromCookie: Theme = (\n typeof themeCookie === 'string' ? themeCookie : themeCookie?.value\n ) as Theme\n\n if (themeFromCookie && acceptedThemes.includes(themeFromCookie)) {\n return themeFromCookie\n }\n\n const themeFromHeader = headers.get('Sec-CH-Prefers-Color-Scheme') as Theme\n\n if (themeFromHeader && acceptedThemes.includes(themeFromHeader)) {\n return themeFromHeader\n }\n\n return defaultTheme\n}\n"],"mappings":"AAGA,SAASA,YAAY,QAAoB;AAQzC,MAAMC,cAAA,GAA0B,CAAC,QAAQ,QAAQ;AAEjD,OAAO,MAAMC,eAAA,GAAkBA,CAAC;EAAEC,MAAM;EAAEC,OAAO;EAAEC;AAAO,CAA0B;EAClF,IAAIF,MAAA,CAAOG,KAAK,CAACC,KAAK,KAAK,SAASN,cAAA,CAAeO,QAAQ,CAACL,MAAA,CAAOG,KAAK,CAACC,KAAK,GAAG;IAC/E,OAAOJ,MAAA,CAAOG,KAAK,CAACC,KAAK;EAC3B;EAEA,MAAME,WAAA,GAAcL,OAAA,CAAQM,GAAG,CAAC,GAAGP,MAAA,CAAOQ,YAAY,IAAI,iBAAiB;EAE3E,MAAMC,eAAA,GACJ,OAAOH,WAAA,KAAgB,WAAWA,WAAA,GAAcA,WAAA,EAAaI,KAAA;EAG/D,IAAID,eAAA,IAAmBX,cAAA,CAAeO,QAAQ,CAACI,eAAA,GAAkB;IAC/D,OAAOA,eAAA;EACT;EAEA,MAAME,eAAA,GAAkBT,OAAA,CAAQK,GAAG,CAAC;EAEpC,IAAII,eAAA,IAAmBb,cAAA,CAAeO,QAAQ,CAACM,eAAA,GAAkB;IAC/D,OAAOA,eAAA;EACT;EAEA,OAAOd,YAAA;AACT","ignoreList":[]}
@@ -1,16 +1,17 @@
1
- import type { Permissions, SanitizedCollectionConfig, SanitizedConfig, SanitizedGlobalConfig } from 'payload';
2
- export declare const handleAdminPage: ({ adminRoute, config, permissions, route, }: {
1
+ import type { Payload, SanitizedCollectionConfig, SanitizedConfig, SanitizedGlobalConfig } from 'payload';
2
+ type Args = {
3
3
  adminRoute: string;
4
4
  config: SanitizedConfig;
5
- permissions: Permissions;
5
+ defaultIDType: Payload['db']['defaultIDType'];
6
6
  route: string;
7
- }) => {
8
- collectionConfig: SanitizedCollectionConfig;
9
- docID: string;
10
- globalConfig: SanitizedGlobalConfig;
11
- } | {
12
- collectionConfig?: undefined;
13
- docID?: undefined;
14
- globalConfig?: undefined;
15
7
  };
8
+ type RouteInfo = {
9
+ collectionConfig?: SanitizedCollectionConfig;
10
+ collectionSlug?: string;
11
+ docID?: number | string;
12
+ globalConfig?: SanitizedGlobalConfig;
13
+ globalSlug?: string;
14
+ };
15
+ export declare function getRouteInfo({ adminRoute, config, defaultIDType, route }: Args): RouteInfo;
16
+ export {};
16
17
  //# sourceMappingURL=handleAdminPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handleAdminPage.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/handleAdminPage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAMhB,eAAO,MAAM,eAAe,gDAKzB;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,eAAe,CAAA;IACvB,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;CACd;;;;;;;;CAwCA,CAAA"}
1
+ {"version":3,"file":"handleAdminPage.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/handleAdminPage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAIhB,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,eAAe,CAAA;IACvB,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IAC7C,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,SAAS,GAAG;IACf,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAgB,YAAY,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,IAAI,GAAG,SAAS,CAoC1F"}
@@ -1,11 +1,10 @@
1
- import { notFound } from 'next/navigation.js';
2
- import { getRouteWithoutAdmin, isAdminAuthRoute, isAdminRoute } from './shared.js';
3
- export const handleAdminPage = ({
1
+ import { getRouteWithoutAdmin, isAdminRoute } from './shared.js';
2
+ export function getRouteInfo({
4
3
  adminRoute,
5
4
  config,
6
- permissions,
5
+ defaultIDType,
7
6
  route
8
- }) => {
7
+ }) {
9
8
  if (isAdminRoute({
10
9
  adminRoute,
11
10
  config,
@@ -19,34 +18,23 @@ export const handleAdminPage = ({
19
18
  const [entityType, entitySlug, createOrID] = routeSegments;
20
19
  const collectionSlug = entityType === 'collections' ? entitySlug : undefined;
21
20
  const globalSlug = entityType === 'globals' ? entitySlug : undefined;
22
- const docID = collectionSlug && createOrID !== 'create' ? createOrID : undefined;
21
+ const docID = collectionSlug && createOrID !== 'create' ? defaultIDType === 'number' ? Number(createOrID) : createOrID : undefined;
23
22
  let collectionConfig;
24
23
  let globalConfig;
25
24
  if (collectionSlug) {
26
25
  collectionConfig = config.collections.find(collection => collection.slug === collectionSlug);
27
- if (!collectionConfig) {
28
- notFound();
29
- }
30
26
  }
31
27
  if (globalSlug) {
32
28
  globalConfig = config.globals.find(global => global.slug === globalSlug);
33
- if (!globalConfig) {
34
- notFound();
35
- }
36
- }
37
- if (!permissions.canAccessAdmin && !isAdminAuthRoute({
38
- adminRoute,
39
- config,
40
- route
41
- })) {
42
- notFound();
43
29
  }
44
30
  return {
45
31
  collectionConfig,
32
+ collectionSlug,
46
33
  docID,
47
- globalConfig
34
+ globalConfig,
35
+ globalSlug
48
36
  };
49
37
  }
50
38
  return {};
51
- };
39
+ }
52
40
  //# sourceMappingURL=handleAdminPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handleAdminPage.js","names":["notFound","getRouteWithoutAdmin","isAdminAuthRoute","isAdminRoute","handleAdminPage","adminRoute","config","permissions","route","routeWithoutAdmin","routeSegments","split","filter","Boolean","entityType","entitySlug","createOrID","collectionSlug","undefined","globalSlug","docID","collectionConfig","globalConfig","collections","find","collection","slug","globals","global","canAccessAdmin"],"sources":["../../../src/utilities/initPage/handleAdminPage.ts"],"sourcesContent":["import type {\n Permissions,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n} from 'payload'\n\nimport { notFound } from 'next/navigation.js'\n\nimport { getRouteWithoutAdmin, isAdminAuthRoute, isAdminRoute } from './shared.js'\n\nexport const handleAdminPage = ({\n adminRoute,\n config,\n permissions,\n route,\n}: {\n adminRoute: string\n config: SanitizedConfig\n permissions: Permissions\n route: string\n}) => {\n if (isAdminRoute({ adminRoute, config, route })) {\n const routeWithoutAdmin = getRouteWithoutAdmin({ adminRoute, route })\n const routeSegments = routeWithoutAdmin.split('/').filter(Boolean)\n const [entityType, entitySlug, createOrID] = routeSegments\n const collectionSlug = entityType === 'collections' ? entitySlug : undefined\n const globalSlug = entityType === 'globals' ? entitySlug : undefined\n const docID = collectionSlug && createOrID !== 'create' ? createOrID : undefined\n\n let collectionConfig: SanitizedCollectionConfig | undefined\n let globalConfig: SanitizedGlobalConfig | undefined\n\n if (collectionSlug) {\n collectionConfig = config.collections.find((collection) => collection.slug === collectionSlug)\n\n if (!collectionConfig) {\n notFound()\n }\n }\n\n if (globalSlug) {\n globalConfig = config.globals.find((global) => global.slug === globalSlug)\n\n if (!globalConfig) {\n notFound()\n }\n }\n\n if (!permissions.canAccessAdmin && !isAdminAuthRoute({ adminRoute, config, route })) {\n notFound()\n }\n\n return {\n collectionConfig,\n docID,\n globalConfig,\n }\n }\n\n return {}\n}\n"],"mappings":"AAOA,SAASA,QAAQ,QAAQ;AAEzB,SAASC,oBAAoB,EAAEC,gBAAgB,EAAEC,YAAY,QAAQ;AAErE,OAAO,MAAMC,eAAA,GAAkBA,CAAC;EAC9BC,UAAU;EACVC,MAAM;EACNC,WAAW;EACXC;AAAK,CAMN;EACC,IAAIL,YAAA,CAAa;IAAEE,UAAA;IAAYC,MAAA;IAAQE;EAAM,IAAI;IAC/C,MAAMC,iBAAA,GAAoBR,oBAAA,CAAqB;MAAEI,UAAA;MAAYG;IAAM;IACnE,MAAME,aAAA,GAAgBD,iBAAA,CAAkBE,KAAK,CAAC,KAAKC,MAAM,CAACC,OAAA;IAC1D,MAAM,CAACC,UAAA,EAAYC,UAAA,EAAYC,UAAA,CAAW,GAAGN,aAAA;IAC7C,MAAMO,cAAA,GAAiBH,UAAA,KAAe,gBAAgBC,UAAA,GAAaG,SAAA;IACnE,MAAMC,UAAA,GAAaL,UAAA,KAAe,YAAYC,UAAA,GAAaG,SAAA;IAC3D,MAAME,KAAA,GAAQH,cAAA,IAAkBD,UAAA,KAAe,WAAWA,UAAA,GAAaE,SAAA;IAEvE,IAAIG,gBAAA;IACJ,IAAIC,YAAA;IAEJ,IAAIL,cAAA,EAAgB;MAClBI,gBAAA,GAAmBf,MAAA,CAAOiB,WAAW,CAACC,IAAI,CAAEC,UAAA,IAAeA,UAAA,CAAWC,IAAI,KAAKT,cAAA;MAE/E,IAAI,CAACI,gBAAA,EAAkB;QACrBrB,QAAA;MACF;IACF;IAEA,IAAImB,UAAA,EAAY;MACdG,YAAA,GAAehB,MAAA,CAAOqB,OAAO,CAACH,IAAI,CAAEI,MAAA,IAAWA,MAAA,CAAOF,IAAI,KAAKP,UAAA;MAE/D,IAAI,CAACG,YAAA,EAAc;QACjBtB,QAAA;MACF;IACF;IAEA,IAAI,CAACO,WAAA,CAAYsB,cAAc,IAAI,CAAC3B,gBAAA,CAAiB;MAAEG,UAAA;MAAYC,MAAA;MAAQE;IAAM,IAAI;MACnFR,QAAA;IACF;IAEA,OAAO;MACLqB,gBAAA;MACAD,KAAA;MACAE;IACF;EACF;EAEA,OAAO,CAAC;AACV","ignoreList":[]}
1
+ {"version":3,"file":"handleAdminPage.js","names":["getRouteWithoutAdmin","isAdminRoute","getRouteInfo","adminRoute","config","defaultIDType","route","routeWithoutAdmin","routeSegments","split","filter","Boolean","entityType","entitySlug","createOrID","collectionSlug","undefined","globalSlug","docID","Number","collectionConfig","globalConfig","collections","find","collection","slug","globals","global"],"sources":["../../../src/utilities/initPage/handleAdminPage.ts"],"sourcesContent":["import type {\n Payload,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n} from 'payload'\n\nimport { getRouteWithoutAdmin, isAdminRoute } from './shared.js'\n\ntype Args = {\n adminRoute: string\n config: SanitizedConfig\n defaultIDType: Payload['db']['defaultIDType']\n route: string\n}\n\ntype RouteInfo = {\n collectionConfig?: SanitizedCollectionConfig\n collectionSlug?: string\n docID?: number | string\n globalConfig?: SanitizedGlobalConfig\n globalSlug?: string\n}\n\nexport function getRouteInfo({ adminRoute, config, defaultIDType, route }: Args): RouteInfo {\n if (isAdminRoute({ adminRoute, config, route })) {\n const routeWithoutAdmin = getRouteWithoutAdmin({ adminRoute, route })\n const routeSegments = routeWithoutAdmin.split('/').filter(Boolean)\n const [entityType, entitySlug, createOrID] = routeSegments\n const collectionSlug = entityType === 'collections' ? entitySlug : undefined\n const globalSlug = entityType === 'globals' ? entitySlug : undefined\n\n const docID =\n collectionSlug && createOrID !== 'create'\n ? defaultIDType === 'number'\n ? Number(createOrID)\n : createOrID\n : undefined\n\n let collectionConfig: SanitizedCollectionConfig | undefined\n let globalConfig: SanitizedGlobalConfig | undefined\n\n if (collectionSlug) {\n collectionConfig = config.collections.find((collection) => collection.slug === collectionSlug)\n }\n\n if (globalSlug) {\n globalConfig = config.globals.find((global) => global.slug === globalSlug)\n }\n\n return {\n collectionConfig,\n collectionSlug,\n docID,\n globalConfig,\n globalSlug,\n }\n }\n\n return {}\n}\n"],"mappings":"AAOA,SAASA,oBAAoB,EAAEC,YAAY,QAAQ;AAiBnD,OAAO,SAASC,aAAa;EAAEC,UAAU;EAAEC,MAAM;EAAEC,aAAa;EAAEC;AAAK,CAAQ;EAC7E,IAAIL,YAAA,CAAa;IAAEE,UAAA;IAAYC,MAAA;IAAQE;EAAM,IAAI;IAC/C,MAAMC,iBAAA,GAAoBP,oBAAA,CAAqB;MAAEG,UAAA;MAAYG;IAAM;IACnE,MAAME,aAAA,GAAgBD,iBAAA,CAAkBE,KAAK,CAAC,KAAKC,MAAM,CAACC,OAAA;IAC1D,MAAM,CAACC,UAAA,EAAYC,UAAA,EAAYC,UAAA,CAAW,GAAGN,aAAA;IAC7C,MAAMO,cAAA,GAAiBH,UAAA,KAAe,gBAAgBC,UAAA,GAAaG,SAAA;IACnE,MAAMC,UAAA,GAAaL,UAAA,KAAe,YAAYC,UAAA,GAAaG,SAAA;IAE3D,MAAME,KAAA,GACJH,cAAA,IAAkBD,UAAA,KAAe,WAC7BT,aAAA,KAAkB,WAChBc,MAAA,CAAOL,UAAA,IACPA,UAAA,GACFE,SAAA;IAEN,IAAII,gBAAA;IACJ,IAAIC,YAAA;IAEJ,IAAIN,cAAA,EAAgB;MAClBK,gBAAA,GAAmBhB,MAAA,CAAOkB,WAAW,CAACC,IAAI,CAAEC,UAAA,IAAeA,UAAA,CAAWC,IAAI,KAAKV,cAAA;IACjF;IAEA,IAAIE,UAAA,EAAY;MACdI,YAAA,GAAejB,MAAA,CAAOsB,OAAO,CAACH,IAAI,CAAEI,MAAA,IAAWA,MAAA,CAAOF,IAAI,KAAKR,UAAA;IACjE;IAEA,OAAO;MACLG,gBAAA;MACAL,cAAA;MACAG,KAAA;MACAG,YAAA;MACAJ;IACF;EACF;EAEA,OAAO,CAAC;AACV","ignoreList":[]}
@@ -1,9 +1,12 @@
1
- export declare const handleAuthRedirect: ({ config, redirectUnauthenticatedUser, route, searchParams, }: {
1
+ import type { User } from 'payload';
2
+ type Args = {
2
3
  config: any;
3
- redirectUnauthenticatedUser: boolean | string;
4
4
  route: string;
5
5
  searchParams: {
6
6
  [key: string]: string | string[];
7
7
  };
8
- }) => void;
8
+ user?: User;
9
+ };
10
+ export declare const handleAuthRedirect: ({ config, route, searchParams, user }: Args) => string;
11
+ export {};
9
12
  //# sourceMappingURL=handleAuthRedirect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handleAuthRedirect.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/handleAuthRedirect.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB,kEAK5B;IACD,MAAM,MAAA;IACN,2BAA2B,EAAE,OAAO,GAAG,MAAM,CAAA;IAC7C,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CACnD,SAwCA,CAAA"}
1
+ {"version":3,"file":"handleAuthRedirect.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/handleAuthRedirect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAKnC,KAAK,IAAI,GAAG;IACV,MAAM,MAAA;IACN,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;IAClD,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,CAAA;AACD,eAAO,MAAM,kBAAkB,0CAA2C,IAAI,KAAG,MAkChF,CAAA"}
@@ -1,54 +1,41 @@
1
1
  import { formatAdminURL } from '@payloadcms/ui/shared';
2
- import { redirect } from 'next/navigation.js';
3
2
  import * as qs from 'qs-esm';
4
- import { isAdminAuthRoute, isAdminRoute } from './shared.js';
5
3
  export const handleAuthRedirect = ({
6
4
  config,
7
- redirectUnauthenticatedUser,
8
5
  route,
9
- searchParams
6
+ searchParams,
7
+ user
10
8
  }) => {
11
9
  const {
12
10
  admin: {
13
11
  routes: {
14
- login: loginRouteFromConfig
12
+ login: loginRouteFromConfig,
13
+ unauthorized: unauthorizedRoute
15
14
  }
16
15
  },
17
16
  routes: {
18
17
  admin: adminRoute
19
18
  }
20
19
  } = config;
21
- if (!isAdminAuthRoute({
22
- adminRoute,
23
- config,
24
- route
25
- })) {
26
- if (searchParams && 'redirect' in searchParams) {
27
- delete searchParams.redirect;
28
- }
29
- const redirectRoute = encodeURIComponent(route + Object.keys(searchParams ?? {}).length ? `${qs.stringify(searchParams, {
30
- addQueryPrefix: true
31
- })}` : undefined);
32
- const adminLoginRoute = formatAdminURL({
33
- adminRoute,
34
- path: loginRouteFromConfig
35
- });
36
- const customLoginRoute = typeof redirectUnauthenticatedUser === 'string' ? redirectUnauthenticatedUser : undefined;
37
- const loginRoute = isAdminRoute({
38
- adminRoute,
39
- config,
40
- route
41
- }) ? adminLoginRoute : customLoginRoute || loginRouteFromConfig;
42
- const parsedLoginRouteSearchParams = qs.parse(loginRoute.split('?')[1] ?? '');
43
- const searchParamsWithRedirect = `${qs.stringify({
44
- ...parsedLoginRouteSearchParams,
45
- ...(redirectRoute ? {
46
- redirect: redirectRoute
47
- } : {})
48
- }, {
49
- addQueryPrefix: true
50
- })}`;
51
- redirect(`${loginRoute.split('?')[0]}${searchParamsWithRedirect}`);
20
+ if (searchParams && 'redirect' in searchParams) {
21
+ delete searchParams.redirect;
52
22
  }
23
+ const redirectRoute = encodeURIComponent(route + Object.keys(searchParams ?? {}).length ? `${qs.stringify(searchParams, {
24
+ addQueryPrefix: true
25
+ })}` : undefined);
26
+ const redirectTo = formatAdminURL({
27
+ adminRoute,
28
+ path: user ? unauthorizedRoute : loginRouteFromConfig
29
+ });
30
+ const parsedLoginRouteSearchParams = qs.parse(redirectTo.split('?')[1] ?? '');
31
+ const searchParamsWithRedirect = `${qs.stringify({
32
+ ...parsedLoginRouteSearchParams,
33
+ ...(redirectRoute ? {
34
+ redirect: redirectRoute
35
+ } : {})
36
+ }, {
37
+ addQueryPrefix: true
38
+ })}`;
39
+ return `${redirectTo.split('?')[0]}${searchParamsWithRedirect}`;
53
40
  };
54
41
  //# sourceMappingURL=handleAuthRedirect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handleAuthRedirect.js","names":["formatAdminURL","redirect","qs","isAdminAuthRoute","isAdminRoute","handleAuthRedirect","config","redirectUnauthenticatedUser","route","searchParams","admin","routes","login","loginRouteFromConfig","adminRoute","redirectRoute","encodeURIComponent","Object","keys","length","stringify","addQueryPrefix","undefined","adminLoginRoute","path","customLoginRoute","loginRoute","parsedLoginRouteSearchParams","parse","split","searchParamsWithRedirect"],"sources":["../../../src/utilities/initPage/handleAuthRedirect.ts"],"sourcesContent":["import { formatAdminURL } from '@payloadcms/ui/shared'\nimport { redirect } from 'next/navigation.js'\nimport * as qs from 'qs-esm'\n\nimport { isAdminAuthRoute, isAdminRoute } from './shared.js'\n\nexport const handleAuthRedirect = ({\n config,\n redirectUnauthenticatedUser,\n route,\n searchParams,\n}: {\n config\n redirectUnauthenticatedUser: boolean | string\n route: string\n searchParams: { [key: string]: string | string[] }\n}) => {\n const {\n admin: {\n routes: { login: loginRouteFromConfig },\n },\n routes: { admin: adminRoute },\n } = config\n\n if (!isAdminAuthRoute({ adminRoute, config, route })) {\n if (searchParams && 'redirect' in searchParams) {\n delete searchParams.redirect\n }\n\n const redirectRoute = encodeURIComponent(\n route + Object.keys(searchParams ?? {}).length\n ? `${qs.stringify(searchParams, { addQueryPrefix: true })}`\n : undefined,\n )\n\n const adminLoginRoute = formatAdminURL({ adminRoute, path: loginRouteFromConfig })\n\n const customLoginRoute =\n typeof redirectUnauthenticatedUser === 'string' ? redirectUnauthenticatedUser : undefined\n\n const loginRoute = isAdminRoute({ adminRoute, config, route })\n ? adminLoginRoute\n : customLoginRoute || loginRouteFromConfig\n\n const parsedLoginRouteSearchParams = qs.parse(loginRoute.split('?')[1] ?? '')\n\n const searchParamsWithRedirect = `${qs.stringify(\n {\n ...parsedLoginRouteSearchParams,\n ...(redirectRoute ? { redirect: redirectRoute } : {}),\n },\n { addQueryPrefix: true },\n )}`\n\n redirect(`${loginRoute.split('?')[0]}${searchParamsWithRedirect}`)\n }\n}\n"],"mappings":"AAAA,SAASA,cAAc,QAAQ;AAC/B,SAASC,QAAQ,QAAQ;AACzB,YAAYC,EAAA,MAAQ;AAEpB,SAASC,gBAAgB,EAAEC,YAAY,QAAQ;AAE/C,OAAO,MAAMC,kBAAA,GAAqBA,CAAC;EACjCC,MAAM;EACNC,2BAA2B;EAC3BC,KAAK;EACLC;AAAY,CAMb;EACC,MAAM;IACJC,KAAA,EAAO;MACLC,MAAA,EAAQ;QAAEC,KAAA,EAAOC;MAAoB;IAAE,CACxC;IACDF,MAAA,EAAQ;MAAED,KAAA,EAAOI;IAAU;EAAE,CAC9B,GAAGR,MAAA;EAEJ,IAAI,CAACH,gBAAA,CAAiB;IAAEW,UAAA;IAAYR,MAAA;IAAQE;EAAM,IAAI;IACpD,IAAIC,YAAA,IAAgB,cAAcA,YAAA,EAAc;MAC9C,OAAOA,YAAA,CAAaR,QAAQ;IAC9B;IAEA,MAAMc,aAAA,GAAgBC,kBAAA,CACpBR,KAAA,GAAQS,MAAA,CAAOC,IAAI,CAACT,YAAA,IAAgB,CAAC,GAAGU,MAAM,GAC1C,GAAGjB,EAAA,CAAGkB,SAAS,CAACX,YAAA,EAAc;MAAEY,cAAA,EAAgB;IAAK,IAAI,GACzDC,SAAA;IAGN,MAAMC,eAAA,GAAkBvB,cAAA,CAAe;MAAEc,UAAA;MAAYU,IAAA,EAAMX;IAAqB;IAEhF,MAAMY,gBAAA,GACJ,OAAOlB,2BAAA,KAAgC,WAAWA,2BAAA,GAA8Be,SAAA;IAElF,MAAMI,UAAA,GAAatB,YAAA,CAAa;MAAEU,UAAA;MAAYR,MAAA;MAAQE;IAAM,KACxDe,eAAA,GACAE,gBAAA,IAAoBZ,oBAAA;IAExB,MAAMc,4BAAA,GAA+BzB,EAAA,CAAG0B,KAAK,CAACF,UAAA,CAAWG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI;IAE1E,MAAMC,wBAAA,GAA2B,GAAG5B,EAAA,CAAGkB,SAAS,CAC9C;MACE,GAAGO,4BAA4B;MAC/B,IAAIZ,aAAA,GAAgB;QAAEd,QAAA,EAAUc;MAAc,IAAI,CAAC,CAAC;IACtD,GACA;MAAEM,cAAA,EAAgB;IAAK,IACtB;IAEHpB,QAAA,CAAS,GAAGyB,UAAA,CAAWG,KAAK,CAAC,IAAI,CAAC,EAAE,GAAGC,wBAAA,EAA0B;EACnE;AACF","ignoreList":[]}
1
+ {"version":3,"file":"handleAuthRedirect.js","names":["formatAdminURL","qs","handleAuthRedirect","config","route","searchParams","user","admin","routes","login","loginRouteFromConfig","unauthorized","unauthorizedRoute","adminRoute","redirect","redirectRoute","encodeURIComponent","Object","keys","length","stringify","addQueryPrefix","undefined","redirectTo","path","parsedLoginRouteSearchParams","parse","split","searchParamsWithRedirect"],"sources":["../../../src/utilities/initPage/handleAuthRedirect.ts"],"sourcesContent":["import type { User } from 'payload'\n\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport * as qs from 'qs-esm'\n\ntype Args = {\n config\n route: string\n searchParams: { [key: string]: string | string[] }\n user?: User\n}\nexport const handleAuthRedirect = ({ config, route, searchParams, user }: Args): string => {\n const {\n admin: {\n routes: { login: loginRouteFromConfig, unauthorized: unauthorizedRoute },\n },\n routes: { admin: adminRoute },\n } = config\n\n if (searchParams && 'redirect' in searchParams) {\n delete searchParams.redirect\n }\n\n const redirectRoute = encodeURIComponent(\n route + Object.keys(searchParams ?? {}).length\n ? `${qs.stringify(searchParams, { addQueryPrefix: true })}`\n : undefined,\n )\n\n const redirectTo = formatAdminURL({\n adminRoute,\n path: user ? unauthorizedRoute : loginRouteFromConfig,\n })\n\n const parsedLoginRouteSearchParams = qs.parse(redirectTo.split('?')[1] ?? '')\n\n const searchParamsWithRedirect = `${qs.stringify(\n {\n ...parsedLoginRouteSearchParams,\n ...(redirectRoute ? { redirect: redirectRoute } : {}),\n },\n { addQueryPrefix: true },\n )}`\n\n return `${redirectTo.split('?')[0]}${searchParamsWithRedirect}`\n}\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ;AAC/B,YAAYC,EAAA,MAAQ;AAQpB,OAAO,MAAMC,kBAAA,GAAqBA,CAAC;EAAEC,MAAM;EAAEC,KAAK;EAAEC,YAAY;EAAEC;AAAI,CAAQ;EAC5E,MAAM;IACJC,KAAA,EAAO;MACLC,MAAA,EAAQ;QAAEC,KAAA,EAAOC,oBAAoB;QAAEC,YAAA,EAAcC;MAAiB;IAAE,CACzE;IACDJ,MAAA,EAAQ;MAAED,KAAA,EAAOM;IAAU;EAAE,CAC9B,GAAGV,MAAA;EAEJ,IAAIE,YAAA,IAAgB,cAAcA,YAAA,EAAc;IAC9C,OAAOA,YAAA,CAAaS,QAAQ;EAC9B;EAEA,MAAMC,aAAA,GAAgBC,kBAAA,CACpBZ,KAAA,GAAQa,MAAA,CAAOC,IAAI,CAACb,YAAA,IAAgB,CAAC,GAAGc,MAAM,GAC1C,GAAGlB,EAAA,CAAGmB,SAAS,CAACf,YAAA,EAAc;IAAEgB,cAAA,EAAgB;EAAK,IAAI,GACzDC,SAAA;EAGN,MAAMC,UAAA,GAAavB,cAAA,CAAe;IAChCa,UAAA;IACAW,IAAA,EAAMlB,IAAA,GAAOM,iBAAA,GAAoBF;EACnC;EAEA,MAAMe,4BAAA,GAA+BxB,EAAA,CAAGyB,KAAK,CAACH,UAAA,CAAWI,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI;EAE1E,MAAMC,wBAAA,GAA2B,GAAG3B,EAAA,CAAGmB,SAAS,CAC9C;IACE,GAAGK,4BAA4B;IAC/B,IAAIV,aAAA,GAAgB;MAAED,QAAA,EAAUC;IAAc,IAAI,CAAC,CAAC;EACtD,GACA;IAAEM,cAAA,EAAgB;EAAK,IACtB;EAEH,OAAO,GAAGE,UAAA,CAAWI,KAAK,CAAC,IAAI,CAAC,EAAE,GAAGC,wBAAA,EAA0B;AACjE","ignoreList":[]}
@@ -1,4 +1,4 @@
1
1
  import type { InitPageResult } from 'payload';
2
2
  import type { Args } from './types.js';
3
- export declare const initPage: ({ config: configPromise, importMap, redirectUnauthenticatedUser, route, searchParams, }: Args) => Promise<InitPageResult>;
3
+ export declare const initPage: ({ config: configPromise, importMap, route, searchParams, }: Args) => Promise<InitPageResult>;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,SAAS,CAAA;AAQtF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAOtC,eAAO,MAAM,QAAQ,4FAMlB,IAAI,KAAG,OAAO,CAAC,cAAc,CA4I/B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utilities/initPage/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,SAAS,CAAA;AAQtF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAQtC,eAAO,MAAM,QAAQ,+DAKlB,IAAI,KAAG,OAAO,CAAC,cAAc,CAoJ/B,CAAA"}
@@ -1,56 +1,45 @@
1
- import { initI18n } from '@payloadcms/translations';
2
1
  import { findLocaleFromCode } from '@payloadcms/ui/shared';
3
2
  import { headers as getHeaders } from 'next/headers.js';
3
+ import { notFound } from 'next/navigation.js';
4
4
  import { createLocalReq, isEntityHidden, parseCookies } from 'payload';
5
5
  import * as qs from 'qs-esm';
6
6
  import { getPayloadHMR } from '../getPayloadHMR.js';
7
- import { getRequestLanguage } from '../getRequestLanguage.js';
8
- import { handleAdminPage } from './handleAdminPage.js';
7
+ import { initReq } from '../initReq.js';
8
+ import { getRouteInfo } from './handleAdminPage.js';
9
9
  import { handleAuthRedirect } from './handleAuthRedirect.js';
10
+ import { isPublicAdminRoute } from './shared.js';
10
11
  export const initPage = async ({
11
12
  config: configPromise,
12
13
  importMap,
13
- redirectUnauthenticatedUser = false,
14
14
  route,
15
15
  searchParams
16
16
  }) => {
17
- const headers = getHeaders();
17
+ const headers = await getHeaders();
18
18
  const payload = await getPayloadHMR({
19
19
  config: configPromise,
20
20
  importMap
21
21
  });
22
+ const queryString = `${qs.stringify(searchParams ?? {}, {
23
+ addQueryPrefix: true
24
+ })}`;
22
25
  const {
23
26
  collections,
24
27
  globals,
25
- i18n: i18nConfig,
26
28
  localization,
27
29
  routes: {
28
30
  admin: adminRoute
29
31
  }
30
32
  } = payload.config;
31
- const queryString = `${qs.stringify(searchParams ?? {}, {
32
- addQueryPrefix: true
33
- })}`;
34
33
  const cookies = parseCookies(headers);
35
- const language = getRequestLanguage({
36
- config: payload.config,
37
- cookies,
38
- headers
39
- });
40
- const i18n = await initI18n({
41
- config: i18nConfig,
42
- context: 'client',
43
- language
44
- });
45
- const languageOptions = Object.entries(payload.config.i18n.supportedLanguages || {}).reduce((acc, [language, languageConfig]) => {
46
- if (Object.keys(payload.config.i18n.supportedLanguages).includes(language)) {
47
- acc.push({
48
- label: languageConfig.translations.general.thisLanguage,
49
- value: language
50
- });
51
- }
52
- return acc;
53
- }, []);
34
+ const {
35
+ i18n,
36
+ permissions,
37
+ user
38
+ } = await initReq(payload.config);
39
+ // Ideally, we should not need to recreate the req, because
40
+ // we can get it from the above initReq.
41
+ // We just need to -overwrite- the url and query of the req
42
+ // we get above. Clone the req? We'll look into that eventually.
54
43
  const req = await createLocalReq({
55
44
  fallbackLocale: null,
56
45
  req: {
@@ -64,13 +53,15 @@ export const initPage = async ({
64
53
  url: `${payload.config.serverURL}${route}${searchParams ? queryString : ''}`
65
54
  }
66
55
  }, payload);
67
- const {
68
- permissions,
69
- user
70
- } = await payload.auth({
71
- headers,
72
- req
73
- });
56
+ const languageOptions = Object.entries(payload.config.i18n.supportedLanguages || {}).reduce((acc, [language, languageConfig]) => {
57
+ if (Object.keys(payload.config.i18n.supportedLanguages).includes(language)) {
58
+ acc.push({
59
+ label: languageConfig.translations.general.thisLanguage,
60
+ value: language
61
+ });
62
+ }
63
+ return acc;
64
+ }, []);
74
65
  req.user = user;
75
66
  const localeParam = searchParams?.locale;
76
67
  let locale;
@@ -128,24 +119,34 @@ export const initPage = async ({
128
119
  user
129
120
  }) ? slug : null).filter(Boolean)
130
121
  };
131
- if (redirectUnauthenticatedUser && !user) {
132
- handleAuthRedirect({
122
+ let redirectTo = null;
123
+ if (!permissions.canAccessAdmin && !isPublicAdminRoute({
124
+ adminRoute,
125
+ config: payload.config,
126
+ route
127
+ })) {
128
+ redirectTo = handleAuthRedirect({
133
129
  config: payload.config,
134
- redirectUnauthenticatedUser,
135
130
  route,
136
- searchParams
131
+ searchParams,
132
+ user
137
133
  });
138
134
  }
139
135
  const {
140
136
  collectionConfig,
137
+ collectionSlug,
141
138
  docID,
142
- globalConfig
143
- } = handleAdminPage({
139
+ globalConfig,
140
+ globalSlug
141
+ } = getRouteInfo({
144
142
  adminRoute,
145
143
  config: payload.config,
146
- permissions,
144
+ defaultIDType: payload.db.defaultIDType,
147
145
  route
148
146
  });
147
+ if (collectionSlug && !collectionConfig || globalSlug && !globalConfig) {
148
+ return notFound();
149
+ }
149
150
  return {
150
151
  collectionConfig,
151
152
  cookies,
@@ -154,6 +155,7 @@ export const initPage = async ({
154
155
  languageOptions,
155
156
  locale,
156
157
  permissions,
158
+ redirectTo,
157
159
  req,
158
160
  translations: i18n.translations,
159
161
  visibleEntities