@payload-onpage/plugin 0.2.1 → 0.3.0
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/access.d.ts +7 -4
- package/dist/access.d.ts.map +1 -1
- package/dist/access.js +23 -20
- package/dist/access.js.map +1 -1
- package/dist/admin/OnPageAdminControls.d.ts +3 -2
- package/dist/admin/OnPageAdminControls.d.ts.map +1 -1
- package/dist/admin/OnPageAdminControls.js +12 -8
- package/dist/admin/OnPageAdminControls.js.map +1 -1
- package/dist/endpoints.d.ts +22 -6
- package/dist/endpoints.d.ts.map +1 -1
- package/dist/endpoints.js +87 -80
- package/dist/endpoints.js.map +1 -1
- package/dist/hooks.d.ts +11 -5
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +2 -2
- package/dist/hooks.js.map +1 -1
- package/dist/http.d.ts +18 -4
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +30 -16
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -50
- package/dist/index.js.map +1 -1
- package/dist/options.d.ts +22 -11
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +11 -3
- package/dist/options.js.map +1 -1
- package/dist/paths.d.ts +2 -2
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +11 -24
- package/dist/paths.js.map +1 -1
- package/dist/schema.d.ts +6 -4
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +115 -62
- package/dist/schema.js.map +1 -1
- package/dist/translations.d.ts +12 -1
- package/dist/translations.d.ts.map +1 -1
- package/dist/translations.js +10 -9
- package/dist/translations.js.map +1 -1
- package/package.json +2 -2
- package/src/access.ts +26 -19
- package/src/admin/OnPageAdminControls.tsx +16 -16
- package/src/endpoints.ts +105 -98
- package/src/hooks.ts +14 -5
- package/src/http.ts +51 -15
- package/src/index.ts +77 -64
- package/src/options.ts +29 -17
- package/src/paths.ts +14 -27
- package/src/schema.ts +137 -79
- package/src/translations.ts +17 -11
package/dist/access.d.ts
CHANGED
|
@@ -10,11 +10,14 @@ import type { OnPageOptions } from './options.ts';
|
|
|
10
10
|
/** Signed in as an admin user (or allowed by the `access` option). */
|
|
11
11
|
export declare function canUseOnPage(req: PayloadRequest, options: OnPageOptions): Promise<boolean>;
|
|
12
12
|
/** Payload's sanitized permissions for one document (or the collection, without an id). */
|
|
13
|
-
export declare function documentPermissions(req: PayloadRequest, ref:
|
|
14
|
-
kind: '
|
|
13
|
+
export declare function documentPermissions(req: PayloadRequest, ref: {
|
|
14
|
+
kind: DocRef['kind'];
|
|
15
15
|
slug: string;
|
|
16
|
-
id?: undefined;
|
|
16
|
+
id?: string | number | undefined;
|
|
17
17
|
}): Promise<SanitizedCollectionPermission | SanitizedGlobalPermission | null>;
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* May this user edit this document on the page? With an id, Payload evaluates a
|
|
20
|
+
* row-level rule (a `where`) against that document itself, so its answer is final.
|
|
21
|
+
*/
|
|
19
22
|
export declare function canEditDocument(req: PayloadRequest, ref: DocRef, options: OnPageOptions): Promise<boolean>;
|
|
20
23
|
//# sourceMappingURL=access.d.ts.map
|
package/dist/access.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../src/access.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,EAC/B,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../src/access.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,EAC/B,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEjD,sEAAsE;AACtE,wBAAsB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAIhG;AAED,2FAA2F;AAC3F,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,GAC5E,OAAO,CAAC,6BAA6B,GAAG,yBAAyB,GAAG,IAAI,CAAC,CAqB3E;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,OAAO,CAAC,CAYlB"}
|
package/dist/access.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { docAccessOperation, docAccessOperationGlobal, } from 'payload';
|
|
2
|
+
import { entityConfig } from "./http.js";
|
|
2
3
|
/** Signed in as an admin user (or allowed by the `access` option). */
|
|
3
4
|
export async function canUseOnPage(req, options) {
|
|
4
5
|
if (!req.user)
|
|
@@ -11,19 +12,31 @@ export async function canUseOnPage(req, options) {
|
|
|
11
12
|
export async function documentPermissions(req, ref) {
|
|
12
13
|
try {
|
|
13
14
|
if (ref.kind === 'global') {
|
|
14
|
-
const globalConfig = req
|
|
15
|
+
const globalConfig = entityConfig(req, 'global', ref.slug);
|
|
15
16
|
return globalConfig ? await docAccessOperationGlobal({ globalConfig, req }) : null;
|
|
16
17
|
}
|
|
17
18
|
const collection = req.payload.collections[ref.slug];
|
|
18
19
|
if (!collection)
|
|
19
20
|
return null;
|
|
20
|
-
return await docAccessOperation({
|
|
21
|
+
return await docAccessOperation({
|
|
22
|
+
collection,
|
|
23
|
+
...(ref.id !== undefined ? { id: ref.id } : {}),
|
|
24
|
+
req,
|
|
25
|
+
});
|
|
21
26
|
}
|
|
22
|
-
catch {
|
|
27
|
+
catch (err) {
|
|
28
|
+
// An access function that throws denies, as in Payload, but shouldn't fail silently.
|
|
29
|
+
req.payload.logger.error({
|
|
30
|
+
err,
|
|
31
|
+
msg: `payload-onpage: access check failed for ${ref.kind} "${ref.slug}"`,
|
|
32
|
+
});
|
|
23
33
|
return null;
|
|
24
34
|
}
|
|
25
35
|
}
|
|
26
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* May this user edit this document on the page? With an id, Payload evaluates a
|
|
38
|
+
* row-level rule (a `where`) against that document itself, so its answer is final.
|
|
39
|
+
*/
|
|
27
40
|
export async function canEditDocument(req, ref, options) {
|
|
28
41
|
if (!req.user)
|
|
29
42
|
return false;
|
|
@@ -31,21 +44,11 @@ export async function canEditDocument(req, ref, options) {
|
|
|
31
44
|
return Boolean(await options.access({ req, ref }));
|
|
32
45
|
if (!(await canUseOnPage(req, options)))
|
|
33
46
|
return false;
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
// A row-level rule comes back as a query: check that this document matches it.
|
|
41
|
-
if (!update.where || ref.kind !== 'collection')
|
|
42
|
-
return !update.where;
|
|
43
|
-
const { totalDocs } = await req.payload.count({
|
|
44
|
-
collection: ref.slug,
|
|
45
|
-
where: { and: [{ id: { equals: ref.id } }, update.where] },
|
|
46
|
-
overrideAccess: true,
|
|
47
|
-
req,
|
|
48
|
-
});
|
|
49
|
-
return totalDocs > 0;
|
|
47
|
+
const update = (await documentPermissions(req, ref))?.update;
|
|
48
|
+
return (update === true ||
|
|
49
|
+
(typeof update === 'object' &&
|
|
50
|
+
update !== null &&
|
|
51
|
+
'permission' in update &&
|
|
52
|
+
update.permission === true));
|
|
50
53
|
}
|
|
51
54
|
//# sourceMappingURL=access.js.map
|
package/dist/access.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.js","sourceRoot":"","sources":["../src/access.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GAIzB,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"access.js","sourceRoot":"","sources":["../src/access.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GAIzB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAGxC,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAmB,EAAE,OAAsB;IAC5E,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,OAAO,KAAK,CAAA;IAC3B,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IACjE,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAA;AAC9D,CAAC;AAED,2FAA2F;AAC3F,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAmB,EACnB,GAA6E;IAE7E,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;YAC1D,OAAO,YAAY,CAAC,CAAC,CAAC,MAAM,wBAAwB,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACpF,CAAC;QACD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACpD,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAA;QAC5B,OAAO,MAAM,kBAAkB,CAAC;YAC9B,UAAU;YACV,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG;SACJ,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qFAAqF;QACrF,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YACvB,GAAG;YACH,GAAG,EAAE,2CAA2C,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG;SACzE,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAmB,EACnB,GAAW,EACX,OAAsB;IAEtB,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,OAAO,KAAK,CAAA;IAC3B,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IACtE,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACrD,MAAM,MAAM,GAAY,CAAC,MAAM,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAA;IACrE,OAAO,CACL,MAAM,KAAK,IAAI;QACf,CAAC,OAAO,MAAM,KAAK,QAAQ;YACzB,MAAM,KAAK,IAAI;YACf,YAAY,IAAI,MAAM;YACtB,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,CAC9B,CAAA;AACH,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { type DocRef } from '@payload-onpage/core';
|
|
1
2
|
export interface OnPageAdminControlsProps {
|
|
2
|
-
kind: '
|
|
3
|
+
kind: DocRef['kind'];
|
|
3
4
|
slug: string;
|
|
4
5
|
/** Plugin endpoint prefix (`routePrefix`). */
|
|
5
|
-
prefix: string
|
|
6
|
+
prefix: `/${string}`;
|
|
6
7
|
}
|
|
7
8
|
export declare function OnPageAdminControls({ kind, slug, prefix }: OnPageAdminControlsProps): import("react").JSX.Element | null;
|
|
8
9
|
export default OnPageAdminControls;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnPageAdminControls.d.ts","sourceRoot":"","sources":["../../src/admin/OnPageAdminControls.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OnPageAdminControls.d.ts","sourceRoot":"","sources":["../../src/admin/OnPageAdminControls.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAqB,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAKrE,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,8CAA8C;IAC9C,MAAM,EAAE,IAAI,MAAM,EAAE,CAAA;CACrB;AAgBD,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,wBAAwB,sCAsDnF;AAED,eAAe,mBAAmB,CAAA"}
|
|
@@ -7,6 +7,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
7
7
|
*/
|
|
8
8
|
import { payloadRest } from '@payload-onpage/core/payload';
|
|
9
9
|
import { Button, toast, useConfig, useDocumentInfo, useLocale, useTranslation, } from '@payloadcms/ui';
|
|
10
|
+
import { errorText, ROUTES } from '@payload-onpage/core';
|
|
11
|
+
import { formatAdminURL } from 'payload/shared';
|
|
10
12
|
import { useMemo, useState } from 'react';
|
|
11
13
|
/**
|
|
12
14
|
* Same-origin POST (the endpoint refuses cross-site requests) opened in a new tab.
|
|
@@ -25,14 +27,16 @@ export function OnPageAdminControls({ kind, slug, prefix }) {
|
|
|
25
27
|
const { id, hasSavePermission } = useDocumentInfo();
|
|
26
28
|
const { config } = useConfig();
|
|
27
29
|
const locale = useLocale();
|
|
28
|
-
const { t
|
|
29
|
-
const t = (key, vars) => translate(key, vars);
|
|
30
|
+
const { t } = useTranslation();
|
|
30
31
|
const [busy, setBusy] = useState(false);
|
|
31
|
-
|
|
32
|
+
// Built like Payload's own API URLs: routes.api, serverURL, Next's basePath.
|
|
33
|
+
const apiBase = formatAdminURL({ apiRoute: config.routes.api, serverURL: config.serverURL });
|
|
32
34
|
const dataSource = useMemo(() => payloadRest({ apiBase, prefix }), [apiBase, prefix]);
|
|
33
|
-
if (
|
|
35
|
+
if (hasSavePermission === false)
|
|
36
|
+
return null;
|
|
37
|
+
const ref = kind === 'global' ? { kind, slug } : id != null ? { kind, slug, id } : null;
|
|
38
|
+
if (!ref)
|
|
34
39
|
return null;
|
|
35
|
-
const ref = kind === 'global' ? { kind, slug } : { kind, slug, id: id };
|
|
36
40
|
const params = new URLSearchParams({ kind, slug, mode: 'edit' });
|
|
37
41
|
if (kind === 'collection')
|
|
38
42
|
params.set('id', String(id));
|
|
@@ -43,17 +47,17 @@ export function OnPageAdminControls({ kind, slug, prefix }) {
|
|
|
43
47
|
try {
|
|
44
48
|
const link = await dataSource.createPreviewLink(ref, { locale: locale?.code });
|
|
45
49
|
await navigator.clipboard.writeText(link.url);
|
|
46
|
-
toast.success(
|
|
50
|
+
toast.success(t('onpage:linkCopied', { date: new Date(link.expiresAt).toLocaleString() }));
|
|
47
51
|
}
|
|
48
52
|
catch (e) {
|
|
49
|
-
toast.error(t('onpage:linkFailed', { message: e
|
|
53
|
+
toast.error(t('onpage:linkFailed', { message: errorText(e) }));
|
|
50
54
|
}
|
|
51
55
|
finally {
|
|
52
56
|
setBusy(false);
|
|
53
57
|
}
|
|
54
58
|
};
|
|
55
59
|
const style = { whiteSpace: 'nowrap', flexShrink: 0 };
|
|
56
|
-
return (_jsxs("div", { style: { display: 'flex', gap: 6 }, "data-testid": "onpage-admin-controls", children: [_jsx(Button, { buttonStyle: "secondary", size: "medium", onClick: () => postInNewTab(`${apiBase}${prefix}
|
|
60
|
+
return (_jsxs("div", { style: { display: 'flex', gap: 6 }, "data-testid": "onpage-admin-controls", children: [_jsx(Button, { buttonStyle: "secondary", size: "medium", onClick: () => postInNewTab(`${apiBase}${prefix}${ROUTES.enter}?${params}`), extraButtonProps: { style, 'data-testid': 'onpage-edit-on-page' }, children: t('onpage:editOnPage') }), _jsx(Button, { buttonStyle: "subtle", size: "medium", onClick: () => void copyLink(), disabled: busy, tooltip: t('onpage:copyPreviewLinkHint'), extraButtonProps: { style, 'data-testid': 'onpage-copy-preview-link' }, children: t('onpage:copyPreviewLink') })] }));
|
|
57
61
|
}
|
|
58
62
|
export default OnPageAdminControls;
|
|
59
63
|
//# sourceMappingURL=OnPageAdminControls.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnPageAdminControls.js","sourceRoot":"","sources":["../../src/admin/OnPageAdminControls.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,MAAM,EACN,KAAK,EACL,SAAS,EACT,eAAe,EACf,SAAS,EACT,cAAc,GACf,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"OnPageAdminControls.js","sourceRoot":"","sources":["../../src/admin/OnPageAdminControls.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,MAAM,EACN,KAAK,EACL,SAAS,EACT,eAAe,EACf,SAAS,EACT,cAAc,GACf,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAe,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAUzC;;;GAGG;AACH,SAAS,YAAY,CAAC,MAAc;IAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACpB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;IACtB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAA;IACb,IAAI,CAAC,MAAM,EAAE,CAAA;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAA4B;IAClF,MAAM,EAAE,EAAE,EAAE,iBAAiB,EAAE,GAAG,eAAe,EAAE,CAAA;IACnD,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAqD,CAAA;IACjF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,6EAA6E;IAC7E,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;IAC5F,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IAErF,IAAI,iBAAiB,KAAK,KAAK;QAAE,OAAO,IAAI,CAAA;IAC5C,MAAM,GAAG,GACP,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7E,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAChE,IAAI,IAAI,KAAK,YAAY;QAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IACvD,IAAI,MAAM,EAAE,IAAI;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IAEnD,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;QACb,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAC9E,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC7C,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAA;QAC5F,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAChE,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,CAAA;QAChB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,EAAE,UAAU,EAAE,QAAiB,EAAE,UAAU,EAAE,CAAC,EAAE,CAAA;IAC9D,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,iBAAc,uBAAuB,aAC1E,KAAC,MAAM,IACL,WAAW,EAAC,WAAW,EACvB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,EAAE,CAAC,EAC3E,gBAAgB,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,YAEhE,CAAC,CAAC,mBAAmB,CAAC,GAChB,EACT,KAAC,MAAM,IACL,WAAW,EAAC,QAAQ,EACpB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,EAC9B,QAAQ,EAAE,IAAI,EACd,OAAO,EAAE,CAAC,CAAC,4BAA4B,CAAC,EACxC,gBAAgB,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,0BAA0B,EAAE,YAErE,CAAC,CAAC,wBAAwB,CAAC,GACrB,IACL,CACP,CAAA;AACH,CAAC;AAED,eAAe,mBAAmB,CAAA"}
|
package/dist/endpoints.d.ts
CHANGED
|
@@ -1,11 +1,27 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The plugin's endpoints, under `${api}${routePrefix}` (default /api/onpage):
|
|
3
|
+
*
|
|
4
|
+
* GET /schema/:kind/:slug editable field schema for the signed-in editor (JSON)
|
|
5
|
+
* POST /enter start editing or previewing a document's page
|
|
6
|
+
* POST /mode switch the current page between editing and previewing
|
|
7
|
+
* POST /exit leave edit/preview mode
|
|
8
|
+
* POST /preview-link create a sealed, expiring read-only link (JSON)
|
|
9
|
+
* GET /preview?token= open a preview link
|
|
10
|
+
*
|
|
11
|
+
* JSON endpoints throw Payload's errors, so responses, logging, CORS and
|
|
12
|
+
* translations match Payload's own. The form/new-tab endpoints answer in plain
|
|
13
|
+
* text or redirect. State-changing endpoints are same-origin POSTs (CSRF-safe),
|
|
14
|
+
* and every authorization decision goes through ./access (Payload's access rules).
|
|
15
|
+
*/
|
|
16
|
+
import { type DocRef, type SessionAdapter } from '@payload-onpage/core';
|
|
17
|
+
import { type Endpoint } from 'payload';
|
|
2
18
|
import type { Entry, OnPageOptions } from './options.ts';
|
|
3
19
|
export interface EndpointContext {
|
|
4
|
-
options: OnPageOptions
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
20
|
+
options: OnPageOptions & {
|
|
21
|
+
session: SessionAdapter;
|
|
22
|
+
};
|
|
23
|
+
prefix: `/${string}`;
|
|
24
|
+
entry: (kind: DocRef['kind'], slug: string) => Entry | undefined;
|
|
8
25
|
}
|
|
9
|
-
export declare const secretOf: (req: PayloadRequest, options: OnPageOptions) => string;
|
|
10
26
|
export declare function createEndpoints(ctx: EndpointContext): Endpoint[];
|
|
11
27
|
//# sourceMappingURL=endpoints.d.ts.map
|
package/dist/endpoints.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAUL,KAAK,MAAM,EAGX,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAKL,KAAK,QAAQ,EAGd,MAAM,SAAS,CAAA;AAchB,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAKxD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,GAAG;QAAE,OAAO,EAAE,cAAc,CAAA;KAAE,CAAA;IACpD,MAAM,EAAE,IAAI,MAAM,EAAE,CAAA;IACpB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,KAAK,GAAG,SAAS,CAAA;CACjE;AAiBD,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,QAAQ,EAAE,CAqMhE"}
|
package/dist/endpoints.js
CHANGED
|
@@ -1,49 +1,50 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The plugin's endpoints, under `${api}${routePrefix}` (default /api/onpage):
|
|
3
3
|
*
|
|
4
|
-
* GET /schema/:kind/:slug editable field schema for the signed-in editor
|
|
4
|
+
* GET /schema/:kind/:slug editable field schema for the signed-in editor (JSON)
|
|
5
5
|
* POST /enter start editing or previewing a document's page
|
|
6
6
|
* POST /mode switch the current page between editing and previewing
|
|
7
7
|
* POST /exit leave edit/preview mode
|
|
8
8
|
* POST /preview-link create a sealed, expiring read-only link (JSON)
|
|
9
9
|
* GET /preview?token= open a preview link
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* JSON endpoints throw Payload's errors, so responses, logging, CORS and
|
|
12
|
+
* translations match Payload's own. The form/new-tab endpoints answer in plain
|
|
13
|
+
* text or redirect. State-changing endpoints are same-origin POSTs (CSRF-safe),
|
|
14
|
+
* and every authorization decision goes through ./access (Payload's access rules).
|
|
13
15
|
*/
|
|
14
|
-
import { parseRefKey, pathnameOf, refKey, safePath, samePath, SEAL_PURPOSE, seal, } from '@payload-onpage/core';
|
|
15
|
-
import {
|
|
16
|
+
import { isOnPageMode, parseRefKey, pathnameOf, refKey, ROUTES, safePath, samePath, SEAL_PURPOSE, seal, } from '@payload-onpage/core';
|
|
17
|
+
import { addDataAndFileToRequest, APIError, Forbidden, NotFound, } from 'payload';
|
|
18
|
+
import { getAutosaveInterval, hasAutosaveEnabled, hasDraftsEnabled, toWords } from 'payload/shared';
|
|
16
19
|
import { canEditDocument, canUseOnPage, documentPermissions } from "./access.js";
|
|
17
|
-
import {
|
|
20
|
+
import { apiURL, entityConfig, isSecure, json, readRef, redirectTo, rejectCrossSite, text, withIdType, } from "./http.js";
|
|
18
21
|
import { resolvePath } from "./paths.js";
|
|
19
|
-
import { relationTargets, serializeFields } from "./schema.js";
|
|
22
|
+
import { label, relationTargets, serializeFields } from "./schema.js";
|
|
20
23
|
import { createPreviewToken, verifyPreviewToken } from "./tokens.js";
|
|
21
24
|
const DAY = 24 * 3600;
|
|
22
|
-
|
|
25
|
+
const secretOf = (req, options) => options.secret ?? req.payload.config.secret;
|
|
23
26
|
/** Name of the auth cookie an editor's mode is bound to. */
|
|
24
27
|
const authCookieOf = (req, options) => options.authCookie ?? `${req.payload.config.cookiePrefix || 'payload'}-token`;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
28
|
+
/** A locale value from a body, if it's one Payload knows. */
|
|
29
|
+
const knownLocale = (req, value) => typeof value === 'string' && req.payload.config.localization
|
|
30
|
+
? req.payload.config.localization.localeCodes.find((c) => c === value)
|
|
31
|
+
: undefined;
|
|
30
32
|
export function createEndpoints(ctx) {
|
|
31
|
-
const { options, prefix
|
|
33
|
+
const { options, prefix } = ctx;
|
|
34
|
+
const { session } = options;
|
|
32
35
|
const schema = {
|
|
33
|
-
path: `${prefix}
|
|
36
|
+
path: `${prefix}${ROUTES.schema}/:kind/:slug`,
|
|
34
37
|
method: 'get',
|
|
35
38
|
handler: async (req) => {
|
|
36
39
|
const kind = req.routeParams?.kind === 'global' ? 'global' : 'collection';
|
|
37
40
|
const slug = typeof req.routeParams?.slug === 'string' ? req.routeParams.slug : '';
|
|
38
41
|
const entry = ctx.entry(kind, slug);
|
|
39
|
-
const cfg = kind
|
|
40
|
-
? req.payload.globals.config.find((g) => g.slug === slug)
|
|
41
|
-
: req.payload.collections[slug]?.config;
|
|
42
|
+
const cfg = entityConfig(req, kind, slug);
|
|
42
43
|
if (!entry || !cfg)
|
|
43
|
-
|
|
44
|
+
throw new NotFound(req.t);
|
|
44
45
|
if (!(await canUseOnPage(req, options)))
|
|
45
|
-
|
|
46
|
-
const perms = await documentPermissions(req,
|
|
46
|
+
throw new Forbidden(req.t);
|
|
47
|
+
const perms = await documentPermissions(req, { kind, slug });
|
|
47
48
|
const pending = [];
|
|
48
49
|
const all = serializeFields(cfg.fields, {
|
|
49
50
|
i18n: req.i18n,
|
|
@@ -52,60 +53,55 @@ export function createEndpoints(ctx) {
|
|
|
52
53
|
defaults: { req, pending },
|
|
53
54
|
});
|
|
54
55
|
await Promise.all(pending);
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
const only = entry.options.fields;
|
|
57
|
+
const fields = only ? all.filter((f) => only.includes(f.name)) : all;
|
|
58
|
+
const i18n = { i18n: req.i18n };
|
|
58
59
|
const relations = {};
|
|
59
60
|
for (const target of relationTargets(fields)) {
|
|
60
|
-
const c = req
|
|
61
|
-
if (
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
};
|
|
61
|
+
const c = entityConfig(req, 'collection', target);
|
|
62
|
+
if (c)
|
|
63
|
+
relations[target] = {
|
|
64
|
+
titleField: c.admin?.useAsTitle ?? 'id',
|
|
65
|
+
label: label(c.labels?.singular, toWords(target), i18n),
|
|
66
|
+
};
|
|
67
67
|
}
|
|
68
|
+
const labels = 'labels' in cfg
|
|
69
|
+
? {
|
|
70
|
+
singular: label(cfg.labels?.singular, toWords(slug), i18n),
|
|
71
|
+
plural: label(cfg.labels?.plural, toWords(slug), i18n),
|
|
72
|
+
}
|
|
73
|
+
: {
|
|
74
|
+
singular: label(cfg.label, toWords(slug), i18n),
|
|
75
|
+
plural: label(cfg.label, toWords(slug), i18n),
|
|
76
|
+
};
|
|
77
|
+
const useAsTitle = 'labels' in cfg ? cfg.admin?.useAsTitle : undefined;
|
|
68
78
|
const localization = req.payload.config.localization;
|
|
69
|
-
const labelOf = (v) => (typeof v === 'string' ? v : slug);
|
|
70
79
|
const body = {
|
|
71
80
|
kind,
|
|
72
81
|
slug,
|
|
73
|
-
labels
|
|
74
|
-
? {
|
|
75
|
-
singular: labelOf(cfg.label),
|
|
76
|
-
plural: labelOf(cfg.label),
|
|
77
|
-
}
|
|
78
|
-
: {
|
|
79
|
-
singular: labelOf(cfg.labels?.singular),
|
|
80
|
-
plural: labelOf(cfg.labels?.plural),
|
|
81
|
-
},
|
|
82
|
+
labels,
|
|
82
83
|
editable: fields.map((f) => f.name),
|
|
83
84
|
fields,
|
|
84
85
|
drafts: hasDraftsEnabled(cfg),
|
|
85
86
|
...(hasAutosaveEnabled(cfg) ? { autosaveInterval: getAutosaveInterval(cfg) } : {}),
|
|
86
|
-
...(
|
|
87
|
-
? { useAsTitle: cfg.admin.useAsTitle }
|
|
88
|
-
: {}),
|
|
87
|
+
...(useAsTitle ? { useAsTitle } : {}),
|
|
89
88
|
...(Object.keys(relations).length ? { relations } : {}),
|
|
90
89
|
...(localization
|
|
91
|
-
? {
|
|
92
|
-
defaultLocale: localization.defaultLocale,
|
|
93
|
-
locales: localization.locales.map((l) => (typeof l === 'string' ? l : l.code)),
|
|
94
|
-
}
|
|
90
|
+
? { defaultLocale: localization.defaultLocale, locales: localization.localeCodes }
|
|
95
91
|
: {}),
|
|
96
92
|
};
|
|
97
93
|
return json(body);
|
|
98
94
|
},
|
|
99
95
|
};
|
|
100
96
|
const enter = {
|
|
101
|
-
path: `${prefix}
|
|
97
|
+
path: `${prefix}${ROUTES.enter}`,
|
|
102
98
|
method: 'post',
|
|
103
99
|
handler: async (req) => {
|
|
104
100
|
const refused = rejectCrossSite(req);
|
|
105
101
|
if (refused)
|
|
106
102
|
return refused;
|
|
107
|
-
const q =
|
|
108
|
-
const ref = readRef({ kind: q.get('kind'), slug: q.get('slug'), id: q.get('id') });
|
|
103
|
+
const q = req.searchParams;
|
|
104
|
+
const ref = readRef(req, { kind: q.get('kind'), slug: q.get('slug'), id: q.get('id') });
|
|
109
105
|
const entry = ref && ctx.entry(ref.kind, ref.slug);
|
|
110
106
|
if (!ref || !entry)
|
|
111
107
|
return text('Unknown document', 400);
|
|
@@ -113,12 +109,12 @@ export function createEndpoints(ctx) {
|
|
|
113
109
|
return text('Sign in to the admin first', 401);
|
|
114
110
|
if (!(await canEditDocument(req, ref, options)))
|
|
115
111
|
return text('You cannot edit this document', 403);
|
|
116
|
-
const locale =
|
|
112
|
+
const locale = req.locale && req.locale !== 'all' ? req.locale : undefined;
|
|
117
113
|
const path = safePath(q.get('path')) ?? (await resolvePath(req, ref, entry, locale));
|
|
118
114
|
if (!path)
|
|
119
115
|
return text('This document has no page to open', 404);
|
|
120
|
-
const mode = q.get('mode')
|
|
121
|
-
await
|
|
116
|
+
const mode = q.get('mode');
|
|
117
|
+
await session.enable(isOnPageMode(mode) ? mode : 'edit', {
|
|
122
118
|
secure: isSecure(req),
|
|
123
119
|
bindTo: authCookieOf(req, options),
|
|
124
120
|
});
|
|
@@ -126,16 +122,19 @@ export function createEndpoints(ctx) {
|
|
|
126
122
|
},
|
|
127
123
|
};
|
|
128
124
|
const mode = {
|
|
129
|
-
path: `${prefix}
|
|
125
|
+
path: `${prefix}${ROUTES.mode}`,
|
|
130
126
|
method: 'post',
|
|
131
127
|
handler: async (req) => {
|
|
132
128
|
const refused = rejectCrossSite(req);
|
|
133
129
|
if (refused)
|
|
134
130
|
return refused;
|
|
131
|
+
if (!req.user)
|
|
132
|
+
return text('Sign in to the admin first', 401);
|
|
135
133
|
if (!(await canUseOnPage(req, options)))
|
|
136
|
-
return text('
|
|
137
|
-
const q =
|
|
138
|
-
|
|
134
|
+
return text('You cannot use on-page editing', 403);
|
|
135
|
+
const q = req.searchParams;
|
|
136
|
+
const next = q.get('mode');
|
|
137
|
+
await session.enable(isOnPageMode(next) ? next : 'edit', {
|
|
139
138
|
secure: isSecure(req),
|
|
140
139
|
bindTo: authCookieOf(req, options),
|
|
141
140
|
});
|
|
@@ -143,59 +142,60 @@ export function createEndpoints(ctx) {
|
|
|
143
142
|
},
|
|
144
143
|
};
|
|
145
144
|
const exit = {
|
|
146
|
-
path: `${prefix}
|
|
145
|
+
path: `${prefix}${ROUTES.exit}`,
|
|
147
146
|
method: 'post',
|
|
148
147
|
handler: async (req) => {
|
|
149
148
|
const refused = rejectCrossSite(req);
|
|
150
149
|
if (refused)
|
|
151
150
|
return refused;
|
|
152
|
-
await
|
|
153
|
-
return redirectTo(req,
|
|
151
|
+
await session.disable();
|
|
152
|
+
return redirectTo(req, req.searchParams.get('path'));
|
|
154
153
|
},
|
|
155
154
|
};
|
|
156
155
|
const previewLink = {
|
|
157
|
-
path: `${prefix}
|
|
156
|
+
path: `${prefix}${ROUTES.previewLink}`,
|
|
158
157
|
method: 'post',
|
|
159
158
|
handler: async (req) => {
|
|
160
159
|
const refused = rejectCrossSite(req);
|
|
161
160
|
if (refused)
|
|
162
161
|
return refused;
|
|
163
162
|
if (!req.headers.get('content-type')?.includes('application/json'))
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
const
|
|
163
|
+
throw new APIError('Expected a JSON body', 415);
|
|
164
|
+
await addDataAndFileToRequest(req); // parses JSON, or throws a 400
|
|
165
|
+
const body = req.data ?? {};
|
|
166
|
+
const ref = readRef(req, body);
|
|
167
167
|
const entry = ref && ctx.entry(ref.kind, ref.slug);
|
|
168
168
|
if (!ref || !entry)
|
|
169
|
-
|
|
169
|
+
throw new APIError('Unknown document', 400);
|
|
170
170
|
if (!(await canEditDocument(req, ref, options)))
|
|
171
|
-
|
|
172
|
-
const locale =
|
|
171
|
+
throw new Forbidden(req.t);
|
|
172
|
+
const locale = knownLocale(req, body.locale);
|
|
173
173
|
// The path is always derived on the server: a link opens this document's page and nothing else.
|
|
174
174
|
const path = await resolvePath(req, ref, entry, locale);
|
|
175
175
|
if (!path)
|
|
176
|
-
|
|
177
|
-
const
|
|
178
|
-
const { token, payload } = await createPreviewToken({ ref: refKey(ref), path, locale }, secretOf(req, options), ttl);
|
|
176
|
+
throw new APIError('This document has no page', 404);
|
|
177
|
+
const { token, payload } = await createPreviewToken({ ref: refKey(ref), path, ...(locale ? { locale } : {}) }, secretOf(req, options), options.previewLinkTTL ?? DAY);
|
|
179
178
|
return json({
|
|
180
|
-
url: `${
|
|
179
|
+
url: `${apiURL(req, `${prefix}${ROUTES.preview}`)}?token=${encodeURIComponent(token)}`,
|
|
181
180
|
expiresAt: new Date(payload.exp * 1000).toISOString(),
|
|
182
181
|
id: payload.jti,
|
|
183
182
|
});
|
|
184
183
|
},
|
|
185
184
|
};
|
|
186
185
|
const preview = {
|
|
187
|
-
path: `${prefix}
|
|
186
|
+
path: `${prefix}${ROUTES.preview}`,
|
|
188
187
|
method: 'get',
|
|
189
188
|
handler: async (req) => {
|
|
190
189
|
const invalid = () => text('This preview link is invalid or has expired.', 403);
|
|
191
190
|
const secret = secretOf(req, options);
|
|
192
|
-
const token = await verifyPreviewToken(
|
|
193
|
-
const
|
|
191
|
+
const token = await verifyPreviewToken(req.searchParams.get('token') ?? '', secret);
|
|
192
|
+
const parsed = token && parseRefKey(token.ref);
|
|
193
|
+
const ref = parsed && withIdType(req, parsed);
|
|
194
194
|
const entry = ref && ctx.entry(ref.kind, ref.slug);
|
|
195
195
|
if (!token || !ref || !entry)
|
|
196
196
|
return invalid();
|
|
197
197
|
// Still the document's page? (It may have been deleted, or its slug changed.)
|
|
198
|
-
const current = await resolvePath(req, ref, entry, token.locale);
|
|
198
|
+
const current = await resolvePath(req, ref, entry, knownLocale(req, token.locale));
|
|
199
199
|
if (!current || !samePath(current, token.path))
|
|
200
200
|
return invalid();
|
|
201
201
|
if (options.validatePreviewLink &&
|
|
@@ -208,12 +208,19 @@ export function createEndpoints(ctx) {
|
|
|
208
208
|
}))) {
|
|
209
209
|
return invalid();
|
|
210
210
|
}
|
|
211
|
-
|
|
212
|
-
await requireSession(options).enableLink({
|
|
211
|
+
await session.enableLink({
|
|
213
212
|
secure: isSecure(req),
|
|
214
213
|
path: pathnameOf(token.path),
|
|
215
|
-
expiresAt,
|
|
216
|
-
seal: (draftSecret) =>
|
|
214
|
+
expiresAt: new Date(token.exp * 1000),
|
|
215
|
+
seal: (draftSecret) => {
|
|
216
|
+
const grant = {
|
|
217
|
+
path: pathnameOf(token.path),
|
|
218
|
+
ref: token.ref,
|
|
219
|
+
exp: token.exp,
|
|
220
|
+
draft: draftSecret,
|
|
221
|
+
};
|
|
222
|
+
return seal(grant, secret, SEAL_PURPOSE.previewCookie);
|
|
223
|
+
},
|
|
217
224
|
});
|
|
218
225
|
return redirectTo(req, token.path, 307);
|
|
219
226
|
},
|
package/dist/endpoints.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"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"}
|