mirror of
https://github.com/strapi/strapi.git
synced 2026-06-02 16:27:47 +00:00
1dd851498a
* feat(admin): add documentation helper link in HeaderLayout Revival of #23328 (by @Mcastres), rebased on develop with review feedback addressed and additional improvements: - Replace hand-rolled find with react-router matchRoutes for proper path matching and specificity ranking - Update doc URLs to canonical docs.strapi.io paths (drop redirected /user-docs/* and /dev-docs/* entries) - Restore section anchors that were lost during doc-site reorganization (#providers, #email-templates, #advanced-settings, profile, rbac) - Align array path entries with actual registered admin routes (rename /plugins/content-type-builder, /plugins/content-releases, settings prefix for purchase-content-releases and list-plugins, drop dead /marketplace external link) - Add opt-out flag admin.flags.docLinks for white-label deployments (requested by @derrickmehaffy) - Memoize getMatchingDocLink result per pathname - Place doc link button next to primary action via gap on parent Flex (per @remidej review) - Drop async from getMatchingDocLink, derive docLink synchronously from pathname (per @remidej review) Closes #23328 Co-authored-by: Maxime Castres <17828745+Mcastres@users.noreply.github.com> Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * chore(admin): move DocLink type to getMatchingDocLink module Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(admin): add docLinks flag to EE Window strapi type The EE admin custom.d.ts redeclares window.strapi.flags and was missing the docLinks property, causing test:ts:front to fail with TS2339 in HeaderLayout.tsx. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * test: add getMachingDocLink tests --------- Co-authored-by: Maxime Castres <17828745+Mcastres@users.noreply.github.com> Co-authored-by: Ben Irvin <ben@innerdvations.com>
56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
module.exports = ({ env }) => ({
|
|
// autoOpen: false,
|
|
auth: {
|
|
secret: env('ADMIN_JWT_SECRET', 'example-token'),
|
|
sessions: {
|
|
options: {
|
|
//algorithm: env('ADMIN_JWT_ALGORITHM', 'HS256'),
|
|
// Any other JWT options (issuer, audience, subject, etc.) can be added here
|
|
},
|
|
// Token and session lifespan configuration
|
|
accessTokenLifespan: 30 * 60, // 30 minutes
|
|
maxRefreshTokenLifespan: 30 * 24 * 60 * 60, // 30 days
|
|
idleRefreshTokenLifespan: 14 * 24 * 60 * 60, // 14 days
|
|
maxSessionLifespan: 24 * 60 * 60, // 1 day
|
|
idleSessionLifespan: 2 * 60 * 60, // 2 hours
|
|
},
|
|
},
|
|
apiToken: {
|
|
salt: env('API_TOKEN_SALT', 'example-salt'),
|
|
},
|
|
auditLogs: {
|
|
enabled: env.bool('AUDIT_LOGS_ENABLED', true),
|
|
},
|
|
transfer: {
|
|
token: {
|
|
salt: env('TRANSFER_TOKEN_SALT', 'example-salt'),
|
|
},
|
|
},
|
|
secrets: {
|
|
encryptionKey: env('ENCRYPTION_KEY', 'example-key'),
|
|
},
|
|
flags: {
|
|
nps: env.bool('FLAG_NPS', true),
|
|
promoteEE: env.bool('FLAG_PROMOTE_EE', true),
|
|
docLinks: env.bool('FLAG_DOC_LINKS', true),
|
|
},
|
|
preview: {
|
|
enabled: env.bool('PREVIEW_ENABLED', true),
|
|
config: {
|
|
handler: (uid, { documentId, locale, status }) => {
|
|
const contentType = strapi.contentType(uid);
|
|
const kind = contentType.kind === 'collectionType' ? 'collection-types' : 'single-types';
|
|
const apiName =
|
|
contentType.kind === 'collectionType'
|
|
? contentType.info.pluralName
|
|
: contentType.info.singularName;
|
|
|
|
return `/admin/preview/${kind}/${apiName}/${documentId}/${locale}/${status}`;
|
|
},
|
|
},
|
|
},
|
|
ai: {
|
|
enabled: true,
|
|
},
|
|
});
|