@payloadcms/next 3.0.0-beta.14 → 3.0.0-beta.18
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.
- package/dist/exports/utilities.d.ts +3 -1
- package/dist/exports/utilities.d.ts.map +1 -1
- package/dist/exports/utilities.js +3 -1
- package/dist/exports/utilities.js.map +1 -1
- package/dist/prod/styles.css +1 -1
- package/dist/routes/graphql/handler.d.ts.map +1 -1
- package/dist/routes/graphql/handler.js +12 -4
- package/dist/routes/graphql/handler.js.map +1 -1
- package/dist/routes/rest/auth/registerFirstUser.d.ts.map +1 -1
- package/dist/routes/rest/auth/registerFirstUser.js +0 -9
- package/dist/routes/rest/auth/registerFirstUser.js.map +1 -1
- package/dist/routes/rest/buildFormState.d.ts +3 -3
- package/dist/routes/rest/buildFormState.d.ts.map +1 -1
- package/dist/routes/rest/buildFormState.js +21 -6
- package/dist/routes/rest/buildFormState.js.map +1 -1
- package/dist/routes/rest/files/checkFileAccess.d.ts +2 -2
- package/dist/routes/rest/files/checkFileAccess.d.ts.map +1 -1
- package/dist/routes/rest/files/checkFileAccess.js.map +1 -1
- package/dist/routes/rest/files/getFile.d.ts +2 -2
- package/dist/routes/rest/files/getFile.d.ts.map +1 -1
- package/dist/routes/rest/files/getFile.js.map +1 -1
- package/dist/routes/rest/index.d.ts.map +1 -1
- package/dist/routes/rest/index.js +260 -192
- package/dist/routes/rest/index.js.map +1 -1
- package/dist/routes/rest/routeError.d.ts +2 -2
- package/dist/routes/rest/routeError.d.ts.map +1 -1
- package/dist/routes/rest/routeError.js.map +1 -1
- package/dist/routes/rest/types.d.ts +7 -7
- package/dist/routes/rest/types.d.ts.map +1 -1
- package/dist/routes/rest/types.js.map +1 -1
- package/dist/utilities/addDataAndFileToRequest.d.ts +11 -0
- package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -0
- package/dist/utilities/addDataAndFileToRequest.js +53 -0
- package/dist/utilities/addDataAndFileToRequest.js.map +1 -0
- package/dist/utilities/addLocalesToRequest.d.ts +20 -0
- package/dist/utilities/addLocalesToRequest.d.ts.map +1 -0
- package/dist/utilities/addLocalesToRequest.js +41 -0
- package/dist/utilities/addLocalesToRequest.js.map +1 -0
- package/dist/utilities/buildFieldSchemaMap/index.d.ts +2 -2
- package/dist/utilities/buildFieldSchemaMap/index.d.ts.map +1 -1
- package/dist/utilities/buildFieldSchemaMap/index.js.map +1 -1
- package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
- package/dist/utilities/createPayloadRequest.js +15 -28
- package/dist/utilities/createPayloadRequest.js.map +1 -1
- package/dist/utilities/getDataAndFile.d.ts +2 -2
- package/dist/utilities/getDataAndFile.d.ts.map +1 -1
- package/dist/utilities/getDataAndFile.js.map +1 -1
- package/dist/utilities/headersWithCors.d.ts +2 -2
- package/dist/utilities/headersWithCors.d.ts.map +1 -1
- package/dist/utilities/headersWithCors.js.map +1 -1
- package/dist/utilities/initPage.js.map +1 -1
- package/dist/views/CreateFirstUser/index.client.d.ts +3 -3
- package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
- package/dist/views/CreateFirstUser/index.client.js +48 -6
- package/dist/views/CreateFirstUser/index.client.js.map +1 -1
- package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
- package/dist/views/CreateFirstUser/index.js +9 -46
- package/dist/views/CreateFirstUser/index.js.map +1 -1
- package/dist/views/CreateFirstUser/index.scss +2 -12
- package/dist/views/Edit/Default/Auth/APIKey.d.ts +1 -0
- package/dist/views/Edit/Default/Auth/APIKey.d.ts.map +1 -1
- package/dist/views/Edit/Default/Auth/APIKey.js +13 -6
- package/dist/views/Edit/Default/Auth/APIKey.js.map +1 -1
- package/dist/views/Edit/Default/Auth/index.js +2 -1
- package/dist/views/Edit/Default/Auth/index.js.map +1 -1
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +3 -0
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
- package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
- package/dist/views/Login/LoginForm/index.js +6 -0
- package/dist/views/Login/LoginForm/index.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/createPayloadRequest.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/createPayloadRequest.ts"],"sourcesContent":["import type { CustomPayloadRequestProperties, PayloadRequest, SanitizedConfig } from 'payload/types'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { executeAuthStrategies } from 'payload/auth'\nimport { parseCookies } from 'payload/auth'\nimport { getDataLoader } from 'payload/utilities'\nimport qs from 'qs'\nimport { URL } from 'url'\n\nimport { sanitizeLocales } from './addLocalesToRequest.js'\nimport { getPayloadHMR } from './getPayloadHMR.js'\nimport { getRequestLanguage } from './getRequestLanguage.js'\n\ntype Args = {\n config: Promise<SanitizedConfig> | SanitizedConfig\n params?: {\n collection: string\n }\n request: Request\n}\n\nexport const createPayloadRequest = async ({\n config: configPromise,\n params,\n request,\n}: Args): Promise<PayloadRequest> => {\n const cookies = parseCookies(request.headers)\n const payload = await getPayloadHMR({ config: configPromise })\n\n const { config } = payload\n\n const urlProperties = new URL(request.url)\n const { pathname, searchParams } = urlProperties\n\n const isGraphQL =\n !config.graphQL.disable && pathname === `${config.routes.api}${config.routes.graphQL}`\n\n const language = getRequestLanguage({\n config,\n cookies,\n headers: request.headers,\n })\n\n const i18n = await initI18n({\n config: config.i18n,\n context: 'api',\n language,\n })\n\n let locale\n let fallbackLocale\n if (config.localization) {\n const locales = sanitizeLocales({\n fallbackLocale: searchParams.get('fallback-locale'),\n locale: searchParams.get('locale'),\n localization: payload.config.localization,\n })\n locale = locales.locale\n fallbackLocale = locales.fallbackLocale\n }\n\n const customRequest: CustomPayloadRequestProperties = {\n context: {},\n fallbackLocale,\n hash: urlProperties.hash,\n host: urlProperties.host,\n href: urlProperties.href,\n i18n,\n locale,\n origin: urlProperties.origin,\n pathname: urlProperties.pathname,\n payload,\n payloadAPI: isGraphQL ? 'GraphQL' : 'REST',\n payloadDataLoader: undefined,\n payloadUploadSizes: {},\n port: urlProperties.port,\n protocol: urlProperties.protocol,\n query: urlProperties.search\n ? qs.parse(urlProperties.search, {\n arrayLimit: 1000,\n depth: 10,\n ignoreQueryPrefix: true,\n })\n : {},\n routeParams: params || {},\n search: urlProperties.search,\n searchParams: urlProperties.searchParams,\n t: i18n.t,\n transactionID: undefined,\n user: null,\n }\n\n const req: PayloadRequest = Object.assign(request, customRequest)\n\n req.payloadDataLoader = getDataLoader(req)\n\n req.user = await executeAuthStrategies({\n cookies,\n headers: req.headers,\n isGraphQL,\n payload,\n })\n\n return req\n}\n"],"names":["initI18n","executeAuthStrategies","parseCookies","getDataLoader","qs","URL","sanitizeLocales","getPayloadHMR","getRequestLanguage","createPayloadRequest","config","configPromise","params","request","cookies","headers","payload","urlProperties","url","pathname","searchParams","isGraphQL","graphQL","disable","routes","api","language","i18n","context","locale","fallbackLocale","localization","locales","get","customRequest","hash","host","href","origin","payloadAPI","payloadDataLoader","undefined","payloadUploadSizes","port","protocol","query","search","parse","arrayLimit","depth","ignoreQueryPrefix","routeParams","t","transactionID","user","req","Object","assign"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,qBAAqB,QAAQ,eAAc;AACpD,SAASC,YAAY,QAAQ,eAAc;AAC3C,SAASC,aAAa,QAAQ,oBAAmB;AACjD,OAAOC,QAAQ,KAAI;AACnB,SAASC,GAAG,QAAQ,MAAK;AAEzB,SAASC,eAAe,QAAQ,2BAA0B;AAC1D,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,kBAAkB,QAAQ,0BAAyB;AAU5D,OAAO,MAAMC,uBAAuB,OAAO,EACzCC,QAAQC,aAAa,EACrBC,MAAM,EACNC,OAAO,EACF;IACL,MAAMC,UAAUZ,aAAaW,QAAQE,OAAO;IAC5C,MAAMC,UAAU,MAAMT,cAAc;QAAEG,QAAQC;IAAc;IAE5D,MAAM,EAAED,MAAM,EAAE,GAAGM;IAEnB,MAAMC,gBAAgB,IAAIZ,IAAIQ,QAAQK,GAAG;IACzC,MAAM,EAAEC,QAAQ,EAAEC,YAAY,EAAE,GAAGH;IAEnC,MAAMI,YACJ,CAACX,OAAOY,OAAO,CAACC,OAAO,IAAIJ,aAAa,CAAC,EAAET,OAAOc,MAAM,CAACC,GAAG,CAAC,EAAEf,OAAOc,MAAM,CAACF,OAAO,CAAC,CAAC;IAExF,MAAMI,WAAWlB,mBAAmB;QAClCE;QACAI;QACAC,SAASF,QAAQE,OAAO;IAC1B;IAEA,MAAMY,OAAO,MAAM3B,SAAS;QAC1BU,QAAQA,OAAOiB,IAAI;QACnBC,SAAS;QACTF;IACF;IAEA,IAAIG;IACJ,IAAIC;IACJ,IAAIpB,OAAOqB,YAAY,EAAE;QACvB,MAAMC,UAAU1B,gBAAgB;YAC9BwB,gBAAgBV,aAAaa,GAAG,CAAC;YACjCJ,QAAQT,aAAaa,GAAG,CAAC;YACzBF,cAAcf,QAAQN,MAAM,CAACqB,YAAY;QAC3C;QACAF,SAASG,QAAQH,MAAM;QACvBC,iBAAiBE,QAAQF,cAAc;IACzC;IAEA,MAAMI,gBAAgD;QACpDN,SAAS,CAAC;QACVE;QACAK,MAAMlB,cAAckB,IAAI;QACxBC,MAAMnB,cAAcmB,IAAI;QACxBC,MAAMpB,cAAcoB,IAAI;QACxBV;QACAE;QACAS,QAAQrB,cAAcqB,MAAM;QAC5BnB,UAAUF,cAAcE,QAAQ;QAChCH;QACAuB,YAAYlB,YAAY,YAAY;QACpCmB,mBAAmBC;QACnBC,oBAAoB,CAAC;QACrBC,MAAM1B,cAAc0B,IAAI;QACxBC,UAAU3B,cAAc2B,QAAQ;QAChCC,OAAO5B,cAAc6B,MAAM,GACvB1C,GAAG2C,KAAK,CAAC9B,cAAc6B,MAAM,EAAE;YAC7BE,YAAY;YACZC,OAAO;YACPC,mBAAmB;QACrB,KACA,CAAC;QACLC,aAAavC,UAAU,CAAC;QACxBkC,QAAQ7B,cAAc6B,MAAM;QAC5B1B,cAAcH,cAAcG,YAAY;QACxCgC,GAAGzB,KAAKyB,CAAC;QACTC,eAAeZ;QACfa,MAAM;IACR;IAEA,MAAMC,MAAsBC,OAAOC,MAAM,CAAC5C,SAASqB;IAEnDqB,IAAIf,iBAAiB,GAAGrC,cAAcoD;IAEtCA,IAAID,IAAI,GAAG,MAAMrD,sBAAsB;QACrCa;QACAC,SAASwC,IAAIxC,OAAO;QACpBM;QACAL;IACF;IAEA,OAAOuC;AACT,EAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { Collection,
|
|
1
|
+
import type { Collection, PayloadRequestWithData, SanitizedConfig } from 'payload/types';
|
|
2
2
|
type GetDataAndFile = (args: {
|
|
3
3
|
collection: Collection;
|
|
4
4
|
config: SanitizedConfig;
|
|
5
5
|
request: Request;
|
|
6
6
|
}) => Promise<{
|
|
7
7
|
data: Record<string, any>;
|
|
8
|
-
file:
|
|
8
|
+
file: PayloadRequestWithData['file'];
|
|
9
9
|
}>;
|
|
10
10
|
export declare const getDataAndFile: GetDataAndFile;
|
|
11
11
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDataAndFile.d.ts","sourceRoot":"","sources":["../../src/utilities/getDataAndFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"getDataAndFile.d.ts","sourceRoot":"","sources":["../../src/utilities/getDataAndFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAMxF,KAAK,cAAc,GAAG,CAAC,IAAI,EAAE;IAC3B,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAK,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,IAAI,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAA;CACrC,CAAC,CAAA;AACF,eAAO,MAAM,cAAc,EAAE,cAwD5B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/getDataAndFile.ts"],"sourcesContent":["import type { Collection,
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/getDataAndFile.ts"],"sourcesContent":["import type { Collection, PayloadRequestWithData, SanitizedConfig } from 'payload/types'\n\nimport type { NextFileUploadOptions } from '../next-fileupload/index.js'\n\nimport { nextFileUpload } from '../next-fileupload/index.js'\n\ntype GetDataAndFile = (args: {\n collection: Collection\n config: SanitizedConfig\n request: Request\n}) => Promise<{\n data: Record<string, any>\n file: PayloadRequestWithData['file']\n}>\nexport const getDataAndFile: GetDataAndFile = async ({\n collection,\n config,\n request: incomingRequest,\n}) => {\n let data: Record<string, any> = undefined\n let file: PayloadRequestWithData['file'] = undefined\n\n if (\n ['PATCH', 'POST', 'PUT'].includes(incomingRequest.method.toUpperCase()) &&\n incomingRequest.body\n ) {\n const request = new Request(incomingRequest)\n const [contentType] = (request.headers.get('Content-Type') || '').split(';')\n\n if (contentType === 'application/json') {\n const bodyByteSize = parseInt(request.headers.get('Content-Length') || '0', 10)\n const upperByteLimit =\n typeof config.upload?.limits?.fieldSize === 'number'\n ? config.upload.limits.fields\n : undefined\n if (bodyByteSize <= upperByteLimit || upperByteLimit === undefined) {\n try {\n data = await request.json()\n } catch (error) {\n data = {}\n }\n } else {\n throw new Error('Request body size exceeds the limit')\n }\n } else {\n if (request.headers.has('Content-Length') && request.headers.get('Content-Length') !== '0') {\n const { error, fields, files } = await nextFileUpload({\n options: config.upload as NextFileUploadOptions,\n request,\n })\n\n if (error) {\n throw new Error(error.message)\n }\n\n if (collection?.config?.upload && files?.file) {\n file = files.file\n }\n\n if (fields?._payload && typeof fields._payload === 'string') {\n data = JSON.parse(fields._payload)\n }\n }\n }\n }\n\n return {\n data,\n file,\n }\n}\n"],"names":["nextFileUpload","getDataAndFile","collection","config","request","incomingRequest","data","undefined","file","includes","method","toUpperCase","body","Request","contentType","headers","get","split","bodyByteSize","parseInt","upperByteLimit","upload","limits","fieldSize","fields","json","error","Error","has","files","options","message","_payload","JSON","parse"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,cAAc,QAAQ,8BAA6B;AAU5D,OAAO,MAAMC,iBAAiC,OAAO,EACnDC,UAAU,EACVC,MAAM,EACNC,SAASC,eAAe,EACzB;IACC,IAAIC,OAA4BC;IAChC,IAAIC,OAAuCD;IAE3C,IACE;QAAC;QAAS;QAAQ;KAAM,CAACE,QAAQ,CAACJ,gBAAgBK,MAAM,CAACC,WAAW,OACpEN,gBAAgBO,IAAI,EACpB;QACA,MAAMR,UAAU,IAAIS,QAAQR;QAC5B,MAAM,CAACS,YAAY,GAAG,AAACV,CAAAA,QAAQW,OAAO,CAACC,GAAG,CAAC,mBAAmB,EAAC,EAAGC,KAAK,CAAC;QAExE,IAAIH,gBAAgB,oBAAoB;YACtC,MAAMI,eAAeC,SAASf,QAAQW,OAAO,CAACC,GAAG,CAAC,qBAAqB,KAAK;YAC5E,MAAMI,iBACJ,OAAOjB,OAAOkB,MAAM,EAAEC,QAAQC,cAAc,WACxCpB,OAAOkB,MAAM,CAACC,MAAM,CAACE,MAAM,GAC3BjB;YACN,IAAIW,gBAAgBE,kBAAkBA,mBAAmBb,WAAW;gBAClE,IAAI;oBACFD,OAAO,MAAMF,QAAQqB,IAAI;gBAC3B,EAAE,OAAOC,OAAO;oBACdpB,OAAO,CAAC;gBACV;YACF,OAAO;gBACL,MAAM,IAAIqB,MAAM;YAClB;QACF,OAAO;YACL,IAAIvB,QAAQW,OAAO,CAACa,GAAG,CAAC,qBAAqBxB,QAAQW,OAAO,CAACC,GAAG,CAAC,sBAAsB,KAAK;gBAC1F,MAAM,EAAEU,KAAK,EAAEF,MAAM,EAAEK,KAAK,EAAE,GAAG,MAAM7B,eAAe;oBACpD8B,SAAS3B,OAAOkB,MAAM;oBACtBjB;gBACF;gBAEA,IAAIsB,OAAO;oBACT,MAAM,IAAIC,MAAMD,MAAMK,OAAO;gBAC/B;gBAEA,IAAI7B,YAAYC,QAAQkB,UAAUQ,OAAOrB,MAAM;oBAC7CA,OAAOqB,MAAMrB,IAAI;gBACnB;gBAEA,IAAIgB,QAAQQ,YAAY,OAAOR,OAAOQ,QAAQ,KAAK,UAAU;oBAC3D1B,OAAO2B,KAAKC,KAAK,CAACV,OAAOQ,QAAQ;gBACnC;YACF;QACF;IACF;IAEA,OAAO;QACL1B;QACAE;IACF;AACF,EAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PayloadRequestWithData } from 'payload/types';
|
|
2
2
|
type CorsArgs = {
|
|
3
3
|
headers: Headers;
|
|
4
|
-
req: Partial<
|
|
4
|
+
req: Partial<PayloadRequestWithData>;
|
|
5
5
|
};
|
|
6
6
|
export declare const headersWithCors: ({ headers, req }: CorsArgs) => Headers;
|
|
7
7
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headersWithCors.d.ts","sourceRoot":"","sources":["../../src/utilities/headersWithCors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"headersWithCors.d.ts","sourceRoot":"","sources":["../../src/utilities/headersWithCors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAE3D,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAA;CACrC,CAAA;AACD,eAAO,MAAM,eAAe,qBAAsB,QAAQ,KAAG,OAoB5D,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/headersWithCors.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/headersWithCors.ts"],"sourcesContent":["import type { PayloadRequestWithData } from 'payload/types'\n\ntype CorsArgs = {\n headers: Headers\n req: Partial<PayloadRequestWithData>\n}\nexport const headersWithCors = ({ headers, req }: CorsArgs): Headers => {\n const cors = req?.payload.config.cors\n const requestOrigin = req?.headers.get('Origin')\n\n if (cors) {\n headers.set('Access-Control-Allow-Methods', 'PUT, PATCH, POST, GET, DELETE, OPTIONS')\n headers.set(\n 'Access-Control-Allow-Headers',\n 'Origin, X-Requested-With, Content-Type, Accept, Authorization, Content-Encoding, x-apollo-tracing',\n )\n\n if (cors === '*') {\n headers.set('Access-Control-Allow-Origin', '*')\n } else if (Array.isArray(cors) && cors.indexOf(requestOrigin) > -1) {\n headers.set('Access-Control-Allow-Credentials', 'true')\n headers.set('Access-Control-Allow-Origin', requestOrigin)\n }\n }\n\n return headers\n}\n"],"names":["headersWithCors","headers","req","cors","payload","config","requestOrigin","get","set","Array","isArray","indexOf"],"rangeMappings":";;;;;;;;;;;;;;","mappings":"AAMA,OAAO,MAAMA,kBAAkB,CAAC,EAAEC,OAAO,EAAEC,GAAG,EAAY;IACxD,MAAMC,OAAOD,KAAKE,QAAQC,OAAOF;IACjC,MAAMG,gBAAgBJ,KAAKD,QAAQM,IAAI;IAEvC,IAAIJ,MAAM;QACRF,QAAQO,GAAG,CAAC,gCAAgC;QAC5CP,QAAQO,GAAG,CACT,gCACA;QAGF,IAAIL,SAAS,KAAK;YAChBF,QAAQO,GAAG,CAAC,+BAA+B;QAC7C,OAAO,IAAIC,MAAMC,OAAO,CAACP,SAASA,KAAKQ,OAAO,CAACL,iBAAiB,CAAC,GAAG;YAClEL,QAAQO,GAAG,CAAC,oCAAoC;YAChDP,QAAQO,GAAG,CAAC,+BAA+BF;QAC7C;IACF;IAEA,OAAOL;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/initPage.ts"],"sourcesContent":["import type {\n InitPageResult,\n
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/initPage.ts"],"sourcesContent":["import type {\n InitPageResult,\n PayloadRequestWithData,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n VisibleEntities,\n} from 'payload/types'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { findLocaleFromCode } from '@payloadcms/ui/utilities/findLocaleFromCode'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { notFound, redirect } from 'next/navigation.js'\nimport { parseCookies } from 'payload/auth'\nimport { createLocalReq, isEntityHidden } from 'payload/utilities'\nimport qs from 'qs'\n\nimport { getPayloadHMR } from '../utilities/getPayloadHMR.js'\nimport { getRequestLanguage } from './getRequestLanguage.js'\n\ntype Args = {\n config: Promise<SanitizedConfig> | SanitizedConfig\n redirectUnauthenticatedUser?: boolean\n route: string\n searchParams: { [key: string]: string | string[] | undefined }\n}\n\nconst authRoutes = ['/login', '/logout', '/create-first-user', '/forgot', '/reset', '/verify']\n\nexport const initPage = async ({\n config: configPromise,\n redirectUnauthenticatedUser = false,\n route,\n searchParams,\n}: Args): Promise<InitPageResult> => {\n const headers = getHeaders()\n const localeParam = searchParams?.locale as string\n const payload = await getPayloadHMR({ config: configPromise })\n const { collections, globals, localization, routes } = payload.config\n\n const queryString = `${qs.stringify(searchParams ?? {}, { addQueryPrefix: true })}`\n const defaultLocale =\n localization && localization.defaultLocale ? localization.defaultLocale : 'en'\n const localeCode = localeParam || defaultLocale\n const locale = localization && findLocaleFromCode(localization, localeCode)\n const cookies = parseCookies(headers)\n const language = getRequestLanguage({ config: payload.config, cookies, headers })\n\n const i18n = await initI18n({\n config: payload.config.i18n,\n context: 'client',\n language,\n })\n\n const req = await createLocalReq(\n {\n fallbackLocale: null,\n locale: locale.code,\n req: {\n i18n,\n query: qs.parse(queryString, {\n depth: 10,\n ignoreQueryPrefix: true,\n }),\n url: `${payload.config.serverURL}${route}${searchParams ? queryString : ''}`,\n } as PayloadRequestWithData,\n },\n payload,\n )\n\n const { permissions, user } = await payload.auth({ headers, req })\n\n req.user = user\n\n const visibleEntities: VisibleEntities = {\n collections: payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n const {\n routes: { admin: adminRoute },\n } = payload.config\n\n const routeSegments = route.replace(adminRoute, '').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 const isAuthRoute = authRoutes.some((r) => r === route.replace(adminRoute, ''))\n\n if (redirectUnauthenticatedUser && !user && !isAuthRoute) {\n if (searchParams && 'redirect' in searchParams) delete searchParams.redirect\n\n const stringifiedSearchParams = Object.keys(searchParams ?? {}).length\n ? `?${qs.stringify(searchParams)}`\n : ''\n\n redirect(`${routes.admin}/login?redirect=${route + stringifiedSearchParams}`)\n }\n\n if (!permissions.canAccessAdmin && !isAuthRoute) {\n notFound()\n }\n\n let collectionConfig: SanitizedCollectionConfig\n let globalConfig: SanitizedGlobalConfig\n\n if (collectionSlug) {\n collectionConfig = collections.find((collection) => collection.slug === collectionSlug)\n\n if (!collectionConfig) {\n notFound()\n }\n }\n\n if (globalSlug) {\n globalConfig = globals.find((global) => global.slug === globalSlug)\n\n if (!globalConfig) {\n notFound()\n }\n }\n\n return {\n collectionConfig,\n cookies,\n docID,\n globalConfig,\n locale,\n permissions,\n req,\n translations: i18n.translations,\n visibleEntities,\n }\n}\n"],"names":["initI18n","findLocaleFromCode","headers","getHeaders","notFound","redirect","parseCookies","createLocalReq","isEntityHidden","qs","getPayloadHMR","getRequestLanguage","authRoutes","initPage","config","configPromise","redirectUnauthenticatedUser","route","searchParams","localeParam","locale","payload","collections","globals","localization","routes","queryString","stringify","addQueryPrefix","defaultLocale","localeCode","cookies","language","i18n","context","req","fallbackLocale","code","query","parse","depth","ignoreQueryPrefix","url","serverURL","permissions","user","auth","visibleEntities","map","slug","admin","hidden","filter","Boolean","adminRoute","routeSegments","replace","split","entityType","entitySlug","createOrID","collectionSlug","undefined","globalSlug","docID","isAuthRoute","some","r","stringifiedSearchParams","Object","keys","length","canAccessAdmin","collectionConfig","globalConfig","find","collection","global","translations"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FormState } from 'payload/types';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
export declare const
|
|
4
|
-
|
|
3
|
+
export declare const CreateFirstUserClient: React.FC<{
|
|
4
|
+
initialState: FormState;
|
|
5
5
|
userSlug: string;
|
|
6
6
|
}>;
|
|
7
7
|
//# sourceMappingURL=index.client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAY9C,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC3C,YAAY,EAAE,SAAS,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAuDA,CAAA"}
|
|
@@ -1,22 +1,64 @@
|
|
|
1
1
|
'use client';
|
|
2
|
+
import { ConfirmPassword } from '@payloadcms/ui/fields/ConfirmPassword';
|
|
3
|
+
import { Email } from '@payloadcms/ui/fields/Email';
|
|
4
|
+
import { Password } from '@payloadcms/ui/fields/Password';
|
|
5
|
+
import { Form } from '@payloadcms/ui/forms/Form';
|
|
2
6
|
import { RenderFields } from '@payloadcms/ui/forms/RenderFields';
|
|
7
|
+
import { FormSubmit } from '@payloadcms/ui/forms/Submit';
|
|
3
8
|
import { useComponentMap } from '@payloadcms/ui/providers/ComponentMap';
|
|
9
|
+
import { useConfig } from '@payloadcms/ui/providers/Config';
|
|
10
|
+
import { useTranslation } from '@payloadcms/ui/providers/Translation';
|
|
11
|
+
import { getFormState } from '@payloadcms/ui/utilities/getFormState';
|
|
4
12
|
import React from 'react';
|
|
5
|
-
export const
|
|
13
|
+
export const CreateFirstUserClient = ({ initialState, userSlug })=>{
|
|
6
14
|
const { getFieldMap } = useComponentMap();
|
|
15
|
+
const { routes: { admin, api: apiRoute }, serverURL } = useConfig();
|
|
16
|
+
const { t } = useTranslation();
|
|
7
17
|
const fieldMap = getFieldMap({
|
|
8
18
|
collectionSlug: userSlug
|
|
9
19
|
});
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
20
|
+
const onChange = React.useCallback(async ({ formState: prevFormState })=>{
|
|
21
|
+
return getFormState({
|
|
22
|
+
apiRoute,
|
|
23
|
+
body: {
|
|
24
|
+
collectionSlug: userSlug,
|
|
25
|
+
formState: prevFormState,
|
|
26
|
+
operation: 'create',
|
|
27
|
+
schemaPath: userSlug
|
|
28
|
+
},
|
|
29
|
+
serverURL
|
|
30
|
+
});
|
|
31
|
+
}, [
|
|
32
|
+
apiRoute,
|
|
33
|
+
userSlug,
|
|
34
|
+
serverURL
|
|
35
|
+
]);
|
|
36
|
+
return /*#__PURE__*/ React.createElement(Form, {
|
|
37
|
+
action: `${serverURL}${apiRoute}/${userSlug}/first-register`,
|
|
38
|
+
initialState: initialState,
|
|
39
|
+
method: "POST",
|
|
40
|
+
onChange: [
|
|
41
|
+
onChange
|
|
14
42
|
],
|
|
43
|
+
redirect: admin,
|
|
44
|
+
validationOperation: "create"
|
|
45
|
+
}, /*#__PURE__*/ React.createElement(Email, {
|
|
46
|
+
autoComplete: "email",
|
|
47
|
+
label: t('general:email'),
|
|
48
|
+
name: "email",
|
|
49
|
+
required: true
|
|
50
|
+
}), /*#__PURE__*/ React.createElement(Password, {
|
|
51
|
+
autoComplete: "off",
|
|
52
|
+
label: t('authentication:newPassword'),
|
|
53
|
+
name: "password",
|
|
54
|
+
required: true
|
|
55
|
+
}), /*#__PURE__*/ React.createElement(ConfirmPassword, null), /*#__PURE__*/ React.createElement(RenderFields, {
|
|
56
|
+
fieldMap: fieldMap,
|
|
15
57
|
operation: "create",
|
|
16
58
|
path: "",
|
|
17
59
|
readOnly: false,
|
|
18
60
|
schemaPath: userSlug
|
|
19
|
-
});
|
|
61
|
+
}), /*#__PURE__*/ React.createElement(FormSubmit, null, t('general:create')));
|
|
20
62
|
};
|
|
21
63
|
|
|
22
64
|
//# sourceMappingURL=index.client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"sourcesContent":["'use client'\nimport type {
|
|
1
|
+
{"version":3,"sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui/forms/Form'\nimport type { FormState } from 'payload/types'\n\nimport { ConfirmPassword } from '@payloadcms/ui/fields/ConfirmPassword'\nimport { Email } from '@payloadcms/ui/fields/Email'\nimport { Password } from '@payloadcms/ui/fields/Password'\nimport { Form } from '@payloadcms/ui/forms/Form'\nimport { RenderFields } from '@payloadcms/ui/forms/RenderFields'\nimport { FormSubmit } from '@payloadcms/ui/forms/Submit'\nimport { useComponentMap } from '@payloadcms/ui/providers/ComponentMap'\nimport { useConfig } from '@payloadcms/ui/providers/Config'\nimport { useTranslation } from '@payloadcms/ui/providers/Translation'\nimport { getFormState } from '@payloadcms/ui/utilities/getFormState'\nimport React from 'react'\n\nexport const CreateFirstUserClient: React.FC<{\n initialState: FormState\n userSlug: string\n}> = ({ initialState, 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 <Email autoComplete=\"email\" label={t('general:email')} name=\"email\" required />\n <Password\n autoComplete=\"off\"\n label={t('authentication:newPassword')}\n name=\"password\"\n required\n />\n <ConfirmPassword />\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":["ConfirmPassword","Email","Password","Form","RenderFields","FormSubmit","useComponentMap","useConfig","useTranslation","getFormState","React","CreateFirstUserClient","initialState","userSlug","getFieldMap","routes","admin","api","apiRoute","serverURL","t","fieldMap","collectionSlug","onChange","useCallback","formState","prevFormState","body","operation","schemaPath","action","method","redirect","validationOperation","autoComplete","label","name","required","path","readOnly"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAIA,SAASA,eAAe,QAAQ,wCAAuC;AACvE,SAASC,KAAK,QAAQ,8BAA6B;AACnD,SAASC,QAAQ,QAAQ,iCAAgC;AACzD,SAASC,IAAI,QAAQ,4BAA2B;AAChD,SAASC,YAAY,QAAQ,oCAAmC;AAChE,SAASC,UAAU,QAAQ,8BAA6B;AACxD,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,YAAY,QAAQ,wCAAuC;AACpE,OAAOC,WAAW,QAAO;AAEzB,OAAO,MAAMC,wBAGR,CAAC,EAAEC,YAAY,EAAEC,QAAQ,EAAE;IAC9B,MAAM,EAAEC,WAAW,EAAE,GAAGR;IAExB,MAAM,EACJS,QAAQ,EAAEC,KAAK,EAAEC,KAAKC,QAAQ,EAAE,EAChCC,SAAS,EACV,GAAGZ;IAEJ,MAAM,EAAEa,CAAC,EAAE,GAAGZ;IAEd,MAAMa,WAAWP,YAAY;QAAEQ,gBAAgBT;IAAS;IAExD,MAAMU,WAAqCb,MAAMc,WAAW,CAC1D,OAAO,EAAEC,WAAWC,aAAa,EAAE;QACjC,OAAOjB,aAAa;YAClBS;YACAS,MAAM;gBACJL,gBAAgBT;gBAChBY,WAAWC;gBACXE,WAAW;gBACXC,YAAYhB;YACd;YACAM;QACF;IACF,GACA;QAACD;QAAUL;QAAUM;KAAU;IAGjC,qBACE,oBAAChB;QACC2B,QAAQ,CAAC,EAAEX,UAAU,EAAED,SAAS,CAAC,EAAEL,SAAS,eAAe,CAAC;QAC5DD,cAAcA;QACdmB,QAAO;QACPR,UAAU;YAACA;SAAS;QACpBS,UAAUhB;QACViB,qBAAoB;qBAEpB,oBAAChC;QAAMiC,cAAa;QAAQC,OAAOf,EAAE;QAAkBgB,MAAK;QAAQC,UAAAA;sBACpE,oBAACnC;QACCgC,cAAa;QACbC,OAAOf,EAAE;QACTgB,MAAK;QACLC,UAAAA;sBAEF,oBAACrC,sCACD,oBAACI;QACCiB,UAAUA;QACVO,WAAU;QACVU,MAAK;QACLC,UAAU;QACVV,YAAYhB;sBAEd,oBAACR,kBAAYe,EAAE;AAGrB,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAS,MAAM,eAAe,CAAA;AAG1D,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,+BAA+B,EAAE,MAAM,WAAW,CAAA;AAE3D,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA+CxD,CAAA"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import { Form } from '@payloadcms/ui/forms/Form';
|
|
2
|
-
import { FormSubmit } from '@payloadcms/ui/forms/Submit';
|
|
3
1
|
import { buildStateFromSchema } from '@payloadcms/ui/forms/buildStateFromSchema';
|
|
4
|
-
import { WithServerSideProps as WithServerSidePropsGeneric } from '@payloadcms/ui/providers/ComponentMap';
|
|
5
|
-
import { mapFields } from '@payloadcms/ui/utilities/buildComponentMap';
|
|
6
2
|
import React from 'react';
|
|
7
|
-
import {
|
|
3
|
+
import { CreateFirstUserClient } from './index.client.js';
|
|
8
4
|
export { generateCreateFirstUserMetadata } from './meta.js';
|
|
9
5
|
export const CreateFirstUserView = async ({ initPageResult })=>{
|
|
10
|
-
const { req, req: {
|
|
6
|
+
const { req, req: { payload: { config: { admin: { user: userSlug } } } } } = initPageResult;
|
|
11
7
|
const fields = [
|
|
12
8
|
{
|
|
13
9
|
name: 'email',
|
|
@@ -28,53 +24,20 @@ export const CreateFirstUserView = async ({ initPageResult })=>{
|
|
|
28
24
|
required: true
|
|
29
25
|
}
|
|
30
26
|
];
|
|
31
|
-
const WithServerSideProps = ({ Component, ...rest })=>{
|
|
32
|
-
return /*#__PURE__*/ React.createElement(WithServerSidePropsGeneric, {
|
|
33
|
-
Component: Component,
|
|
34
|
-
payload: payload,
|
|
35
|
-
...rest
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
const createFirstUserFieldMap = mapFields({
|
|
39
|
-
WithServerSideProps,
|
|
40
|
-
config,
|
|
41
|
-
fieldSchema: fields,
|
|
42
|
-
i18n,
|
|
43
|
-
parentPath: userSlug
|
|
44
|
-
}).map((field)=>{
|
|
45
|
-
// Transform field types for the password and confirm-password fields
|
|
46
|
-
if (field.name === 'password') {
|
|
47
|
-
const type = 'password';
|
|
48
|
-
return {
|
|
49
|
-
...field,
|
|
50
|
-
type
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
if (field.name === 'confirm-password') {
|
|
54
|
-
const type = 'confirmPassword';
|
|
55
|
-
return {
|
|
56
|
-
...field,
|
|
57
|
-
type
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
return field;
|
|
61
|
-
});
|
|
62
27
|
const formState = await buildStateFromSchema({
|
|
63
28
|
fieldSchema: fields,
|
|
64
29
|
operation: 'create',
|
|
65
|
-
preferences: {
|
|
30
|
+
preferences: {
|
|
31
|
+
fields: {}
|
|
32
|
+
},
|
|
66
33
|
req
|
|
67
34
|
});
|
|
68
|
-
return /*#__PURE__*/ React.createElement(
|
|
69
|
-
|
|
35
|
+
return /*#__PURE__*/ React.createElement("div", {
|
|
36
|
+
className: "create-first-user"
|
|
37
|
+
}, /*#__PURE__*/ React.createElement("h1", null, req.t('general:welcome')), /*#__PURE__*/ React.createElement("p", null, req.t('authentication:beginCreateFirstUser')), /*#__PURE__*/ React.createElement(CreateFirstUserClient, {
|
|
70
38
|
initialState: formState,
|
|
71
|
-
method: "POST",
|
|
72
|
-
redirect: adminRoute,
|
|
73
|
-
validationOperation: "create"
|
|
74
|
-
}, /*#__PURE__*/ React.createElement(CreateFirstUserFields, {
|
|
75
|
-
createFirstUserFieldMap: createFirstUserFieldMap,
|
|
76
39
|
userSlug: userSlug
|
|
77
|
-
})
|
|
40
|
+
}));
|
|
78
41
|
};
|
|
79
42
|
|
|
80
43
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/views/CreateFirstUser/index.tsx"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../../../src/views/CreateFirstUser/index.tsx"],"sourcesContent":["import type { AdminViewProps, Field } from 'payload/types'\n\nimport { buildStateFromSchema } from '@payloadcms/ui/forms/buildStateFromSchema'\nimport React from 'react'\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 },\n },\n } = initPageResult\n\n const fields: Field[] = [\n {\n name: 'email',\n type: 'email',\n label: req.t('general:emailAddress'),\n required: true,\n },\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,\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 initialState={formState} userSlug={userSlug} />\n </div>\n )\n}\n"],"names":["buildStateFromSchema","React","CreateFirstUserClient","generateCreateFirstUserMetadata","CreateFirstUserView","initPageResult","req","payload","config","admin","user","userSlug","fields","name","type","label","t","required","formState","fieldSchema","operation","preferences","div","className","h1","p","initialState"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,oBAAoB,QAAQ,4CAA2C;AAChF,OAAOC,WAAW,QAAO;AAEzB,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,EACF,EACF,EACF,GAAGN;IAEJ,MAAMO,SAAkB;QACtB;YACEC,MAAM;YACNC,MAAM;YACNC,OAAOT,IAAIU,CAAC,CAAC;YACbC,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNC,OAAOT,IAAIU,CAAC,CAAC;YACbC,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNC,OAAOT,IAAIU,CAAC,CAAC;YACbC,UAAU;QACZ;KACD;IAED,MAAMC,YAAY,MAAMlB,qBAAqB;QAC3CmB,aAAaP;QACbQ,WAAW;QACXC,aAAa;YAAET,QAAQ,CAAC;QAAE;QAC1BN;IACF;IAEA,qBACE,oBAACgB;QAAIC,WAAU;qBACb,oBAACC,YAAIlB,IAAIU,CAAC,CAAC,mCACX,oBAACS,WAAGnB,IAAIU,CAAC,CAAC,uDACV,oBAACd;QAAsBwB,cAAcR;QAAWP,UAAUA;;AAGhE,EAAC"}
|
|
@@ -1,15 +1,5 @@
|
|
|
1
1
|
.create-first-user {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
flex-wrap: wrap;
|
|
5
|
-
min-height: 100vh;
|
|
6
|
-
|
|
7
|
-
&__wrap {
|
|
8
|
-
width: 100%;
|
|
9
|
-
margin: 0 auto var(--base);
|
|
10
|
-
|
|
11
|
-
svg {
|
|
12
|
-
width: 100%;
|
|
13
|
-
}
|
|
2
|
+
> form > .field-type {
|
|
3
|
+
margin-bottom: var(--base);
|
|
14
4
|
}
|
|
15
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APIKey.d.ts","sourceRoot":"","sources":["../../../../../src/views/Edit/Default/Auth/APIKey.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAO3D,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"APIKey.d.ts","sourceRoot":"","sources":["../../../../../src/views/Edit/Default/Auth/APIKey.tsx"],"names":[],"mappings":"AAWA,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"}
|
|
@@ -12,8 +12,8 @@ import { v4 as uuidv4 } from 'uuid';
|
|
|
12
12
|
const path = 'apiKey';
|
|
13
13
|
const baseClass = 'api-key';
|
|
14
14
|
const fieldBaseClass = 'field-type';
|
|
15
|
-
export const APIKey = ({ readOnly })=>{
|
|
16
|
-
const [initialAPIKey
|
|
15
|
+
export const APIKey = ({ enabled, readOnly })=>{
|
|
16
|
+
const [initialAPIKey] = useState(uuidv4());
|
|
17
17
|
const [highlightedField, setHighlightedField] = useState(false);
|
|
18
18
|
const { t } = useTranslation();
|
|
19
19
|
const config = useConfig();
|
|
@@ -24,6 +24,9 @@ export const APIKey = ({ readOnly })=>{
|
|
|
24
24
|
data: {},
|
|
25
25
|
maxLength: 48,
|
|
26
26
|
minLength: 24,
|
|
27
|
+
preferences: {
|
|
28
|
+
fields: {}
|
|
29
|
+
},
|
|
27
30
|
req: {
|
|
28
31
|
payload: {
|
|
29
32
|
config
|
|
@@ -54,14 +57,15 @@ export const APIKey = ({ readOnly })=>{
|
|
|
54
57
|
};
|
|
55
58
|
const { setValue, value } = fieldType;
|
|
56
59
|
useEffect(()=>{
|
|
57
|
-
|
|
58
|
-
}, []);
|
|
59
|
-
useEffect(()=>{
|
|
60
|
-
if (!apiKeyValue) {
|
|
60
|
+
if (!apiKeyValue && enabled) {
|
|
61
61
|
setValue(initialAPIKey);
|
|
62
62
|
}
|
|
63
|
+
if (!enabled) {
|
|
64
|
+
setValue(null);
|
|
65
|
+
}
|
|
63
66
|
}, [
|
|
64
67
|
apiKeyValue,
|
|
68
|
+
enabled,
|
|
65
69
|
setValue,
|
|
66
70
|
initialAPIKey
|
|
67
71
|
]);
|
|
@@ -74,6 +78,9 @@ export const APIKey = ({ readOnly })=>{
|
|
|
74
78
|
}, [
|
|
75
79
|
highlightedField
|
|
76
80
|
]);
|
|
81
|
+
if (!enabled) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
77
84
|
return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("div", {
|
|
78
85
|
className: [
|
|
79
86
|
fieldBaseClass,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/views/Edit/Default/Auth/APIKey.tsx"],"sourcesContent":["'use client'\nimport type {
|
|
1
|
+
{"version":3,"sources":["../../../../../src/views/Edit/Default/Auth/APIKey.tsx"],"sourcesContent":["'use client'\nimport type { PayloadRequestWithData } from 'payload/types'\n\nimport { CopyToClipboard } from '@payloadcms/ui/elements/CopyToClipboard'\nimport { GenerateConfirmation } from '@payloadcms/ui/elements/GenerateConfirmation'\nimport { FieldLabel } from '@payloadcms/ui/forms/FieldLabel'\nimport { useFormFields } from '@payloadcms/ui/forms/Form'\nimport { useField } from '@payloadcms/ui/forms/useField'\nimport { useConfig } from '@payloadcms/ui/providers/Config'\nimport { useTranslation } from '@payloadcms/ui/providers/Translation'\nimport { text } from 'payload/fields/validations'\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[path])\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 PayloadRequestWithData,\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","GenerateConfirmation","FieldLabel","useFormFields","useField","useConfig","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"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAGA,SAASA,eAAe,QAAQ,0CAAyC;AACzE,SAASC,oBAAoB,QAAQ,+CAA8C;AACnF,SAASC,UAAU,QAAQ,kCAAiC;AAC5D,SAASC,aAAa,QAAQ,4BAA2B;AACzD,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,IAAI,QAAQ,6BAA4B;AACjD,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,SAASnB;IAEf,MAAMoB,SAAStB,cAAc,CAAC,CAACuB,OAAO,GAAKA,MAAM,CAACZ,KAAK;IAEvD,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,oBAAC+B;YAAIC,WAAW,CAAC,EAAE3B,UAAU,OAAO,CAAC;yBACnC,oBAAC4B,cAAK,0BACN,oBAAC3C;YAAgBuC,OAAOD;aAG5B;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,oBAACV,MAAMwC,QAAQ,sBACb,oBAACP;QAAIC,WAAW;YAAC1B;YAAgB;YAAW;SAAY,CAACiC,MAAM,CAACC,SAASC,IAAI,CAAC;qBAC5E,oBAACjD;QAAWkD,aAAaZ;QAAaa,SAASvC;sBAC/C,oBAACwC;QACCZ,WAAWrB,mBAAmB,cAAckC;QAC5CC,UAAAA;QACAC,IAAG;QACH5B,MAAK;QACLC,MAAK;QACLS,OAAO,AAACA,SAAoB;SAG/B,CAACpB,0BACA,oBAAClB;QAAqB4C,gBAAgBA;QAAgBa,QAAQ,IAAMX,SAASlC;;AAIrF,EAAC"}
|
|
@@ -117,7 +117,8 @@ export const Auth = (props)=>{
|
|
|
117
117
|
label: t('authentication:enableAPIKey'),
|
|
118
118
|
name: "enableAPIKey",
|
|
119
119
|
readOnly: readOnly
|
|
120
|
-
}),
|
|
120
|
+
}), /*#__PURE__*/ React.createElement(APIKey, {
|
|
121
|
+
enabled: !!enableAPIKey?.value,
|
|
121
122
|
readOnly: readOnly
|
|
122
123
|
})), verify && /*#__PURE__*/ React.createElement(Checkbox, {
|
|
123
124
|
label: t('authentication:verified'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/views/Edit/Default/Auth/index.tsx"],"sourcesContent":["'use client'\n\nimport { Button } from '@payloadcms/ui/elements/Button'\nimport { Checkbox } from '@payloadcms/ui/fields/Checkbox'\nimport { ConfirmPassword } from '@payloadcms/ui/fields/ConfirmPassword'\nimport { Email } from '@payloadcms/ui/fields/Email'\nimport { Password } from '@payloadcms/ui/fields/Password'\nimport { useFormFields, useFormModified } from '@payloadcms/ui/forms/Form'\nimport { useConfig } from '@payloadcms/ui/providers/Config'\nimport { useTranslation } from '@payloadcms/ui/providers/Translation'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { toast } from 'react-toastify'\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 operation,\n readOnly,\n requirePassword,\n useAPIKey,\n verify,\n } = props\n\n const [changingPassword, setChangingPassword] = useState(requirePassword)\n const enableAPIKey = useFormFields(([fields]) => fields.enableAPIKey)\n const dispatchFields = useFormFields((reducer) => reducer[1])\n const modified = useFormModified()\n const { i18n, t } = useTranslation()\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: JSON.stringify({\n email,\n }),\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'), { autoClose: 3000 })\n } else {\n toast.error(t('authentication:failedToUnlock'))\n }\n }, [i18n, serverURL, api, collectionSlug, email, t])\n\n useEffect(() => {\n if (!modified) {\n setChangingPassword(false)\n }\n }, [modified])\n\n if (disableLocalStrategy && !useAPIKey) {\n return null\n }\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n {!disableLocalStrategy && (\n <React.Fragment>\n <Email\n autoComplete=\"email\"\n label={t('general:email')}\n name=\"email\"\n readOnly={readOnly}\n required\n />\n {(changingPassword || requirePassword) && (\n <div className={`${baseClass}__changing-password`}>\n <Password\n autoComplete=\"off\"\n disabled={readOnly}\n label={t('authentication:newPassword')}\n name=\"password\"\n required\n />\n <ConfirmPassword disabled={readOnly} />\n </div>\n )}\n\n <div className={`${baseClass}__controls`}>\n {changingPassword && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={readOnly}\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={readOnly}\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={readOnly}\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 <Checkbox\n label={t('authentication:enableAPIKey')}\n name=\"enableAPIKey\"\n readOnly={readOnly}\n />\n {enableAPIKey?.value
|
|
1
|
+
{"version":3,"sources":["../../../../../src/views/Edit/Default/Auth/index.tsx"],"sourcesContent":["'use client'\n\nimport { Button } from '@payloadcms/ui/elements/Button'\nimport { Checkbox } from '@payloadcms/ui/fields/Checkbox'\nimport { ConfirmPassword } from '@payloadcms/ui/fields/ConfirmPassword'\nimport { Email } from '@payloadcms/ui/fields/Email'\nimport { Password } from '@payloadcms/ui/fields/Password'\nimport { useFormFields, useFormModified } from '@payloadcms/ui/forms/Form'\nimport { useConfig } from '@payloadcms/ui/providers/Config'\nimport { useTranslation } from '@payloadcms/ui/providers/Translation'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { toast } from 'react-toastify'\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 operation,\n readOnly,\n requirePassword,\n useAPIKey,\n verify,\n } = props\n\n const [changingPassword, setChangingPassword] = useState(requirePassword)\n const enableAPIKey = useFormFields(([fields]) => fields.enableAPIKey)\n const dispatchFields = useFormFields((reducer) => reducer[1])\n const modified = useFormModified()\n const { i18n, t } = useTranslation()\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: JSON.stringify({\n email,\n }),\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'), { autoClose: 3000 })\n } else {\n toast.error(t('authentication:failedToUnlock'))\n }\n }, [i18n, serverURL, api, collectionSlug, email, t])\n\n useEffect(() => {\n if (!modified) {\n setChangingPassword(false)\n }\n }, [modified])\n\n if (disableLocalStrategy && !useAPIKey) {\n return null\n }\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n {!disableLocalStrategy && (\n <React.Fragment>\n <Email\n autoComplete=\"email\"\n label={t('general:email')}\n name=\"email\"\n readOnly={readOnly}\n required\n />\n {(changingPassword || requirePassword) && (\n <div className={`${baseClass}__changing-password`}>\n <Password\n autoComplete=\"off\"\n disabled={readOnly}\n label={t('authentication:newPassword')}\n name=\"password\"\n required\n />\n <ConfirmPassword disabled={readOnly} />\n </div>\n )}\n\n <div className={`${baseClass}__controls`}>\n {changingPassword && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={readOnly}\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={readOnly}\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={readOnly}\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 <Checkbox\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 <Checkbox label={t('authentication:verified')} name=\"_verified\" readOnly={readOnly} />\n )}\n </div>\n )\n}\n"],"names":["Button","Checkbox","ConfirmPassword","Email","Password","useFormFields","useFormModified","useConfig","useTranslation","React","useCallback","useEffect","useState","toast","APIKey","baseClass","Auth","props","className","collectionSlug","disableLocalStrategy","email","operation","readOnly","requirePassword","useAPIKey","verify","changingPassword","setChangingPassword","enableAPIKey","fields","dispatchFields","reducer","modified","i18n","t","routes","api","serverURL","handleChangePassword","state","type","path","unlock","url","response","fetch","body","JSON","stringify","credentials","headers","language","method","status","success","autoClose","error","div","filter","Boolean","join","Fragment","autoComplete","label","name","required","disabled","buttonStyle","onClick","size","id","enabled","value"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/ForgotPassword/ForgotPasswordForm/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAA6B,MAAM,OAAO,CAAA;AAGjD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/ForgotPassword/ForgotPasswordForm/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAA6B,MAAM,OAAO,CAAA;AAGjD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAoEtC,CAAA"}
|