@payloadcms/next 3.0.0-beta.70 → 3.0.0-beta.72

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 (95) hide show
  1. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.d.ts.map +1 -1
  2. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +3 -5
  3. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
  4. package/dist/prod/styles.css +1 -1
  5. package/dist/routes/graphql/handler.d.ts.map +1 -1
  6. package/dist/routes/graphql/handler.js +1 -4
  7. package/dist/routes/graphql/handler.js.map +1 -1
  8. package/dist/routes/rest/collections/restoreVersion.d.ts.map +1 -1
  9. package/dist/routes/rest/collections/restoreVersion.js +2 -0
  10. package/dist/routes/rest/collections/restoreVersion.js.map +1 -1
  11. package/dist/routes/rest/globals/restoreVersion.d.ts.map +1 -1
  12. package/dist/routes/rest/globals/restoreVersion.js +2 -0
  13. package/dist/routes/rest/globals/restoreVersion.js.map +1 -1
  14. package/dist/routes/rest/index.d.ts.map +1 -1
  15. package/dist/routes/rest/index.js +30 -5
  16. package/dist/routes/rest/index.js.map +1 -1
  17. package/dist/utilities/initPage/handleAdminPage.js +16 -5
  18. package/dist/utilities/initPage/handleAdminPage.js.map +1 -1
  19. package/dist/utilities/initPage/handleAuthRedirect.js +10 -2
  20. package/dist/utilities/initPage/handleAuthRedirect.js.map +1 -1
  21. package/dist/utilities/initPage/shared.d.ts +14 -2
  22. package/dist/utilities/initPage/shared.d.ts.map +1 -1
  23. package/dist/utilities/initPage/shared.js +14 -4
  24. package/dist/utilities/initPage/shared.js.map +1 -1
  25. package/dist/utilities/mergeHeaders.d.ts +1 -1
  26. package/dist/utilities/mergeHeaders.d.ts.map +1 -1
  27. package/dist/utilities/mergeHeaders.js +7 -33
  28. package/dist/utilities/mergeHeaders.js.map +1 -1
  29. package/dist/views/CreateFirstUser/index.client.js +5 -6
  30. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  31. package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
  32. package/dist/views/CreateFirstUser/index.js +7 -42
  33. package/dist/views/CreateFirstUser/index.js.map +1 -1
  34. package/dist/views/Document/getDocumentData.d.ts +1 -0
  35. package/dist/views/Document/getDocumentData.d.ts.map +1 -1
  36. package/dist/views/Document/getDocumentData.js +3 -2
  37. package/dist/views/Document/getDocumentData.js.map +1 -1
  38. package/dist/views/Edit/Default/Auth/APIKey.d.ts.map +1 -1
  39. package/dist/views/Edit/Default/Auth/APIKey.js +2 -1
  40. package/dist/views/Edit/Default/Auth/APIKey.js.map +1 -1
  41. package/dist/views/Edit/Default/Auth/index.d.ts.map +1 -1
  42. package/dist/views/Edit/Default/Auth/index.js +70 -15
  43. package/dist/views/Edit/Default/Auth/index.js.map +1 -1
  44. package/dist/views/Edit/Default/Auth/types.d.ts +2 -0
  45. package/dist/views/Edit/Default/Auth/types.d.ts.map +1 -1
  46. package/dist/views/Edit/Default/Auth/types.js.map +1 -1
  47. package/dist/views/Edit/Default/index.d.ts.map +1 -1
  48. package/dist/views/Edit/Default/index.js +13 -9
  49. package/dist/views/Edit/Default/index.js.map +1 -1
  50. package/dist/views/LivePreview/index.client.d.ts.map +1 -1
  51. package/dist/views/LivePreview/index.client.js.map +1 -1
  52. package/dist/views/Login/LoginField/index.d.ts.map +1 -1
  53. package/dist/views/Login/LoginField/index.js +3 -0
  54. package/dist/views/Login/LoginField/index.js.map +1 -1
  55. package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
  56. package/dist/views/Login/LoginForm/index.js +1 -19
  57. package/dist/views/Login/LoginForm/index.js.map +1 -1
  58. package/dist/views/ResetPassword/index.client.d.ts.map +1 -1
  59. package/dist/views/ResetPassword/index.client.js +10 -27
  60. package/dist/views/ResetPassword/index.client.js.map +1 -1
  61. package/dist/views/Version/Default/SetStepNav.d.ts +1 -2
  62. package/dist/views/Version/Default/SetStepNav.d.ts.map +1 -1
  63. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  64. package/dist/views/Version/Default/index.d.ts.map +1 -1
  65. package/dist/views/Version/Default/index.js +3 -1
  66. package/dist/views/Version/Default/index.js.map +1 -1
  67. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  68. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  69. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts +1 -2
  70. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
  71. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  72. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts +1 -1
  73. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts.map +1 -1
  74. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  75. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts +3 -3
  76. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts +1 -2
  77. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts.map +1 -1
  78. package/dist/views/Version/RenderFieldsToDiff/fields/types.js.map +1 -1
  79. package/dist/views/Version/RenderFieldsToDiff/types.d.ts +1 -2
  80. package/dist/views/Version/RenderFieldsToDiff/types.d.ts.map +1 -1
  81. package/dist/views/Version/RenderFieldsToDiff/types.js.map +1 -1
  82. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  83. package/dist/views/Version/Restore/index.js +35 -8
  84. package/dist/views/Version/Restore/index.js.map +1 -1
  85. package/dist/views/Version/Restore/index.scss +31 -0
  86. package/dist/views/Version/Restore/types.d.ts +1 -0
  87. package/dist/views/Version/Restore/types.d.ts.map +1 -1
  88. package/dist/views/Version/Restore/types.js.map +1 -1
  89. package/dist/views/Version/index.d.ts.map +1 -1
  90. package/dist/views/Version/index.js +2 -2
  91. package/dist/views/Version/index.js.map +1 -1
  92. package/dist/views/Versions/index.client.d.ts.map +1 -1
  93. package/dist/views/Versions/index.client.js +3 -2
  94. package/dist/views/Versions/index.client.js.map +1 -1
  95. package/package.json +7 -7
@@ -1,37 +1,11 @@
1
- const headersToJoin = [
2
- 'set-cookie',
3
- 'warning',
4
- 'www-authenticate',
5
- 'proxy-authenticate',
6
- 'vary'
7
- ];
8
- export function mergeHeaders(sourceHeaders, destinationHeaders) {
9
- // Create a map to store combined headers
10
- const combinedHeaders = new Headers();
11
- // Add existing destination headers to the combined map
12
- destinationHeaders.forEach((value, key)=>{
13
- combinedHeaders.set(key, value);
14
- });
15
- // Add source headers to the combined map, joining specific headers
1
+ export const mergeHeaders = (sourceHeaders, destinationHeaders)=>{
2
+ // Create a new Headers object
3
+ const combinedHeaders = new Headers(destinationHeaders);
4
+ // Append sourceHeaders to combinedHeaders
16
5
  sourceHeaders.forEach((value, key)=>{
17
- const lowerKey = key.toLowerCase();
18
- if (headersToJoin.includes(lowerKey)) {
19
- if (combinedHeaders.has(key)) {
20
- combinedHeaders.set(key, `${combinedHeaders.get(key)}, ${value}`);
21
- } else {
22
- combinedHeaders.set(key, value);
23
- }
24
- } else {
25
- combinedHeaders.set(key, value);
26
- }
27
- });
28
- // Clear the destination headers and set the combined headers
29
- destinationHeaders.forEach((_, key)=>{
30
- destinationHeaders.delete(key);
31
- });
32
- combinedHeaders.forEach((value, key)=>{
33
- destinationHeaders.append(key, value);
6
+ combinedHeaders.append(key, value);
34
7
  });
35
- }
8
+ return combinedHeaders;
9
+ };
36
10
 
37
11
  //# sourceMappingURL=mergeHeaders.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/mergeHeaders.ts"],"sourcesContent":["const headersToJoin = ['set-cookie', 'warning', 'www-authenticate', 'proxy-authenticate', 'vary']\n\nexport function mergeHeaders(sourceHeaders: Headers, destinationHeaders: Headers): void {\n // Create a map to store combined headers\n const combinedHeaders = new Headers()\n\n // Add existing destination headers to the combined map\n destinationHeaders.forEach((value, key) => {\n combinedHeaders.set(key, value)\n })\n\n // Add source headers to the combined map, joining specific headers\n sourceHeaders.forEach((value, key) => {\n const lowerKey = key.toLowerCase()\n if (headersToJoin.includes(lowerKey)) {\n if (combinedHeaders.has(key)) {\n combinedHeaders.set(key, `${combinedHeaders.get(key)}, ${value}`)\n } else {\n combinedHeaders.set(key, value)\n }\n } else {\n combinedHeaders.set(key, value)\n }\n })\n\n // Clear the destination headers and set the combined headers\n destinationHeaders.forEach((_, key) => {\n destinationHeaders.delete(key)\n })\n combinedHeaders.forEach((value, key) => {\n destinationHeaders.append(key, value)\n })\n}\n"],"names":["headersToJoin","mergeHeaders","sourceHeaders","destinationHeaders","combinedHeaders","Headers","forEach","value","key","set","lowerKey","toLowerCase","includes","has","get","_","delete","append"],"mappings":"AAAA,MAAMA,gBAAgB;IAAC;IAAc;IAAW;IAAoB;IAAsB;CAAO;AAEjG,OAAO,SAASC,aAAaC,aAAsB,EAAEC,kBAA2B;IAC9E,yCAAyC;IACzC,MAAMC,kBAAkB,IAAIC;IAE5B,uDAAuD;IACvDF,mBAAmBG,OAAO,CAAC,CAACC,OAAOC;QACjCJ,gBAAgBK,GAAG,CAACD,KAAKD;IAC3B;IAEA,mEAAmE;IACnEL,cAAcI,OAAO,CAAC,CAACC,OAAOC;QAC5B,MAAME,WAAWF,IAAIG,WAAW;QAChC,IAAIX,cAAcY,QAAQ,CAACF,WAAW;YACpC,IAAIN,gBAAgBS,GAAG,CAACL,MAAM;gBAC5BJ,gBAAgBK,GAAG,CAACD,KAAK,CAAC,EAAEJ,gBAAgBU,GAAG,CAACN,KAAK,EAAE,EAAED,MAAM,CAAC;YAClE,OAAO;gBACLH,gBAAgBK,GAAG,CAACD,KAAKD;YAC3B;QACF,OAAO;YACLH,gBAAgBK,GAAG,CAACD,KAAKD;QAC3B;IACF;IAEA,6DAA6D;IAC7DJ,mBAAmBG,OAAO,CAAC,CAACS,GAAGP;QAC7BL,mBAAmBa,MAAM,CAACR;IAC5B;IACAJ,gBAAgBE,OAAO,CAAC,CAACC,OAAOC;QAC9BL,mBAAmBc,MAAM,CAACT,KAAKD;IACjC;AACF"}
1
+ {"version":3,"sources":["../../src/utilities/mergeHeaders.ts"],"sourcesContent":["export const mergeHeaders = (sourceHeaders: Headers, destinationHeaders: Headers): Headers => {\n // Create a new Headers object\n const combinedHeaders = new Headers(destinationHeaders)\n\n // Append sourceHeaders to combinedHeaders\n sourceHeaders.forEach((value, key) => {\n combinedHeaders.append(key, value)\n })\n\n return combinedHeaders\n}\n"],"names":["mergeHeaders","sourceHeaders","destinationHeaders","combinedHeaders","Headers","forEach","value","key","append"],"mappings":"AAAA,OAAO,MAAMA,eAAe,CAACC,eAAwBC;IACnD,8BAA8B;IAC9B,MAAMC,kBAAkB,IAAIC,QAAQF;IAEpC,0CAA0C;IAC1CD,cAAcI,OAAO,CAAC,CAACC,OAAOC;QAC5BJ,gBAAgBK,MAAM,CAACD,KAAKD;IAC9B;IAEA,OAAOH;AACT,EAAC"}
@@ -11,18 +11,16 @@ export const CreateFirstUserClient = ({ initialState, loginType, requireEmail =
11
11
  const fieldMap = getFieldMap({
12
12
  collectionSlug: userSlug
13
13
  });
14
- const onChange = React.useCallback(async ({ formState: prevFormState })=>{
15
- return getFormState({
14
+ const onChange = React.useCallback(async ({ formState: prevFormState })=>getFormState({
16
15
  apiRoute,
17
16
  body: {
18
17
  collectionSlug: userSlug,
19
18
  formState: prevFormState,
20
19
  operation: 'create',
21
- schemaPath: userSlug
20
+ schemaPath: `_${userSlug}.auth`
22
21
  },
23
22
  serverURL
24
- });
25
- }, [
23
+ }), [
26
24
  apiRoute,
27
25
  userSlug,
28
26
  serverURL
@@ -51,14 +49,15 @@ export const CreateFirstUserClient = ({ initialState, loginType, requireEmail =
51
49
  type: "email"
52
50
  }),
53
51
  /*#__PURE__*/ _jsx(PasswordField, {
54
- autoComplete: "off",
55
52
  label: t('authentication:newPassword'),
56
53
  name: "password",
54
+ path: "password",
57
55
  required: true
58
56
  }),
59
57
  /*#__PURE__*/ _jsx(ConfirmPasswordField, {}),
60
58
  /*#__PURE__*/ _jsx(RenderFields, {
61
59
  fieldMap: fieldMap,
60
+ forceRender: true,
62
61
  operation: "create",
63
62
  path: "",
64
63
  readOnly: false,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload'\n\nimport {\n ConfirmPasswordField,\n Form,\n type FormProps,\n FormSubmit,\n PasswordField,\n RenderFields,\n useComponentMap,\n useConfig,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport React from 'react'\n\nimport { LoginField } from '../Login/LoginField/index.js'\n\nexport const CreateFirstUserClient: React.FC<{\n initialState: FormState\n loginType: 'email' | 'emailOrUsername' | 'username'\n requireEmail?: boolean\n userSlug: string\n}> = ({ initialState, loginType, requireEmail = true, userSlug }) => {\n const { getFieldMap } = useComponentMap()\n\n const {\n routes: { admin, api: apiRoute },\n serverURL,\n } = useConfig()\n\n const { t } = useTranslation()\n\n const fieldMap = getFieldMap({ collectionSlug: userSlug })\n\n const onChange: FormProps['onChange'][0] = React.useCallback(\n async ({ formState: prevFormState }) => {\n return getFormState({\n apiRoute,\n body: {\n collectionSlug: userSlug,\n formState: prevFormState,\n operation: 'create',\n schemaPath: userSlug,\n },\n serverURL,\n })\n },\n [apiRoute, userSlug, serverURL],\n )\n\n return (\n <Form\n action={`${serverURL}${apiRoute}/${userSlug}/first-register`}\n initialState={initialState}\n method=\"POST\"\n onChange={[onChange]}\n redirect={admin}\n validationOperation=\"create\"\n >\n {['emailOrUsername', 'username'].includes(loginType) && <LoginField type=\"username\" />}\n {['email', 'emailOrUsername'].includes(loginType) && (\n <LoginField required={requireEmail} type=\"email\" />\n )}\n <PasswordField\n autoComplete=\"off\"\n label={t('authentication:newPassword')}\n name=\"password\"\n required\n />\n <ConfirmPasswordField />\n <RenderFields\n fieldMap={fieldMap}\n operation=\"create\"\n path=\"\"\n readOnly={false}\n schemaPath={userSlug}\n />\n <FormSubmit>{t('general:create')}</FormSubmit>\n </Form>\n )\n}\n"],"names":["ConfirmPasswordField","Form","FormSubmit","PasswordField","RenderFields","useComponentMap","useConfig","useTranslation","getFormState","React","LoginField","CreateFirstUserClient","initialState","loginType","requireEmail","userSlug","getFieldMap","routes","admin","api","apiRoute","serverURL","t","fieldMap","collectionSlug","onChange","useCallback","formState","prevFormState","body","operation","schemaPath","action","method","redirect","validationOperation","includes","type","required","autoComplete","label","name","path","readOnly"],"mappings":"AAAA;;AAGA,SACEA,oBAAoB,EACpBC,IAAI,EAEJC,UAAU,EACVC,aAAa,EACbC,YAAY,EACZC,eAAe,EACfC,SAAS,EACTC,cAAc,QACT,iBAAgB;AACvB,SAASC,YAAY,QAAQ,wBAAuB;AACpD,OAAOC,WAAW,QAAO;AAEzB,SAASC,UAAU,QAAQ,+BAA8B;AAEzD,OAAO,MAAMC,wBAKR,CAAC,EAAEC,YAAY,EAAEC,SAAS,EAAEC,eAAe,IAAI,EAAEC,QAAQ,EAAE;IAC9D,MAAM,EAAEC,WAAW,EAAE,GAAGX;IAExB,MAAM,EACJY,QAAQ,EAAEC,KAAK,EAAEC,KAAKC,QAAQ,EAAE,EAChCC,SAAS,EACV,GAAGf;IAEJ,MAAM,EAAEgB,CAAC,EAAE,GAAGf;IAEd,MAAMgB,WAAWP,YAAY;QAAEQ,gBAAgBT;IAAS;IAExD,MAAMU,WAAqChB,MAAMiB,WAAW,CAC1D,OAAO,EAAEC,WAAWC,aAAa,EAAE;QACjC,OAAOpB,aAAa;YAClBY;YACAS,MAAM;gBACJL,gBAAgBT;gBAChBY,WAAWC;gBACXE,WAAW;gBACXC,YAAYhB;YACd;YACAM;QACF;IACF,GACA;QAACD;QAAUL;QAAUM;KAAU;IAGjC,qBACE,MAACpB;QACC+B,QAAQ,CAAC,EAAEX,UAAU,EAAED,SAAS,CAAC,EAAEL,SAAS,eAAe,CAAC;QAC5DH,cAAcA;QACdqB,QAAO;QACPR,UAAU;YAACA;SAAS;QACpBS,UAAUhB;QACViB,qBAAoB;;YAEnB;gBAAC;gBAAmB;aAAW,CAACC,QAAQ,CAACvB,4BAAc,KAACH;gBAAW2B,MAAK;;YACxE;gBAAC;gBAAS;aAAkB,CAACD,QAAQ,CAACvB,4BACrC,KAACH;gBAAW4B,UAAUxB;gBAAcuB,MAAK;;0BAE3C,KAAClC;gBACCoC,cAAa;gBACbC,OAAOlB,EAAE;gBACTmB,MAAK;gBACLH,QAAQ;;0BAEV,KAACtC;0BACD,KAACI;gBACCmB,UAAUA;gBACVO,WAAU;gBACVY,MAAK;gBACLC,UAAU;gBACVZ,YAAYhB;;0BAEd,KAACb;0BAAYoB,EAAE;;;;AAGrB,EAAC"}
1
+ {"version":3,"sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload'\n\nimport {\n ConfirmPasswordField,\n Form,\n type FormProps,\n FormSubmit,\n PasswordField,\n RenderFields,\n useComponentMap,\n useConfig,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport React from 'react'\n\nimport { LoginField } from '../Login/LoginField/index.js'\n\nexport const CreateFirstUserClient: React.FC<{\n initialState: FormState\n loginType: 'email' | 'emailOrUsername' | 'username'\n requireEmail?: boolean\n userSlug: string\n}> = ({ initialState, loginType, requireEmail = true, userSlug }) => {\n const { getFieldMap } = useComponentMap()\n\n const {\n routes: { admin, api: apiRoute },\n serverURL,\n } = useConfig()\n\n const { t } = useTranslation()\n\n const fieldMap = getFieldMap({ collectionSlug: userSlug })\n\n const onChange: FormProps['onChange'][0] = React.useCallback(\n async ({ formState: prevFormState }) =>\n getFormState({\n apiRoute,\n body: {\n collectionSlug: userSlug,\n formState: prevFormState,\n operation: 'create',\n schemaPath: `_${userSlug}.auth`,\n },\n serverURL,\n }),\n [apiRoute, userSlug, serverURL],\n )\n\n return (\n <Form\n action={`${serverURL}${apiRoute}/${userSlug}/first-register`}\n initialState={initialState}\n method=\"POST\"\n onChange={[onChange]}\n redirect={admin}\n validationOperation=\"create\"\n >\n {['emailOrUsername', 'username'].includes(loginType) && <LoginField type=\"username\" />}\n {['email', 'emailOrUsername'].includes(loginType) && (\n <LoginField required={requireEmail} type=\"email\" />\n )}\n <PasswordField\n label={t('authentication:newPassword')}\n name=\"password\"\n path=\"password\"\n required\n />\n <ConfirmPasswordField />\n <RenderFields\n fieldMap={fieldMap}\n forceRender\n operation=\"create\"\n path=\"\"\n readOnly={false}\n schemaPath={userSlug}\n />\n <FormSubmit>{t('general:create')}</FormSubmit>\n </Form>\n )\n}\n"],"names":["ConfirmPasswordField","Form","FormSubmit","PasswordField","RenderFields","useComponentMap","useConfig","useTranslation","getFormState","React","LoginField","CreateFirstUserClient","initialState","loginType","requireEmail","userSlug","getFieldMap","routes","admin","api","apiRoute","serverURL","t","fieldMap","collectionSlug","onChange","useCallback","formState","prevFormState","body","operation","schemaPath","action","method","redirect","validationOperation","includes","type","required","label","name","path","forceRender","readOnly"],"mappings":"AAAA;;AAGA,SACEA,oBAAoB,EACpBC,IAAI,EAEJC,UAAU,EACVC,aAAa,EACbC,YAAY,EACZC,eAAe,EACfC,SAAS,EACTC,cAAc,QACT,iBAAgB;AACvB,SAASC,YAAY,QAAQ,wBAAuB;AACpD,OAAOC,WAAW,QAAO;AAEzB,SAASC,UAAU,QAAQ,+BAA8B;AAEzD,OAAO,MAAMC,wBAKR,CAAC,EAAEC,YAAY,EAAEC,SAAS,EAAEC,eAAe,IAAI,EAAEC,QAAQ,EAAE;IAC9D,MAAM,EAAEC,WAAW,EAAE,GAAGX;IAExB,MAAM,EACJY,QAAQ,EAAEC,KAAK,EAAEC,KAAKC,QAAQ,EAAE,EAChCC,SAAS,EACV,GAAGf;IAEJ,MAAM,EAAEgB,CAAC,EAAE,GAAGf;IAEd,MAAMgB,WAAWP,YAAY;QAAEQ,gBAAgBT;IAAS;IAExD,MAAMU,WAAqChB,MAAMiB,WAAW,CAC1D,OAAO,EAAEC,WAAWC,aAAa,EAAE,GACjCpB,aAAa;YACXY;YACAS,MAAM;gBACJL,gBAAgBT;gBAChBY,WAAWC;gBACXE,WAAW;gBACXC,YAAY,CAAC,CAAC,EAAEhB,SAAS,KAAK,CAAC;YACjC;YACAM;QACF,IACF;QAACD;QAAUL;QAAUM;KAAU;IAGjC,qBACE,MAACpB;QACC+B,QAAQ,CAAC,EAAEX,UAAU,EAAED,SAAS,CAAC,EAAEL,SAAS,eAAe,CAAC;QAC5DH,cAAcA;QACdqB,QAAO;QACPR,UAAU;YAACA;SAAS;QACpBS,UAAUhB;QACViB,qBAAoB;;YAEnB;gBAAC;gBAAmB;aAAW,CAACC,QAAQ,CAACvB,4BAAc,KAACH;gBAAW2B,MAAK;;YACxE;gBAAC;gBAAS;aAAkB,CAACD,QAAQ,CAACvB,4BACrC,KAACH;gBAAW4B,UAAUxB;gBAAcuB,MAAK;;0BAE3C,KAAClC;gBACCoC,OAAOjB,EAAE;gBACTkB,MAAK;gBACLC,MAAK;gBACLH,QAAQ;;0BAEV,KAACtC;0BACD,KAACI;gBACCmB,UAAUA;gBACVmB,WAAW;gBACXZ,WAAU;gBACVW,MAAK;gBACLE,UAAU;gBACVZ,YAAYhB;;0BAEd,KAACb;0BAAYoB,EAAE;;;;AAGrB,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAS,MAAM,SAAS,CAAA;AAGpD,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,+BAA+B,EAAE,MAAM,WAAW,CAAA;AAE3D,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA0ExD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,+BAA+B,EAAE,MAAM,WAAW,CAAA;AAE3D,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA2CxD,CAAA"}
@@ -1,58 +1,23 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { buildStateFromSchema } from '@payloadcms/ui/forms/buildStateFromSchema';
3
2
  import React from 'react';
3
+ import { getDocumentData } from '../Document/getDocumentData.js';
4
4
  import { CreateFirstUserClient } from './index.client.js';
5
5
  export { generateCreateFirstUserMetadata } from './meta.js';
6
6
  export const CreateFirstUserView = async ({ initPageResult })=>{
7
- const { req, req: { payload: { config: { admin: { user: userSlug } }, config } } } = initPageResult;
7
+ const { locale, req, req: { payload: { config: { admin: { user: userSlug } }, config } } } = initPageResult;
8
8
  const collectionConfig = config.collections?.find((collection)=>collection?.slug === userSlug);
9
9
  const { auth: authOptions } = collectionConfig;
10
10
  const loginWithUsername = authOptions.loginWithUsername;
11
- const loginWithEmail = !loginWithUsername || loginWithUsername.allowEmailLogin;
12
11
  const emailRequired = loginWithUsername && loginWithUsername.requireEmail;
13
12
  let loginType = loginWithUsername ? 'username' : 'email';
14
13
  if (loginWithUsername && (loginWithUsername.allowEmailLogin || loginWithUsername.requireEmail)) {
15
14
  loginType = 'emailOrUsername';
16
15
  }
17
- const emailField = {
18
- name: 'email',
19
- type: 'email',
20
- label: req.t('general:emailAddress'),
21
- required: emailRequired ? true : false
22
- };
23
- const usernameField = {
24
- name: 'username',
25
- type: 'text',
26
- label: req.t('authentication:username'),
27
- required: true
28
- };
29
- const fields = [
30
- ...loginWithUsername ? [
31
- usernameField
32
- ] : [],
33
- ...emailRequired || loginWithEmail ? [
34
- emailField
35
- ] : [],
36
- {
37
- name: 'password',
38
- type: 'text',
39
- label: req.t('general:password'),
40
- required: true
41
- },
42
- {
43
- name: 'confirm-password',
44
- type: 'text',
45
- label: req.t('authentication:confirmPassword'),
46
- required: true
47
- }
48
- ];
49
- const formState = await buildStateFromSchema({
50
- fieldSchema: fields,
51
- operation: 'create',
52
- preferences: {
53
- fields: {}
54
- },
55
- req
16
+ const { formState } = await getDocumentData({
17
+ collectionConfig,
18
+ locale,
19
+ req,
20
+ schemaPath: `_${collectionConfig.slug}.auth`
56
21
  });
57
22
  return /*#__PURE__*/ _jsxs("div", {
58
23
  className: "create-first-user",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/views/CreateFirstUser/index.tsx"],"sourcesContent":["import type { AdminViewProps, Field } from 'payload'\n\nimport { buildStateFromSchema } from '@payloadcms/ui/forms/buildStateFromSchema'\nimport React from 'react'\n\nimport type { LoginFieldProps } from '../Login/LoginField/index.js'\n\nimport { CreateFirstUserClient } from './index.client.js'\nimport './index.scss'\n\nexport { generateCreateFirstUserMetadata } from './meta.js'\n\nexport const CreateFirstUserView: React.FC<AdminViewProps> = async ({ initPageResult }) => {\n const {\n req,\n req: {\n payload: {\n config: {\n admin: { user: userSlug },\n },\n config,\n },\n },\n } = initPageResult\n\n const collectionConfig = config.collections?.find((collection) => collection?.slug === userSlug)\n const { auth: authOptions } = collectionConfig\n const loginWithUsername = authOptions.loginWithUsername\n const loginWithEmail = !loginWithUsername || loginWithUsername.allowEmailLogin\n const emailRequired = loginWithUsername && loginWithUsername.requireEmail\n\n let loginType: LoginFieldProps['type'] = loginWithUsername ? 'username' : 'email'\n if (loginWithUsername && (loginWithUsername.allowEmailLogin || loginWithUsername.requireEmail)) {\n loginType = 'emailOrUsername'\n }\n\n const emailField = {\n name: 'email',\n type: 'email',\n label: req.t('general:emailAddress'),\n required: emailRequired ? true : false,\n }\n\n const usernameField = {\n name: 'username',\n type: 'text',\n label: req.t('authentication:username'),\n required: true,\n }\n\n const fields = [\n ...(loginWithUsername ? [usernameField] : []),\n ...(emailRequired || loginWithEmail ? [emailField] : []),\n {\n name: 'password',\n type: 'text',\n label: req.t('general:password'),\n required: true,\n },\n {\n name: 'confirm-password',\n type: 'text',\n label: req.t('authentication:confirmPassword'),\n required: true,\n },\n ]\n\n const formState = await buildStateFromSchema({\n fieldSchema: fields as Field[],\n operation: 'create',\n preferences: { fields: {} },\n req,\n })\n\n return (\n <div className=\"create-first-user\">\n <h1>{req.t('general:welcome')}</h1>\n <p>{req.t('authentication:beginCreateFirstUser')}</p>\n <CreateFirstUserClient\n initialState={formState}\n loginType={loginType}\n requireEmail={emailRequired}\n userSlug={userSlug}\n />\n </div>\n )\n}\n"],"names":["buildStateFromSchema","React","CreateFirstUserClient","generateCreateFirstUserMetadata","CreateFirstUserView","initPageResult","req","payload","config","admin","user","userSlug","collectionConfig","collections","find","collection","slug","auth","authOptions","loginWithUsername","loginWithEmail","allowEmailLogin","emailRequired","requireEmail","loginType","emailField","name","type","label","t","required","usernameField","fields","formState","fieldSchema","operation","preferences","div","className","h1","p","initialState"],"mappings":";AAEA,SAASA,oBAAoB,QAAQ,4CAA2C;AAChF,OAAOC,WAAW,QAAO;AAIzB,SAASC,qBAAqB,QAAQ,oBAAmB;AAGzD,SAASC,+BAA+B,QAAQ,YAAW;AAE3D,OAAO,MAAMC,sBAAgD,OAAO,EAAEC,cAAc,EAAE;IACpF,MAAM,EACJC,GAAG,EACHA,KAAK,EACHC,SAAS,EACPC,QAAQ,EACNC,OAAO,EAAEC,MAAMC,QAAQ,EAAE,EAC1B,EACDH,MAAM,EACP,EACF,EACF,GAAGH;IAEJ,MAAMO,mBAAmBJ,OAAOK,WAAW,EAAEC,KAAK,CAACC,aAAeA,YAAYC,SAASL;IACvF,MAAM,EAAEM,MAAMC,WAAW,EAAE,GAAGN;IAC9B,MAAMO,oBAAoBD,YAAYC,iBAAiB;IACvD,MAAMC,iBAAiB,CAACD,qBAAqBA,kBAAkBE,eAAe;IAC9E,MAAMC,gBAAgBH,qBAAqBA,kBAAkBI,YAAY;IAEzE,IAAIC,YAAqCL,oBAAoB,aAAa;IAC1E,IAAIA,qBAAsBA,CAAAA,kBAAkBE,eAAe,IAAIF,kBAAkBI,YAAY,AAAD,GAAI;QAC9FC,YAAY;IACd;IAEA,MAAMC,aAAa;QACjBC,MAAM;QACNC,MAAM;QACNC,OAAOtB,IAAIuB,CAAC,CAAC;QACbC,UAAUR,gBAAgB,OAAO;IACnC;IAEA,MAAMS,gBAAgB;QACpBL,MAAM;QACNC,MAAM;QACNC,OAAOtB,IAAIuB,CAAC,CAAC;QACbC,UAAU;IACZ;IAEA,MAAME,SAAS;WACTb,oBAAoB;YAACY;SAAc,GAAG,EAAE;WACxCT,iBAAiBF,iBAAiB;YAACK;SAAW,GAAG,EAAE;QACvD;YACEC,MAAM;YACNC,MAAM;YACNC,OAAOtB,IAAIuB,CAAC,CAAC;YACbC,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNC,OAAOtB,IAAIuB,CAAC,CAAC;YACbC,UAAU;QACZ;KACD;IAED,MAAMG,YAAY,MAAMjC,qBAAqB;QAC3CkC,aAAaF;QACbG,WAAW;QACXC,aAAa;YAAEJ,QAAQ,CAAC;QAAE;QAC1B1B;IACF;IAEA,qBACE,MAAC+B;QAAIC,WAAU;;0BACb,KAACC;0BAAIjC,IAAIuB,CAAC,CAAC;;0BACX,KAACW;0BAAGlC,IAAIuB,CAAC,CAAC;;0BACV,KAAC3B;gBACCuC,cAAcR;gBACdT,WAAWA;gBACXD,cAAcD;gBACdX,UAAUA;;;;AAIlB,EAAC"}
1
+ {"version":3,"sources":["../../../src/views/CreateFirstUser/index.tsx"],"sourcesContent":["import type { AdminViewProps } from 'payload'\n\nimport React from 'react'\n\nimport type { LoginFieldProps } from '../Login/LoginField/index.js'\n\nimport { getDocumentData } from '../Document/getDocumentData.js'\nimport { CreateFirstUserClient } from './index.client.js'\nimport './index.scss'\n\nexport { generateCreateFirstUserMetadata } from './meta.js'\n\nexport const CreateFirstUserView: React.FC<AdminViewProps> = async ({ initPageResult }) => {\n const {\n locale,\n req,\n req: {\n payload: {\n config: {\n admin: { user: userSlug },\n },\n config,\n },\n },\n } = initPageResult\n\n const collectionConfig = config.collections?.find((collection) => collection?.slug === userSlug)\n const { auth: authOptions } = collectionConfig\n const loginWithUsername = authOptions.loginWithUsername\n const emailRequired = loginWithUsername && loginWithUsername.requireEmail\n\n let loginType: LoginFieldProps['type'] = loginWithUsername ? 'username' : 'email'\n if (loginWithUsername && (loginWithUsername.allowEmailLogin || loginWithUsername.requireEmail)) {\n loginType = 'emailOrUsername'\n }\n\n const { formState } = await getDocumentData({\n collectionConfig,\n locale,\n req,\n schemaPath: `_${collectionConfig.slug}.auth`,\n })\n\n return (\n <div className=\"create-first-user\">\n <h1>{req.t('general:welcome')}</h1>\n <p>{req.t('authentication:beginCreateFirstUser')}</p>\n <CreateFirstUserClient\n initialState={formState}\n loginType={loginType}\n requireEmail={emailRequired}\n userSlug={userSlug}\n />\n </div>\n )\n}\n"],"names":["React","getDocumentData","CreateFirstUserClient","generateCreateFirstUserMetadata","CreateFirstUserView","initPageResult","locale","req","payload","config","admin","user","userSlug","collectionConfig","collections","find","collection","slug","auth","authOptions","loginWithUsername","emailRequired","requireEmail","loginType","allowEmailLogin","formState","schemaPath","div","className","h1","t","p","initialState"],"mappings":";AAEA,OAAOA,WAAW,QAAO;AAIzB,SAASC,eAAe,QAAQ,iCAAgC;AAChE,SAASC,qBAAqB,QAAQ,oBAAmB;AAGzD,SAASC,+BAA+B,QAAQ,YAAW;AAE3D,OAAO,MAAMC,sBAAgD,OAAO,EAAEC,cAAc,EAAE;IACpF,MAAM,EACJC,MAAM,EACNC,GAAG,EACHA,KAAK,EACHC,SAAS,EACPC,QAAQ,EACNC,OAAO,EAAEC,MAAMC,QAAQ,EAAE,EAC1B,EACDH,MAAM,EACP,EACF,EACF,GAAGJ;IAEJ,MAAMQ,mBAAmBJ,OAAOK,WAAW,EAAEC,KAAK,CAACC,aAAeA,YAAYC,SAASL;IACvF,MAAM,EAAEM,MAAMC,WAAW,EAAE,GAAGN;IAC9B,MAAMO,oBAAoBD,YAAYC,iBAAiB;IACvD,MAAMC,gBAAgBD,qBAAqBA,kBAAkBE,YAAY;IAEzE,IAAIC,YAAqCH,oBAAoB,aAAa;IAC1E,IAAIA,qBAAsBA,CAAAA,kBAAkBI,eAAe,IAAIJ,kBAAkBE,YAAY,AAAD,GAAI;QAC9FC,YAAY;IACd;IAEA,MAAM,EAAEE,SAAS,EAAE,GAAG,MAAMxB,gBAAgB;QAC1CY;QACAP;QACAC;QACAmB,YAAY,CAAC,CAAC,EAAEb,iBAAiBI,IAAI,CAAC,KAAK,CAAC;IAC9C;IAEA,qBACE,MAACU;QAAIC,WAAU;;0BACb,KAACC;0BAAItB,IAAIuB,CAAC,CAAC;;0BACX,KAACC;0BAAGxB,IAAIuB,CAAC,CAAC;;0BACV,KAAC5B;gBACC8B,cAAcP;gBACdF,WAAWA;gBACXD,cAAcD;gBACdT,UAAUA;;;;AAIlB,EAAC"}
@@ -5,5 +5,6 @@ export declare const getDocumentData: (args: {
5
5
  id?: number | string;
6
6
  locale: Locale;
7
7
  req: PayloadRequest;
8
+ schemaPath?: string;
8
9
  }) => Promise<Data>;
9
10
  //# sourceMappingURL=getDocumentData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getDocumentData.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getDocumentData.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,MAAM,EACN,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAKhB,eAAO,MAAM,eAAe,SAAgB;IAC1C,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC,IAAI,CA4Bf,CAAA"}
1
+ {"version":3,"file":"getDocumentData.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getDocumentData.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,MAAM,EACN,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAKhB,eAAO,MAAM,eAAe,SAAgB;IAC1C,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,cAAc,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,KAAG,OAAO,CAAC,IAAI,CA8Bf,CAAA"}
@@ -1,7 +1,8 @@
1
1
  import { buildFormState } from '@payloadcms/ui/utilities/buildFormState';
2
2
  import { reduceFieldsToValues } from 'payload/shared';
3
3
  export const getDocumentData = async (args)=>{
4
- const { id, collectionConfig, globalConfig, locale, req } = args;
4
+ const { id, collectionConfig, globalConfig, locale, req, schemaPath: schemaPathFromProps } = args;
5
+ const schemaPath = schemaPathFromProps || collectionConfig?.slug || globalConfig?.slug;
5
6
  try {
6
7
  const formState = await buildFormState({
7
8
  req: {
@@ -12,7 +13,7 @@ export const getDocumentData = async (args)=>{
12
13
  globalSlug: globalConfig?.slug,
13
14
  locale: locale?.code,
14
15
  operation: collectionConfig && id || globalConfig ? 'update' : 'create',
15
- schemaPath: collectionConfig?.slug || globalConfig?.slug
16
+ schemaPath
16
17
  }
17
18
  }
18
19
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/views/Document/getDocumentData.tsx"],"sourcesContent":["import type {\n Data,\n Locale,\n PayloadRequest,\n SanitizedCollectionConfig,\n SanitizedGlobalConfig,\n} from 'payload'\n\nimport { buildFormState } from '@payloadcms/ui/utilities/buildFormState'\nimport { reduceFieldsToValues } from 'payload/shared'\n\nexport const getDocumentData = async (args: {\n collectionConfig?: SanitizedCollectionConfig\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n locale: Locale\n req: PayloadRequest\n}): Promise<Data> => {\n const { id, collectionConfig, globalConfig, locale, req } = args\n\n try {\n const formState = await buildFormState({\n req: {\n ...req,\n data: {\n id,\n collectionSlug: collectionConfig?.slug,\n globalSlug: globalConfig?.slug,\n locale: locale?.code,\n operation: (collectionConfig && id) || globalConfig ? 'update' : 'create',\n schemaPath: collectionConfig?.slug || globalConfig?.slug,\n },\n },\n })\n\n const data = reduceFieldsToValues(formState, true)\n\n return {\n data,\n formState,\n }\n } catch (error) {\n console.error('Error getting document data', error) // eslint-disable-line no-console\n return {}\n }\n}\n"],"names":["buildFormState","reduceFieldsToValues","getDocumentData","args","id","collectionConfig","globalConfig","locale","req","formState","data","collectionSlug","slug","globalSlug","code","operation","schemaPath","error","console"],"mappings":"AAQA,SAASA,cAAc,QAAQ,0CAAyC;AACxE,SAASC,oBAAoB,QAAQ,iBAAgB;AAErD,OAAO,MAAMC,kBAAkB,OAAOC;IAOpC,MAAM,EAAEC,EAAE,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,MAAM,EAAEC,GAAG,EAAE,GAAGL;IAE5D,IAAI;QACF,MAAMM,YAAY,MAAMT,eAAe;YACrCQ,KAAK;gBACH,GAAGA,GAAG;gBACNE,MAAM;oBACJN;oBACAO,gBAAgBN,kBAAkBO;oBAClCC,YAAYP,cAAcM;oBAC1BL,QAAQA,QAAQO;oBAChBC,WAAW,AAACV,oBAAoBD,MAAOE,eAAe,WAAW;oBACjEU,YAAYX,kBAAkBO,QAAQN,cAAcM;gBACtD;YACF;QACF;QAEA,MAAMF,OAAOT,qBAAqBQ,WAAW;QAE7C,OAAO;YACLC;YACAD;QACF;IACF,EAAE,OAAOQ,OAAO;QACdC,QAAQD,KAAK,CAAC,+BAA+BA,OAAO,iCAAiC;;QACrF,OAAO,CAAC;IACV;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/views/Document/getDocumentData.tsx"],"sourcesContent":["import type {\n Data,\n Locale,\n PayloadRequest,\n SanitizedCollectionConfig,\n SanitizedGlobalConfig,\n} from 'payload'\n\nimport { buildFormState } from '@payloadcms/ui/utilities/buildFormState'\nimport { reduceFieldsToValues } from 'payload/shared'\n\nexport const getDocumentData = async (args: {\n collectionConfig?: SanitizedCollectionConfig\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n locale: Locale\n req: PayloadRequest\n schemaPath?: string\n}): Promise<Data> => {\n const { id, collectionConfig, globalConfig, locale, req, schemaPath: schemaPathFromProps } = args\n\n const schemaPath = schemaPathFromProps || collectionConfig?.slug || globalConfig?.slug\n\n try {\n const formState = await buildFormState({\n req: {\n ...req,\n data: {\n id,\n collectionSlug: collectionConfig?.slug,\n globalSlug: globalConfig?.slug,\n locale: locale?.code,\n operation: (collectionConfig && id) || globalConfig ? 'update' : 'create',\n schemaPath,\n },\n },\n })\n\n const data = reduceFieldsToValues(formState, true)\n\n return {\n data,\n formState,\n }\n } catch (error) {\n console.error('Error getting document data', error) // eslint-disable-line no-console\n return {}\n }\n}\n"],"names":["buildFormState","reduceFieldsToValues","getDocumentData","args","id","collectionConfig","globalConfig","locale","req","schemaPath","schemaPathFromProps","slug","formState","data","collectionSlug","globalSlug","code","operation","error","console"],"mappings":"AAQA,SAASA,cAAc,QAAQ,0CAAyC;AACxE,SAASC,oBAAoB,QAAQ,iBAAgB;AAErD,OAAO,MAAMC,kBAAkB,OAAOC;IAQpC,MAAM,EAAEC,EAAE,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,MAAM,EAAEC,GAAG,EAAEC,YAAYC,mBAAmB,EAAE,GAAGP;IAE7F,MAAMM,aAAaC,uBAAuBL,kBAAkBM,QAAQL,cAAcK;IAElF,IAAI;QACF,MAAMC,YAAY,MAAMZ,eAAe;YACrCQ,KAAK;gBACH,GAAGA,GAAG;gBACNK,MAAM;oBACJT;oBACAU,gBAAgBT,kBAAkBM;oBAClCI,YAAYT,cAAcK;oBAC1BJ,QAAQA,QAAQS;oBAChBC,WAAW,AAACZ,oBAAoBD,MAAOE,eAAe,WAAW;oBACjEG;gBACF;YACF;QACF;QAEA,MAAMI,OAAOZ,qBAAqBW,WAAW;QAE7C,OAAO;YACLC;YACAD;QACF;IACF,EAAE,OAAOM,OAAO;QACdC,QAAQD,KAAK,CAAC,+BAA+BA,OAAO,iCAAiC;;QACrF,OAAO,CAAC;IACV;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"APIKey.d.ts","sourceRoot":"","sources":["../../../../../src/views/Edit/Default/Auth/APIKey.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAO3D,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CA+FrE,CAAA"}
1
+ {"version":3,"file":"APIKey.d.ts","sourceRoot":"","sources":["../../../../../src/views/Edit/Default/Auth/APIKey.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAO3D,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAgGrE,CAAA"}
@@ -61,7 +61,7 @@ export const APIKey = ({ enabled, readOnly })=>{
61
61
  if (!apiKeyValue && enabled) {
62
62
  setValue(initialAPIKey);
63
63
  }
64
- if (!enabled) {
64
+ if (!enabled && apiKeyValue) {
65
65
  setValue(null);
66
66
  }
67
67
  }, [
@@ -96,6 +96,7 @@ export const APIKey = ({ enabled, readOnly })=>{
96
96
  htmlFor: path
97
97
  }),
98
98
  /*#__PURE__*/ _jsx("input", {
99
+ "aria-label": "API Key",
99
100
  className: highlightedField ? 'highlight' : undefined,
100
101
  disabled: true,
101
102
  id: "apiKey",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/views/Edit/Default/Auth/APIKey.tsx"],"sourcesContent":["'use client'\nimport type { PayloadRequest } from 'payload'\n\nimport {\n CopyToClipboard,\n FieldLabel,\n GenerateConfirmation,\n useConfig,\n useField,\n useFormFields,\n useTranslation,\n} from '@payloadcms/ui'\nimport { text } from 'payload/shared'\nimport React, { useEffect, useMemo, useState } from 'react'\nimport { v4 as uuidv4 } from 'uuid'\n\nconst path = 'apiKey'\nconst baseClass = 'api-key'\nconst fieldBaseClass = 'field-type'\n\nexport const APIKey: React.FC<{ enabled: boolean; readOnly?: boolean }> = ({\n enabled,\n readOnly,\n}) => {\n const [initialAPIKey] = useState(uuidv4())\n const [highlightedField, setHighlightedField] = useState(false)\n const { t } = useTranslation()\n const config = useConfig()\n\n const apiKey = useFormFields(([fields]) => (fields && fields[path]) || null)\n\n const validate = (val) =>\n text(val, {\n name: 'apiKey',\n type: 'text',\n data: {},\n maxLength: 48,\n minLength: 24,\n preferences: { fields: {} },\n req: {\n payload: {\n config,\n },\n t,\n } as PayloadRequest,\n siblingData: {},\n })\n\n const apiKeyValue = apiKey?.value\n\n const APIKeyLabel = useMemo(\n () => (\n <div className={`${baseClass}__label`}>\n <span>API Key</span>\n <CopyToClipboard value={apiKeyValue as string} />\n </div>\n ),\n [apiKeyValue],\n )\n\n const fieldType = useField({\n path: 'apiKey',\n validate,\n })\n\n const highlightField = () => {\n if (highlightedField) {\n setHighlightedField(false)\n }\n setTimeout(() => {\n setHighlightedField(true)\n }, 1)\n }\n\n const { setValue, value } = fieldType\n\n useEffect(() => {\n if (!apiKeyValue && enabled) {\n setValue(initialAPIKey)\n }\n if (!enabled) {\n setValue(null)\n }\n }, [apiKeyValue, enabled, setValue, initialAPIKey])\n\n useEffect(() => {\n if (highlightedField) {\n setTimeout(() => {\n setHighlightedField(false)\n }, 10000)\n }\n }, [highlightedField])\n\n if (!enabled) {\n return null\n }\n\n return (\n <React.Fragment>\n <div className={[fieldBaseClass, 'api-key', 'read-only'].filter(Boolean).join(' ')}>\n <FieldLabel CustomLabel={APIKeyLabel} htmlFor={path} />\n <input\n className={highlightedField ? 'highlight' : undefined}\n disabled\n id=\"apiKey\"\n name=\"apiKey\"\n type=\"text\"\n value={(value as string) || ''}\n />\n </div>\n {!readOnly && (\n <GenerateConfirmation highlightField={highlightField} setKey={() => setValue(uuidv4())} />\n )}\n </React.Fragment>\n )\n}\n"],"names":["CopyToClipboard","FieldLabel","GenerateConfirmation","useConfig","useField","useFormFields","useTranslation","text","React","useEffect","useMemo","useState","v4","uuidv4","path","baseClass","fieldBaseClass","APIKey","enabled","readOnly","initialAPIKey","highlightedField","setHighlightedField","t","config","apiKey","fields","validate","val","name","type","data","maxLength","minLength","preferences","req","payload","siblingData","apiKeyValue","value","APIKeyLabel","div","className","span","fieldType","highlightField","setTimeout","setValue","Fragment","filter","Boolean","join","CustomLabel","htmlFor","input","undefined","disabled","id","setKey"],"mappings":"AAAA;;AAGA,SACEA,eAAe,EACfC,UAAU,EACVC,oBAAoB,EACpBC,SAAS,EACTC,QAAQ,EACRC,aAAa,EACbC,cAAc,QACT,iBAAgB;AACvB,SAASC,IAAI,QAAQ,iBAAgB;AACrC,OAAOC,SAASC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAO;AAC3D,SAASC,MAAMC,MAAM,QAAQ,OAAM;AAEnC,MAAMC,OAAO;AACb,MAAMC,YAAY;AAClB,MAAMC,iBAAiB;AAEvB,OAAO,MAAMC,SAA6D,CAAC,EACzEC,OAAO,EACPC,QAAQ,EACT;IACC,MAAM,CAACC,cAAc,GAAGT,SAASE;IACjC,MAAM,CAACQ,kBAAkBC,oBAAoB,GAAGX,SAAS;IACzD,MAAM,EAAEY,CAAC,EAAE,GAAGjB;IACd,MAAMkB,SAASrB;IAEf,MAAMsB,SAASpB,cAAc,CAAC,CAACqB,OAAO,GAAK,AAACA,UAAUA,MAAM,CAACZ,KAAK,IAAK;IAEvE,MAAMa,WAAW,CAACC,MAChBrB,KAAKqB,KAAK;YACRC,MAAM;YACNC,MAAM;YACNC,MAAM,CAAC;YACPC,WAAW;YACXC,WAAW;YACXC,aAAa;gBAAER,QAAQ,CAAC;YAAE;YAC1BS,KAAK;gBACHC,SAAS;oBACPZ;gBACF;gBACAD;YACF;YACAc,aAAa,CAAC;QAChB;IAEF,MAAMC,cAAcb,QAAQc;IAE5B,MAAMC,cAAc9B,QAClB,kBACE,MAAC+B;YAAIC,WAAW,CAAC,EAAE3B,UAAU,OAAO,CAAC;;8BACnC,KAAC4B;8BAAK;;8BACN,KAAC3C;oBAAgBuC,OAAOD;;;YAG5B;QAACA;KAAY;IAGf,MAAMM,YAAYxC,SAAS;QACzBU,MAAM;QACNa;IACF;IAEA,MAAMkB,iBAAiB;QACrB,IAAIxB,kBAAkB;YACpBC,oBAAoB;QACtB;QACAwB,WAAW;YACTxB,oBAAoB;QACtB,GAAG;IACL;IAEA,MAAM,EAAEyB,QAAQ,EAAER,KAAK,EAAE,GAAGK;IAE5BnC,UAAU;QACR,IAAI,CAAC6B,eAAepB,SAAS;YAC3B6B,SAAS3B;QACX;QACA,IAAI,CAACF,SAAS;YACZ6B,SAAS;QACX;IACF,GAAG;QAACT;QAAapB;QAAS6B;QAAU3B;KAAc;IAElDX,UAAU;QACR,IAAIY,kBAAkB;YACpByB,WAAW;gBACTxB,oBAAoB;YACtB,GAAG;QACL;IACF,GAAG;QAACD;KAAiB;IAErB,IAAI,CAACH,SAAS;QACZ,OAAO;IACT;IAEA,qBACE,MAACV,MAAMwC,QAAQ;;0BACb,MAACP;gBAAIC,WAAW;oBAAC1B;oBAAgB;oBAAW;iBAAY,CAACiC,MAAM,CAACC,SAASC,IAAI,CAAC;;kCAC5E,KAAClD;wBAAWmD,aAAaZ;wBAAaa,SAASvC;;kCAC/C,KAACwC;wBACCZ,WAAWrB,mBAAmB,cAAckC;wBAC5CC,QAAQ;wBACRC,IAAG;wBACH5B,MAAK;wBACLC,MAAK;wBACLS,OAAO,AAACA,SAAoB;;;;YAG/B,CAACpB,0BACA,KAACjB;gBAAqB2C,gBAAgBA;gBAAgBa,QAAQ,IAAMX,SAASlC;;;;AAIrF,EAAC"}
1
+ {"version":3,"sources":["../../../../../src/views/Edit/Default/Auth/APIKey.tsx"],"sourcesContent":["'use client'\nimport type { PayloadRequest } from 'payload'\n\nimport {\n CopyToClipboard,\n FieldLabel,\n GenerateConfirmation,\n useConfig,\n useField,\n useFormFields,\n useTranslation,\n} from '@payloadcms/ui'\nimport { text } from 'payload/shared'\nimport React, { useEffect, useMemo, useState } from 'react'\nimport { v4 as uuidv4 } from 'uuid'\n\nconst path = 'apiKey'\nconst baseClass = 'api-key'\nconst fieldBaseClass = 'field-type'\n\nexport const APIKey: React.FC<{ enabled: boolean; readOnly?: boolean }> = ({\n enabled,\n readOnly,\n}) => {\n const [initialAPIKey] = useState(uuidv4())\n const [highlightedField, setHighlightedField] = useState(false)\n const { t } = useTranslation()\n const config = useConfig()\n\n const apiKey = useFormFields(([fields]) => (fields && fields[path]) || null)\n\n const validate = (val) =>\n text(val, {\n name: 'apiKey',\n type: 'text',\n data: {},\n maxLength: 48,\n minLength: 24,\n preferences: { fields: {} },\n req: {\n payload: {\n config,\n },\n t,\n } as PayloadRequest,\n siblingData: {},\n })\n\n const apiKeyValue = apiKey?.value\n\n const APIKeyLabel = useMemo(\n () => (\n <div className={`${baseClass}__label`}>\n <span>API Key</span>\n <CopyToClipboard value={apiKeyValue as string} />\n </div>\n ),\n [apiKeyValue],\n )\n\n const fieldType = useField({\n path: 'apiKey',\n validate,\n })\n\n const highlightField = () => {\n if (highlightedField) {\n setHighlightedField(false)\n }\n setTimeout(() => {\n setHighlightedField(true)\n }, 1)\n }\n\n const { setValue, value } = fieldType\n\n useEffect(() => {\n if (!apiKeyValue && enabled) {\n setValue(initialAPIKey)\n }\n if (!enabled && apiKeyValue) {\n setValue(null)\n }\n }, [apiKeyValue, enabled, setValue, initialAPIKey])\n\n useEffect(() => {\n if (highlightedField) {\n setTimeout(() => {\n setHighlightedField(false)\n }, 10000)\n }\n }, [highlightedField])\n\n if (!enabled) {\n return null\n }\n\n return (\n <React.Fragment>\n <div className={[fieldBaseClass, 'api-key', 'read-only'].filter(Boolean).join(' ')}>\n <FieldLabel CustomLabel={APIKeyLabel} htmlFor={path} />\n <input\n aria-label=\"API Key\"\n className={highlightedField ? 'highlight' : undefined}\n disabled\n id=\"apiKey\"\n name=\"apiKey\"\n type=\"text\"\n value={(value as string) || ''}\n />\n </div>\n {!readOnly && (\n <GenerateConfirmation highlightField={highlightField} setKey={() => setValue(uuidv4())} />\n )}\n </React.Fragment>\n )\n}\n"],"names":["CopyToClipboard","FieldLabel","GenerateConfirmation","useConfig","useField","useFormFields","useTranslation","text","React","useEffect","useMemo","useState","v4","uuidv4","path","baseClass","fieldBaseClass","APIKey","enabled","readOnly","initialAPIKey","highlightedField","setHighlightedField","t","config","apiKey","fields","validate","val","name","type","data","maxLength","minLength","preferences","req","payload","siblingData","apiKeyValue","value","APIKeyLabel","div","className","span","fieldType","highlightField","setTimeout","setValue","Fragment","filter","Boolean","join","CustomLabel","htmlFor","input","aria-label","undefined","disabled","id","setKey"],"mappings":"AAAA;;AAGA,SACEA,eAAe,EACfC,UAAU,EACVC,oBAAoB,EACpBC,SAAS,EACTC,QAAQ,EACRC,aAAa,EACbC,cAAc,QACT,iBAAgB;AACvB,SAASC,IAAI,QAAQ,iBAAgB;AACrC,OAAOC,SAASC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAO;AAC3D,SAASC,MAAMC,MAAM,QAAQ,OAAM;AAEnC,MAAMC,OAAO;AACb,MAAMC,YAAY;AAClB,MAAMC,iBAAiB;AAEvB,OAAO,MAAMC,SAA6D,CAAC,EACzEC,OAAO,EACPC,QAAQ,EACT;IACC,MAAM,CAACC,cAAc,GAAGT,SAASE;IACjC,MAAM,CAACQ,kBAAkBC,oBAAoB,GAAGX,SAAS;IACzD,MAAM,EAAEY,CAAC,EAAE,GAAGjB;IACd,MAAMkB,SAASrB;IAEf,MAAMsB,SAASpB,cAAc,CAAC,CAACqB,OAAO,GAAK,AAACA,UAAUA,MAAM,CAACZ,KAAK,IAAK;IAEvE,MAAMa,WAAW,CAACC,MAChBrB,KAAKqB,KAAK;YACRC,MAAM;YACNC,MAAM;YACNC,MAAM,CAAC;YACPC,WAAW;YACXC,WAAW;YACXC,aAAa;gBAAER,QAAQ,CAAC;YAAE;YAC1BS,KAAK;gBACHC,SAAS;oBACPZ;gBACF;gBACAD;YACF;YACAc,aAAa,CAAC;QAChB;IAEF,MAAMC,cAAcb,QAAQc;IAE5B,MAAMC,cAAc9B,QAClB,kBACE,MAAC+B;YAAIC,WAAW,CAAC,EAAE3B,UAAU,OAAO,CAAC;;8BACnC,KAAC4B;8BAAK;;8BACN,KAAC3C;oBAAgBuC,OAAOD;;;YAG5B;QAACA;KAAY;IAGf,MAAMM,YAAYxC,SAAS;QACzBU,MAAM;QACNa;IACF;IAEA,MAAMkB,iBAAiB;QACrB,IAAIxB,kBAAkB;YACpBC,oBAAoB;QACtB;QACAwB,WAAW;YACTxB,oBAAoB;QACtB,GAAG;IACL;IAEA,MAAM,EAAEyB,QAAQ,EAAER,KAAK,EAAE,GAAGK;IAE5BnC,UAAU;QACR,IAAI,CAAC6B,eAAepB,SAAS;YAC3B6B,SAAS3B;QACX;QACA,IAAI,CAACF,WAAWoB,aAAa;YAC3BS,SAAS;QACX;IACF,GAAG;QAACT;QAAapB;QAAS6B;QAAU3B;KAAc;IAElDX,UAAU;QACR,IAAIY,kBAAkB;YACpByB,WAAW;gBACTxB,oBAAoB;YACtB,GAAG;QACL;IACF,GAAG;QAACD;KAAiB;IAErB,IAAI,CAACH,SAAS;QACZ,OAAO;IACT;IAEA,qBACE,MAACV,MAAMwC,QAAQ;;0BACb,MAACP;gBAAIC,WAAW;oBAAC1B;oBAAgB;oBAAW;iBAAY,CAACiC,MAAM,CAACC,SAASC,IAAI,CAAC;;kCAC5E,KAAClD;wBAAWmD,aAAaZ;wBAAaa,SAASvC;;kCAC/C,KAACwC;wBACCC,cAAW;wBACXb,WAAWrB,mBAAmB,cAAcmC;wBAC5CC,QAAQ;wBACRC,IAAG;wBACH7B,MAAK;wBACLC,MAAK;wBACLS,OAAO,AAACA,SAAoB;;;;YAG/B,CAACpB,0BACA,KAACjB;gBAAqB2C,gBAAgBA;gBAAgBc,QAAQ,IAAMZ,SAASlC;;;;AAIrF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/views/Edit/Default/Auth/index.tsx"],"names":[],"mappings":"AAeA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAG/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGvC,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAoKhC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/views/Edit/Default/Auth/index.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAGxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGvC,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuNhC,CAAA"}
@@ -1,21 +1,57 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Button, CheckboxField, ConfirmPasswordField, EmailField, PasswordField, TextField, useConfig, useDocumentInfo, useFormFields, useFormModified, useTranslation } from '@payloadcms/ui';
4
- import React, { useCallback, useEffect, useState } from 'react';
3
+ import { Button, CheckboxField, ConfirmPasswordField, EmailField, PasswordField, TextField, useAuth, useConfig, useDocumentInfo, useFormFields, useFormModified, useTranslation } from '@payloadcms/ui';
4
+ import { email as emailValidation } from 'payload/shared';
5
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
5
6
  import { toast } from 'sonner';
6
7
  import { APIKey } from './APIKey.js';
7
8
  const baseClass = 'auth-fields';
8
9
  export const Auth = (props)=>{
9
- const { className, collectionSlug, disableLocalStrategy, email, loginWithUsername, operation, readOnly, requirePassword, useAPIKey, username, verify } = props;
10
+ const { className, collectionSlug, disableLocalStrategy, email, loginWithUsername, operation, readOnly, requirePassword, setSchemaPath, setValidateBeforeSubmit, useAPIKey, username, verify } = props;
11
+ const { permissions } = useAuth();
10
12
  const [changingPassword, setChangingPassword] = useState(requirePassword);
11
13
  const enableAPIKey = useFormFields(([fields])=>fields && fields?.enableAPIKey || null);
14
+ const forceOpenChangePassword = useFormFields(([fields])=>fields && fields?.password || null);
12
15
  const dispatchFields = useFormFields((reducer)=>reducer[1]);
13
16
  const modified = useFormModified();
14
17
  const { i18n, t } = useTranslation();
15
18
  const { isInitializing } = useDocumentInfo();
16
19
  const { routes: { api }, serverURL } = useConfig();
17
- const handleChangePassword = useCallback((state)=>{
18
- if (!state) {
20
+ const hasPermissionToUnlock = useMemo(()=>{
21
+ const collection = permissions?.collections?.[collectionSlug];
22
+ if (collection) {
23
+ const unlock = 'unlock' in collection ? collection.unlock : undefined;
24
+ if (unlock) {
25
+ // current types for permissions do not include auth permissions, this will be fixed in another branch soon, for now we need to ignore the types
26
+ // @todo: fix types
27
+ // @ts-expect-error
28
+ return unlock.permission;
29
+ }
30
+ }
31
+ return false;
32
+ }, [
33
+ permissions,
34
+ collectionSlug
35
+ ]);
36
+ const handleChangePassword = useCallback((showPasswordFields)=>{
37
+ if (showPasswordFields) {
38
+ setValidateBeforeSubmit(true);
39
+ setSchemaPath(`_${collectionSlug}.auth`);
40
+ dispatchFields({
41
+ type: 'UPDATE',
42
+ errorMessage: t('validation:required'),
43
+ path: 'password',
44
+ valid: false
45
+ });
46
+ dispatchFields({
47
+ type: 'UPDATE',
48
+ errorMessage: t('validation:required'),
49
+ path: 'confirm-password',
50
+ valid: false
51
+ });
52
+ } else {
53
+ setValidateBeforeSubmit(false);
54
+ setSchemaPath(collectionSlug);
19
55
  dispatchFields({
20
56
  type: 'REMOVE',
21
57
  path: 'password'
@@ -25,9 +61,13 @@ export const Auth = (props)=>{
25
61
  path: 'confirm-password'
26
62
  });
27
63
  }
28
- setChangingPassword(state);
64
+ setChangingPassword(showPasswordFields);
29
65
  }, [
30
- dispatchFields
66
+ dispatchFields,
67
+ t,
68
+ collectionSlug,
69
+ setSchemaPath,
70
+ setValidateBeforeSubmit
31
71
  ]);
32
72
  const unlock = useCallback(async ()=>{
33
73
  const url = `${serverURL}${api}/${collectionSlug}/unlock`;
@@ -56,7 +96,8 @@ export const Auth = (props)=>{
56
96
  collectionSlug,
57
97
  email,
58
98
  username,
59
- t
99
+ t,
100
+ loginWithUsername
60
101
  ]);
61
102
  useEffect(()=>{
62
103
  if (!modified) {
@@ -69,6 +110,7 @@ export const Auth = (props)=>{
69
110
  return null;
70
111
  }
71
112
  const disabled = readOnly || isInitializing;
113
+ const showPasswordFields = changingPassword || forceOpenChangePassword;
72
114
  return /*#__PURE__*/ _jsxs("div", {
73
115
  className: [
74
116
  baseClass,
@@ -90,16 +132,29 @@ export const Auth = (props)=>{
90
132
  label: t('general:email'),
91
133
  name: "email",
92
134
  readOnly: readOnly,
93
- required: !loginWithUsername || loginWithUsername?.requireEmail
135
+ required: !loginWithUsername || loginWithUsername?.requireEmail,
136
+ validate: (value)=>emailValidation(value, {
137
+ name: 'email',
138
+ type: 'email',
139
+ data: {},
140
+ preferences: {
141
+ fields: {}
142
+ },
143
+ req: {
144
+ t
145
+ },
146
+ required: true,
147
+ siblingData: {}
148
+ })
94
149
  }),
95
- (changingPassword || requirePassword) && /*#__PURE__*/ _jsxs("div", {
150
+ (showPasswordFields || requirePassword) && /*#__PURE__*/ _jsxs("div", {
96
151
  className: `${baseClass}__changing-password`,
97
152
  children: [
98
153
  /*#__PURE__*/ _jsx(PasswordField, {
99
- autoComplete: "off",
100
154
  disabled: disabled,
101
155
  label: t('authentication:newPassword'),
102
156
  name: "password",
157
+ path: "password",
103
158
  required: true
104
159
  }),
105
160
  /*#__PURE__*/ _jsx(ConfirmPasswordField, {
@@ -110,14 +165,14 @@ export const Auth = (props)=>{
110
165
  /*#__PURE__*/ _jsxs("div", {
111
166
  className: `${baseClass}__controls`,
112
167
  children: [
113
- changingPassword && !requirePassword && /*#__PURE__*/ _jsx(Button, {
168
+ showPasswordFields && !requirePassword && /*#__PURE__*/ _jsx(Button, {
114
169
  buttonStyle: "secondary",
115
170
  disabled: disabled,
116
171
  onClick: ()=>handleChangePassword(false),
117
172
  size: "small",
118
173
  children: t('general:cancel')
119
174
  }),
120
- !changingPassword && !requirePassword && /*#__PURE__*/ _jsx(Button, {
175
+ !showPasswordFields && !requirePassword && /*#__PURE__*/ _jsx(Button, {
121
176
  buttonStyle: "secondary",
122
177
  disabled: disabled,
123
178
  id: "change-password",
@@ -125,10 +180,10 @@ export const Auth = (props)=>{
125
180
  size: "small",
126
181
  children: t('authentication:changePassword')
127
182
  }),
128
- operation === 'update' && /*#__PURE__*/ _jsx(Button, {
183
+ operation === 'update' && hasPermissionToUnlock && /*#__PURE__*/ _jsx(Button, {
129
184
  buttonStyle: "secondary",
130
185
  disabled: disabled,
131
- onClick: ()=>unlock(),
186
+ onClick: ()=>void unlock(),
132
187
  size: "small",
133
188
  children: t('authentication:forceUnlock')
134
189
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/views/Edit/Default/Auth/index.tsx"],"sourcesContent":["'use client'\n\nimport {\n Button,\n CheckboxField,\n ConfirmPasswordField,\n EmailField,\n PasswordField,\n TextField,\n useConfig,\n useDocumentInfo,\n useFormFields,\n useFormModified,\n useTranslation,\n} from '@payloadcms/ui'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props } from './types.js'\n\nimport { APIKey } from './APIKey.js'\nimport './index.scss'\n\nconst baseClass = 'auth-fields'\n\nexport const Auth: React.FC<Props> = (props) => {\n const {\n className,\n collectionSlug,\n disableLocalStrategy,\n email,\n loginWithUsername,\n operation,\n readOnly,\n requirePassword,\n useAPIKey,\n username,\n verify,\n } = props\n\n const [changingPassword, setChangingPassword] = useState(requirePassword)\n const enableAPIKey = useFormFields(([fields]) => (fields && fields?.enableAPIKey) || null)\n const dispatchFields = useFormFields((reducer) => reducer[1])\n const modified = useFormModified()\n const { i18n, t } = useTranslation()\n const { isInitializing } = useDocumentInfo()\n\n const {\n routes: { api },\n serverURL,\n } = useConfig()\n\n const handleChangePassword = useCallback(\n (state: boolean) => {\n if (!state) {\n dispatchFields({ type: 'REMOVE', path: 'password' })\n dispatchFields({ type: 'REMOVE', path: 'confirm-password' })\n }\n\n setChangingPassword(state)\n },\n [dispatchFields],\n )\n\n const unlock = useCallback(async () => {\n const url = `${serverURL}${api}/${collectionSlug}/unlock`\n const response = await fetch(url, {\n body:\n loginWithUsername && username ? JSON.stringify({ username }) : JSON.stringify({ email }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n if (response.status === 200) {\n toast.success(t('authentication:successfullyUnlocked'))\n } else {\n toast.error(t('authentication:failedToUnlock'))\n }\n }, [i18n, serverURL, api, collectionSlug, email, username, t])\n\n useEffect(() => {\n if (!modified) {\n setChangingPassword(false)\n }\n }, [modified])\n\n if (disableLocalStrategy && !useAPIKey) {\n return null\n }\n\n const disabled = readOnly || isInitializing\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n {!disableLocalStrategy && (\n <React.Fragment>\n {Boolean(loginWithUsername) && (\n <TextField\n disabled={disabled}\n label={t('authentication:username')}\n name=\"username\"\n readOnly={readOnly}\n required\n />\n )}\n {(!loginWithUsername ||\n loginWithUsername?.allowEmailLogin ||\n loginWithUsername?.requireEmail) && (\n <EmailField\n autoComplete=\"email\"\n disabled={disabled}\n label={t('general:email')}\n name=\"email\"\n readOnly={readOnly}\n required={!loginWithUsername || loginWithUsername?.requireEmail}\n />\n )}\n {(changingPassword || requirePassword) && (\n <div className={`${baseClass}__changing-password`}>\n <PasswordField\n autoComplete=\"off\"\n disabled={disabled}\n label={t('authentication:newPassword')}\n name=\"password\"\n required\n />\n <ConfirmPasswordField disabled={readOnly} />\n </div>\n )}\n <div className={`${baseClass}__controls`}>\n {changingPassword && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n onClick={() => handleChangePassword(false)}\n size=\"small\"\n >\n {t('general:cancel')}\n </Button>\n )}\n {!changingPassword && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n id=\"change-password\"\n onClick={() => handleChangePassword(true)}\n size=\"small\"\n >\n {t('authentication:changePassword')}\n </Button>\n )}\n {operation === 'update' && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n onClick={() => unlock()}\n size=\"small\"\n >\n {t('authentication:forceUnlock')}\n </Button>\n )}\n </div>\n </React.Fragment>\n )}\n {useAPIKey && (\n <div className={`${baseClass}__api-key`}>\n <CheckboxField\n disabled={disabled}\n label={t('authentication:enableAPIKey')}\n name=\"enableAPIKey\"\n readOnly={readOnly}\n />\n <APIKey enabled={!!enableAPIKey?.value} readOnly={readOnly} />\n </div>\n )}\n {verify && (\n <CheckboxField\n disabled={disabled}\n label={t('authentication:verified')}\n name=\"_verified\"\n readOnly={readOnly}\n />\n )}\n </div>\n )\n}\n"],"names":["Button","CheckboxField","ConfirmPasswordField","EmailField","PasswordField","TextField","useConfig","useDocumentInfo","useFormFields","useFormModified","useTranslation","React","useCallback","useEffect","useState","toast","APIKey","baseClass","Auth","props","className","collectionSlug","disableLocalStrategy","email","loginWithUsername","operation","readOnly","requirePassword","useAPIKey","username","verify","changingPassword","setChangingPassword","enableAPIKey","fields","dispatchFields","reducer","modified","i18n","t","isInitializing","routes","api","serverURL","handleChangePassword","state","type","path","unlock","url","response","fetch","body","JSON","stringify","credentials","headers","language","method","status","success","error","disabled","div","filter","Boolean","join","Fragment","label","name","required","allowEmailLogin","requireEmail","autoComplete","buttonStyle","onClick","size","id","enabled","value"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/views/Edit/Default/Auth/index.tsx"],"sourcesContent":["'use client'\n\nimport {\n Button,\n CheckboxField,\n ConfirmPasswordField,\n EmailField,\n PasswordField,\n TextField,\n useAuth,\n useConfig,\n useDocumentInfo,\n useFormFields,\n useFormModified,\n useTranslation,\n} from '@payloadcms/ui'\nimport { email as emailValidation } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props } from './types.js'\n\nimport { APIKey } from './APIKey.js'\nimport './index.scss'\n\nconst baseClass = 'auth-fields'\n\nexport const Auth: React.FC<Props> = (props) => {\n const {\n className,\n collectionSlug,\n disableLocalStrategy,\n email,\n loginWithUsername,\n operation,\n readOnly,\n requirePassword,\n setSchemaPath,\n setValidateBeforeSubmit,\n useAPIKey,\n username,\n verify,\n } = props\n\n const { permissions } = useAuth()\n const [changingPassword, setChangingPassword] = useState(requirePassword)\n const enableAPIKey = useFormFields(([fields]) => (fields && fields?.enableAPIKey) || null)\n const forceOpenChangePassword = useFormFields(([fields]) => (fields && fields?.password) || null)\n const dispatchFields = useFormFields((reducer) => reducer[1])\n const modified = useFormModified()\n const { i18n, t } = useTranslation()\n const { isInitializing } = useDocumentInfo()\n\n const {\n routes: { api },\n serverURL,\n } = useConfig()\n\n const hasPermissionToUnlock: boolean = useMemo(() => {\n const collection = permissions?.collections?.[collectionSlug]\n\n if (collection) {\n const unlock = 'unlock' in collection ? collection.unlock : undefined\n\n if (unlock) {\n // current types for permissions do not include auth permissions, this will be fixed in another branch soon, for now we need to ignore the types\n // @todo: fix types\n // @ts-expect-error\n return unlock.permission\n }\n }\n\n return false\n }, [permissions, collectionSlug])\n\n const handleChangePassword = useCallback(\n (showPasswordFields: boolean) => {\n if (showPasswordFields) {\n setValidateBeforeSubmit(true)\n setSchemaPath(`_${collectionSlug}.auth`)\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'password',\n valid: false,\n })\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'confirm-password',\n valid: false,\n })\n } else {\n setValidateBeforeSubmit(false)\n setSchemaPath(collectionSlug)\n dispatchFields({ type: 'REMOVE', path: 'password' })\n dispatchFields({ type: 'REMOVE', path: 'confirm-password' })\n }\n\n setChangingPassword(showPasswordFields)\n },\n [dispatchFields, t, collectionSlug, setSchemaPath, setValidateBeforeSubmit],\n )\n\n const unlock = useCallback(async () => {\n const url = `${serverURL}${api}/${collectionSlug}/unlock`\n const response = await fetch(url, {\n body:\n loginWithUsername && username ? JSON.stringify({ username }) : JSON.stringify({ email }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n if (response.status === 200) {\n toast.success(t('authentication:successfullyUnlocked'))\n } else {\n toast.error(t('authentication:failedToUnlock'))\n }\n }, [i18n, serverURL, api, collectionSlug, email, username, t, loginWithUsername])\n\n useEffect(() => {\n if (!modified) {\n setChangingPassword(false)\n }\n }, [modified])\n\n if (disableLocalStrategy && !useAPIKey) {\n return null\n }\n\n const disabled = readOnly || isInitializing\n\n const showPasswordFields = changingPassword || forceOpenChangePassword\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n {!disableLocalStrategy && (\n <React.Fragment>\n {Boolean(loginWithUsername) && (\n <TextField\n disabled={disabled}\n label={t('authentication:username')}\n name=\"username\"\n readOnly={readOnly}\n required\n />\n )}\n {(!loginWithUsername ||\n loginWithUsername?.allowEmailLogin ||\n loginWithUsername?.requireEmail) && (\n <EmailField\n autoComplete=\"email\"\n disabled={disabled}\n label={t('general:email')}\n name=\"email\"\n readOnly={readOnly}\n required={!loginWithUsername || loginWithUsername?.requireEmail}\n validate={(value) =>\n emailValidation(value, {\n name: 'email',\n type: 'email',\n data: {},\n preferences: { fields: {} },\n req: { t } as any,\n required: true,\n siblingData: {},\n })\n }\n />\n )}\n {(showPasswordFields || requirePassword) && (\n <div className={`${baseClass}__changing-password`}>\n <PasswordField\n disabled={disabled}\n label={t('authentication:newPassword')}\n name=\"password\"\n path=\"password\"\n required\n />\n <ConfirmPasswordField disabled={readOnly} />\n </div>\n )}\n <div className={`${baseClass}__controls`}>\n {showPasswordFields && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n onClick={() => handleChangePassword(false)}\n size=\"small\"\n >\n {t('general:cancel')}\n </Button>\n )}\n {!showPasswordFields && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n id=\"change-password\"\n onClick={() => handleChangePassword(true)}\n size=\"small\"\n >\n {t('authentication:changePassword')}\n </Button>\n )}\n {operation === 'update' && hasPermissionToUnlock && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n onClick={() => void unlock()}\n size=\"small\"\n >\n {t('authentication:forceUnlock')}\n </Button>\n )}\n </div>\n </React.Fragment>\n )}\n {useAPIKey && (\n <div className={`${baseClass}__api-key`}>\n <CheckboxField\n disabled={disabled}\n label={t('authentication:enableAPIKey')}\n name=\"enableAPIKey\"\n readOnly={readOnly}\n />\n <APIKey enabled={!!enableAPIKey?.value} readOnly={readOnly} />\n </div>\n )}\n {verify && (\n <CheckboxField\n disabled={disabled}\n label={t('authentication:verified')}\n name=\"_verified\"\n readOnly={readOnly}\n />\n )}\n </div>\n )\n}\n"],"names":["Button","CheckboxField","ConfirmPasswordField","EmailField","PasswordField","TextField","useAuth","useConfig","useDocumentInfo","useFormFields","useFormModified","useTranslation","email","emailValidation","React","useCallback","useEffect","useMemo","useState","toast","APIKey","baseClass","Auth","props","className","collectionSlug","disableLocalStrategy","loginWithUsername","operation","readOnly","requirePassword","setSchemaPath","setValidateBeforeSubmit","useAPIKey","username","verify","permissions","changingPassword","setChangingPassword","enableAPIKey","fields","forceOpenChangePassword","password","dispatchFields","reducer","modified","i18n","t","isInitializing","routes","api","serverURL","hasPermissionToUnlock","collection","collections","unlock","undefined","permission","handleChangePassword","showPasswordFields","type","errorMessage","path","valid","url","response","fetch","body","JSON","stringify","credentials","headers","language","method","status","success","error","disabled","div","filter","Boolean","join","Fragment","label","name","required","allowEmailLogin","requireEmail","autoComplete","validate","value","data","preferences","req","siblingData","buttonStyle","onClick","size","id","enabled"],"mappings":"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"}
@@ -8,6 +8,8 @@ export type Props = {
8
8
  operation: 'create' | 'update';
9
9
  readOnly: boolean;
10
10
  requirePassword?: boolean;
11
+ setSchemaPath: (path: string) => void;
12
+ setValidateBeforeSubmit: (validate: boolean) => void;
11
13
  useAPIKey?: boolean;
12
14
  username: string;
13
15
  verify?: VerifyConfig | boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/views/Edit/Default/Auth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtE,MAAM,MAAM,KAAK,GAAG;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACjD,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,iBAAiB,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAA;IACzE,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAA;CAChC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/views/Edit/Default/Auth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtE,MAAM,MAAM,KAAK,GAAG;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACjD,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,iBAAiB,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAA;IACzE,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,uBAAuB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;IACpD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAA;CAChC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/views/Edit/Default/Auth/types.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, VerifyConfig } from 'payload'\n\nexport type Props = {\n className?: string\n collectionSlug: SanitizedCollectionConfig['slug']\n disableLocalStrategy?: boolean\n email: string\n loginWithUsername: SanitizedCollectionConfig['auth']['loginWithUsername']\n operation: 'create' | 'update'\n readOnly: boolean\n requirePassword?: boolean\n useAPIKey?: boolean\n username: string\n verify?: VerifyConfig | boolean\n}\n"],"names":[],"mappings":"AAEA,WAYC"}
1
+ {"version":3,"sources":["../../../../../src/views/Edit/Default/Auth/types.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, VerifyConfig } from 'payload'\n\nexport type Props = {\n className?: string\n collectionSlug: SanitizedCollectionConfig['slug']\n disableLocalStrategy?: boolean\n email: string\n loginWithUsername: SanitizedCollectionConfig['auth']['loginWithUsername']\n operation: 'create' | 'update'\n readOnly: boolean\n requirePassword?: boolean\n setSchemaPath: (path: string) => void\n setValidateBeforeSubmit: (validate: boolean) => void\n useAPIKey?: boolean\n username: string\n verify?: VerifyConfig | boolean\n}\n"],"names":[],"mappings":"AAEA,WAcC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/Default/index.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAMpD,OAAO,cAAc,CAAA;AAOrB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAwOnC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/Default/index.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAA0C,MAAM,OAAO,CAAA;AAM9D,OAAO,cAAc,CAAA;AAOrB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EA4OnC,CAAA"}