@strapi/admin 5.23.5 → 5.24.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/admin/admin/src/features/Auth.js +9 -28
- package/dist/admin/admin/src/features/Auth.js.map +1 -1
- package/dist/admin/admin/src/features/Auth.mjs +11 -30
- package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js +9 -2
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs +9 -2
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
- package/dist/admin/admin/src/services/auth.js +7 -6
- package/dist/admin/admin/src/services/auth.js.map +1 -1
- package/dist/admin/admin/src/services/auth.mjs +7 -6
- package/dist/admin/admin/src/services/auth.mjs.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.js +78 -42
- package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs +79 -43
- package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
- package/dist/admin/admin/src/utils/deviceId.js +38 -0
- package/dist/admin/admin/src/utils/deviceId.js.map +1 -0
- package/dist/admin/admin/src/utils/deviceId.mjs +36 -0
- package/dist/admin/admin/src/utils/deviceId.mjs.map +1 -0
- package/dist/admin/src/services/auth.d.ts +19 -10
- package/dist/admin/src/utils/deviceId.d.ts +5 -0
- package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
- package/dist/ee/server/src/services/user.d.ts.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +43 -17
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +43 -17
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
- package/dist/server/ee/server/src/services/user.js +14 -0
- package/dist/server/ee/server/src/services/user.js.map +1 -1
- package/dist/server/ee/server/src/services/user.mjs +14 -0
- package/dist/server/ee/server/src/services/user.mjs.map +1 -1
- package/dist/server/server/src/bootstrap.js +22 -0
- package/dist/server/server/src/bootstrap.js.map +1 -1
- package/dist/server/server/src/bootstrap.mjs +22 -0
- package/dist/server/server/src/bootstrap.mjs.map +1 -1
- package/dist/server/server/src/content-types/index.js +4 -0
- package/dist/server/server/src/content-types/index.js.map +1 -1
- package/dist/server/server/src/content-types/index.mjs +4 -0
- package/dist/server/server/src/content-types/index.mjs.map +1 -1
- package/dist/server/server/src/content-types/session.js +91 -0
- package/dist/server/server/src/content-types/session.js.map +1 -0
- package/dist/server/server/src/content-types/session.mjs +89 -0
- package/dist/server/server/src/content-types/session.mjs.map +1 -0
- package/dist/server/server/src/controllers/authentication.js +169 -38
- package/dist/server/server/src/controllers/authentication.js.map +1 -1
- package/dist/server/server/src/controllers/authentication.mjs +169 -38
- package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
- package/dist/server/server/src/routes/authentication.js +2 -2
- package/dist/server/server/src/routes/authentication.js.map +1 -1
- package/dist/server/server/src/routes/authentication.mjs +2 -2
- package/dist/server/server/src/routes/authentication.mjs.map +1 -1
- package/dist/server/server/src/services/token.js +44 -31
- package/dist/server/server/src/services/token.js.map +1 -1
- package/dist/server/server/src/services/token.mjs +44 -30
- package/dist/server/server/src/services/token.mjs.map +1 -1
- package/dist/server/server/src/services/user.js +14 -0
- package/dist/server/server/src/services/user.js.map +1 -1
- package/dist/server/server/src/services/user.mjs +14 -0
- package/dist/server/server/src/services/user.mjs.map +1 -1
- package/dist/server/server/src/strategies/admin.js +23 -3
- package/dist/server/server/src/strategies/admin.js.map +1 -1
- package/dist/server/server/src/strategies/admin.mjs +23 -3
- package/dist/server/server/src/strategies/admin.mjs.map +1 -1
- package/dist/server/server/src/validation/authentication/login.js +16 -0
- package/dist/server/server/src/validation/authentication/login.js.map +1 -0
- package/dist/server/server/src/validation/authentication/login.mjs +14 -0
- package/dist/server/server/src/validation/authentication/login.mjs.map +1 -0
- package/dist/server/server/src/validation/authentication/register.js +6 -2
- package/dist/server/server/src/validation/authentication/register.js.map +1 -1
- package/dist/server/server/src/validation/authentication/register.mjs +6 -2
- package/dist/server/server/src/validation/authentication/register.mjs.map +1 -1
- package/dist/server/shared/utils/session-auth.js +76 -0
- package/dist/server/shared/utils/session-auth.js.map +1 -0
- package/dist/server/shared/utils/session-auth.mjs +65 -0
- package/dist/server/shared/utils/session-auth.mjs.map +1 -0
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/content-types/index.d.ts +88 -0
- package/dist/server/src/content-types/index.d.ts.map +1 -1
- package/dist/server/src/content-types/session.d.ts +88 -0
- package/dist/server/src/content-types/session.d.ts.map +1 -0
- package/dist/server/src/controllers/authentication.d.ts +5 -5
- package/dist/server/src/controllers/authentication.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +5 -5
- package/dist/server/src/index.d.ts +93 -5
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/authentication.d.ts.map +1 -1
- package/dist/server/src/services/token.d.ts +11 -19
- package/dist/server/src/services/token.d.ts.map +1 -1
- package/dist/server/src/services/user.d.ts.map +1 -1
- package/dist/server/src/strategies/admin.d.ts.map +1 -1
- package/dist/server/src/validation/authentication/index.d.ts +1 -1
- package/dist/server/src/validation/authentication/index.d.ts.map +1 -1
- package/dist/server/src/validation/authentication/login.d.ts +7 -0
- package/dist/server/src/validation/authentication/login.d.ts.map +1 -0
- package/dist/server/src/validation/authentication/register.d.ts +5 -0
- package/dist/server/src/validation/authentication/register.d.ts.map +1 -1
- package/dist/shared/contracts/authentication.d.ts +20 -10
- package/dist/shared/contracts/authentication.d.ts.map +1 -1
- package/dist/shared/utils/session-auth.d.ts +39 -0
- package/dist/shared/utils/session-auth.d.ts.map +1 -0
- package/package.json +7 -7
- package/dist/server/server/src/validation/authentication/renew-token.js +0 -11
- package/dist/server/server/src/validation/authentication/renew-token.js.map +0 -1
- package/dist/server/server/src/validation/authentication/renew-token.mjs +0 -9
- package/dist/server/server/src/validation/authentication/renew-token.mjs.map +0 -1
- package/dist/server/src/validation/authentication/renew-token.d.ts +0 -3
- package/dist/server/src/validation/authentication/renew-token.d.ts.map +0 -1
|
@@ -7,7 +7,9 @@ const registrationSchema = yup.object().shape({
|
|
|
7
7
|
firstname: validators.firstname.required(),
|
|
8
8
|
lastname: validators.lastname.nullable(),
|
|
9
9
|
password: validators.password.required()
|
|
10
|
-
}).required().noUnknown()
|
|
10
|
+
}).required().noUnknown(),
|
|
11
|
+
deviceId: yup.string().uuid().optional(),
|
|
12
|
+
rememberMe: yup.boolean().optional()
|
|
11
13
|
}).noUnknown();
|
|
12
14
|
const registrationInfoQuerySchema = yup.object().shape({
|
|
13
15
|
registrationToken: yup.string().required()
|
|
@@ -16,7 +18,9 @@ const adminRegistrationSchema = yup.object().shape({
|
|
|
16
18
|
email: validators.email.required(),
|
|
17
19
|
firstname: validators.firstname.required(),
|
|
18
20
|
lastname: validators.lastname.nullable(),
|
|
19
|
-
password: validators.password.required()
|
|
21
|
+
password: validators.password.required(),
|
|
22
|
+
deviceId: yup.string().uuid().optional(),
|
|
23
|
+
rememberMe: yup.boolean().optional()
|
|
20
24
|
}).required().noUnknown();
|
|
21
25
|
const validateRegistrationInput = validateYupSchema(registrationSchema);
|
|
22
26
|
const validateRegistrationInfoQuery = validateYupSchema(registrationInfoQuerySchema);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.mjs","sources":["../../../../../../server/src/validation/authentication/register.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\nimport validators from '../common-validators';\n\nconst registrationSchema = yup\n .object()\n .shape({\n registrationToken: yup.string().required(),\n userInfo: yup\n .object()\n .shape({\n firstname: validators.firstname.required(),\n lastname: validators.lastname.nullable(),\n password: validators.password.required(),\n })\n .required()\n .noUnknown(),\n })\n .noUnknown();\n\nconst registrationInfoQuerySchema = yup\n .object()\n .shape({\n registrationToken: yup.string().required(),\n })\n .required()\n .noUnknown();\n\nconst adminRegistrationSchema = yup\n .object()\n .shape({\n email: validators.email.required(),\n firstname: validators.firstname.required(),\n lastname: validators.lastname.nullable(),\n password: validators.password.required(),\n })\n .required()\n .noUnknown();\n\nexport const validateRegistrationInput = validateYupSchema(registrationSchema);\nexport const validateRegistrationInfoQuery = validateYupSchema(registrationInfoQuerySchema);\nexport const validateAdminRegistrationInput = validateYupSchema(adminRegistrationSchema);\n\nexport default {\n validateRegistrationInput,\n validateRegistrationInfoQuery,\n validateAdminRegistrationInput,\n};\n"],"names":["registrationSchema","yup","object","shape","registrationToken","string","required","userInfo","firstname","validators","lastname","nullable","password","noUnknown","registrationInfoQuerySchema","adminRegistrationSchema","email","validateRegistrationInput","validateYupSchema","validateRegistrationInfoQuery","validateAdminRegistrationInput"],"mappings":";;;AAGA,MAAMA,kBAAqBC,GAAAA,GAAAA,CACxBC,MAAM,EAAA,CACNC,KAAK,CAAC;IACLC,iBAAmBH,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGC,QAAQ,EAAA;AACxCC,IAAAA,QAAAA,EAAUN,GACPC,CAAAA,MAAM,EACNC,CAAAA,KAAK,CAAC;QACLK,SAAWC,EAAAA,UAAAA,CAAWD,SAAS,CAACF,QAAQ,EAAA;QACxCI,QAAUD,EAAAA,UAAAA,CAAWC,QAAQ,CAACC,QAAQ,EAAA;QACtCC,QAAUH,EAAAA,UAAAA,CAAWG,QAAQ,CAACN,QAAQ;KAEvCA,CAAAA,CAAAA,QAAQ,GACRO,SAAS;
|
|
1
|
+
{"version":3,"file":"register.mjs","sources":["../../../../../../server/src/validation/authentication/register.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\nimport validators from '../common-validators';\n\nconst registrationSchema = yup\n .object()\n .shape({\n registrationToken: yup.string().required(),\n userInfo: yup\n .object()\n .shape({\n firstname: validators.firstname.required(),\n lastname: validators.lastname.nullable(),\n password: validators.password.required(),\n })\n .required()\n .noUnknown(),\n deviceId: yup.string().uuid().optional(),\n rememberMe: yup.boolean().optional(),\n })\n .noUnknown();\n\nconst registrationInfoQuerySchema = yup\n .object()\n .shape({\n registrationToken: yup.string().required(),\n })\n .required()\n .noUnknown();\n\nconst adminRegistrationSchema = yup\n .object()\n .shape({\n email: validators.email.required(),\n firstname: validators.firstname.required(),\n lastname: validators.lastname.nullable(),\n password: validators.password.required(),\n deviceId: yup.string().uuid().optional(),\n rememberMe: yup.boolean().optional(),\n })\n .required()\n .noUnknown();\n\nexport const validateRegistrationInput = validateYupSchema(registrationSchema);\nexport const validateRegistrationInfoQuery = validateYupSchema(registrationInfoQuerySchema);\nexport const validateAdminRegistrationInput = validateYupSchema(adminRegistrationSchema);\n\nexport default {\n validateRegistrationInput,\n validateRegistrationInfoQuery,\n validateAdminRegistrationInput,\n};\n"],"names":["registrationSchema","yup","object","shape","registrationToken","string","required","userInfo","firstname","validators","lastname","nullable","password","noUnknown","deviceId","uuid","optional","rememberMe","boolean","registrationInfoQuerySchema","adminRegistrationSchema","email","validateRegistrationInput","validateYupSchema","validateRegistrationInfoQuery","validateAdminRegistrationInput"],"mappings":";;;AAGA,MAAMA,kBAAqBC,GAAAA,GAAAA,CACxBC,MAAM,EAAA,CACNC,KAAK,CAAC;IACLC,iBAAmBH,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGC,QAAQ,EAAA;AACxCC,IAAAA,QAAAA,EAAUN,GACPC,CAAAA,MAAM,EACNC,CAAAA,KAAK,CAAC;QACLK,SAAWC,EAAAA,UAAAA,CAAWD,SAAS,CAACF,QAAQ,EAAA;QACxCI,QAAUD,EAAAA,UAAAA,CAAWC,QAAQ,CAACC,QAAQ,EAAA;QACtCC,QAAUH,EAAAA,UAAAA,CAAWG,QAAQ,CAACN,QAAQ;KAEvCA,CAAAA,CAAAA,QAAQ,GACRO,SAAS,EAAA;AACZC,IAAAA,QAAAA,EAAUb,GAAII,CAAAA,MAAM,EAAGU,CAAAA,IAAI,GAAGC,QAAQ,EAAA;IACtCC,UAAYhB,EAAAA,GAAAA,CAAIiB,OAAO,EAAA,CAAGF,QAAQ;AACpC,CAAA,CAAA,CACCH,SAAS,EAAA;AAEZ,MAAMM,2BAA8BlB,GAAAA,GAAAA,CACjCC,MAAM,EAAA,CACNC,KAAK,CAAC;IACLC,iBAAmBH,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGC,QAAQ;AAC1C,CACCA,CAAAA,CAAAA,QAAQ,GACRO,SAAS,EAAA;AAEZ,MAAMO,uBAA0BnB,GAAAA,GAAAA,CAC7BC,MAAM,EAAA,CACNC,KAAK,CAAC;IACLkB,KAAOZ,EAAAA,UAAAA,CAAWY,KAAK,CAACf,QAAQ,EAAA;IAChCE,SAAWC,EAAAA,UAAAA,CAAWD,SAAS,CAACF,QAAQ,EAAA;IACxCI,QAAUD,EAAAA,UAAAA,CAAWC,QAAQ,CAACC,QAAQ,EAAA;IACtCC,QAAUH,EAAAA,UAAAA,CAAWG,QAAQ,CAACN,QAAQ,EAAA;AACtCQ,IAAAA,QAAAA,EAAUb,GAAII,CAAAA,MAAM,EAAGU,CAAAA,IAAI,GAAGC,QAAQ,EAAA;IACtCC,UAAYhB,EAAAA,GAAAA,CAAIiB,OAAO,EAAA,CAAGF,QAAQ;AACpC,CACCV,CAAAA,CAAAA,QAAQ,GACRO,SAAS,EAAA;AAEL,MAAMS,yBAA4BC,GAAAA,iBAAAA,CAAkBvB,kBAAoB;AACxE,MAAMwB,6BAAgCD,GAAAA,iBAAAA,CAAkBJ,2BAA6B;AACrF,MAAMM,8BAAiCF,GAAAA,iBAAAA,CAAkBH,uBAAyB;;;;"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var crypto = require('crypto');
|
|
4
|
+
|
|
5
|
+
const REFRESH_COOKIE_NAME = 'strapi_admin_refresh';
|
|
6
|
+
const DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN = 30 * 24 * 60 * 60;
|
|
7
|
+
const DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN = 14 * 24 * 60 * 60;
|
|
8
|
+
const DEFAULT_MAX_SESSION_LIFESPAN = 1 * 24 * 60 * 60;
|
|
9
|
+
const DEFAULT_IDLE_SESSION_LIFESPAN = 2 * 60 * 60;
|
|
10
|
+
const getRefreshCookieOptions = ()=>{
|
|
11
|
+
const isProduction = strapi.config.get('environment') === 'production';
|
|
12
|
+
const domain = strapi.config.get('admin.auth.cookie.domain') || strapi.config.get('admin.auth.domain');
|
|
13
|
+
const path = strapi.config.get('admin.auth.cookie.path', '/admin');
|
|
14
|
+
const sameSite = strapi.config.get('admin.auth.cookie.sameSite') ?? 'lax';
|
|
15
|
+
return {
|
|
16
|
+
httpOnly: true,
|
|
17
|
+
secure: isProduction,
|
|
18
|
+
overwrite: true,
|
|
19
|
+
domain,
|
|
20
|
+
path,
|
|
21
|
+
sameSite,
|
|
22
|
+
maxAge: undefined
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
const getLifespansForType = (type)=>{
|
|
26
|
+
{
|
|
27
|
+
const idleSeconds = Number(strapi.config.get('admin.auth.sessions.idleRefreshTokenLifespan', DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN));
|
|
28
|
+
const maxSeconds = Number(strapi.config.get('admin.auth.sessions.maxRefreshTokenLifespan', DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN));
|
|
29
|
+
return {
|
|
30
|
+
idleSeconds,
|
|
31
|
+
maxSeconds
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const buildCookieOptionsWithExpiry = (type, absoluteExpiresAtISO)=>{
|
|
36
|
+
const base = getRefreshCookieOptions();
|
|
37
|
+
if (type === 'session') {
|
|
38
|
+
return base;
|
|
39
|
+
}
|
|
40
|
+
const { idleSeconds } = getLifespansForType();
|
|
41
|
+
const now = Date.now();
|
|
42
|
+
const idleExpiry = now + idleSeconds * 1000;
|
|
43
|
+
const absoluteExpiry = absoluteExpiresAtISO ? new Date(absoluteExpiresAtISO).getTime() : idleExpiry;
|
|
44
|
+
const chosen = new Date(Math.min(idleExpiry, absoluteExpiry));
|
|
45
|
+
return {
|
|
46
|
+
...base,
|
|
47
|
+
expires: chosen,
|
|
48
|
+
maxAge: Math.max(0, chosen.getTime() - now)
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
const getSessionManager = ()=>{
|
|
52
|
+
const manager = strapi.sessionManager;
|
|
53
|
+
return manager ?? null;
|
|
54
|
+
};
|
|
55
|
+
const generateDeviceId = ()=>crypto.randomUUID();
|
|
56
|
+
const extractDeviceParams = (requestBody)=>{
|
|
57
|
+
const body = requestBody ?? {};
|
|
58
|
+
const deviceId = body.deviceId || generateDeviceId();
|
|
59
|
+
const rememberMe = Boolean(body.rememberMe);
|
|
60
|
+
return {
|
|
61
|
+
deviceId,
|
|
62
|
+
rememberMe
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
exports.DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN = DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN;
|
|
67
|
+
exports.DEFAULT_IDLE_SESSION_LIFESPAN = DEFAULT_IDLE_SESSION_LIFESPAN;
|
|
68
|
+
exports.DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN = DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN;
|
|
69
|
+
exports.DEFAULT_MAX_SESSION_LIFESPAN = DEFAULT_MAX_SESSION_LIFESPAN;
|
|
70
|
+
exports.REFRESH_COOKIE_NAME = REFRESH_COOKIE_NAME;
|
|
71
|
+
exports.buildCookieOptionsWithExpiry = buildCookieOptionsWithExpiry;
|
|
72
|
+
exports.extractDeviceParams = extractDeviceParams;
|
|
73
|
+
exports.generateDeviceId = generateDeviceId;
|
|
74
|
+
exports.getRefreshCookieOptions = getRefreshCookieOptions;
|
|
75
|
+
exports.getSessionManager = getSessionManager;
|
|
76
|
+
//# sourceMappingURL=session-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-auth.js","sources":["../../../../shared/utils/session-auth.ts"],"sourcesContent":["import crypto from 'crypto';\nimport type { Modules } from '@strapi/types';\n\nexport const REFRESH_COOKIE_NAME = 'strapi_admin_refresh';\n\nexport const DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN = 30 * 24 * 60 * 60;\nexport const DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN = 14 * 24 * 60 * 60;\nexport const DEFAULT_MAX_SESSION_LIFESPAN = 1 * 24 * 60 * 60;\nexport const DEFAULT_IDLE_SESSION_LIFESPAN = 2 * 60 * 60;\n\nexport const getRefreshCookieOptions = () => {\n const isProduction = strapi.config.get('environment') === 'production';\n const domain: string | undefined =\n strapi.config.get('admin.auth.cookie.domain') || strapi.config.get('admin.auth.domain');\n const path: string = strapi.config.get('admin.auth.cookie.path', '/admin');\n\n const sameSite: boolean | 'lax' | 'strict' | 'none' =\n strapi.config.get('admin.auth.cookie.sameSite') ?? 'lax';\n\n return {\n httpOnly: true,\n secure: isProduction,\n overwrite: true,\n domain,\n path,\n sameSite,\n maxAge: undefined,\n };\n};\n\nconst getLifespansForType = (\n type: 'refresh' | 'session'\n): { idleSeconds: number; maxSeconds: number } => {\n if (type === 'refresh') {\n const idleSeconds = Number(\n strapi.config.get(\n 'admin.auth.sessions.idleRefreshTokenLifespan',\n DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN\n )\n );\n const maxSeconds = Number(\n strapi.config.get(\n 'admin.auth.sessions.maxRefreshTokenLifespan',\n DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN\n )\n );\n\n return { idleSeconds, maxSeconds };\n }\n\n const idleSeconds = Number(\n strapi.config.get('admin.auth.sessions.idleSessionLifespan', DEFAULT_IDLE_SESSION_LIFESPAN)\n );\n const maxSeconds = Number(\n strapi.config.get('admin.auth.sessions.maxSessionLifespan', DEFAULT_MAX_SESSION_LIFESPAN)\n );\n\n return { idleSeconds, maxSeconds };\n};\n\nexport const buildCookieOptionsWithExpiry = (\n type: 'refresh' | 'session',\n absoluteExpiresAtISO?: string\n) => {\n const base = getRefreshCookieOptions();\n if (type === 'session') {\n return base;\n }\n\n const { idleSeconds } = getLifespansForType('refresh');\n const now = Date.now();\n const idleExpiry = now + idleSeconds * 1000;\n const absoluteExpiry = absoluteExpiresAtISO\n ? new Date(absoluteExpiresAtISO).getTime()\n : idleExpiry;\n const chosen = new Date(Math.min(idleExpiry, absoluteExpiry));\n\n return { ...base, expires: chosen, maxAge: Math.max(0, chosen.getTime() - now) };\n};\n\nexport const getSessionManager = (): Modules.SessionManager.SessionManagerService | null => {\n const manager = strapi.sessionManager as Modules.SessionManager.SessionManagerService | undefined;\n return manager ?? null;\n};\n\nexport const generateDeviceId = (): string => crypto.randomUUID();\n\nexport const extractDeviceParams = (\n requestBody: unknown\n): { deviceId: string; rememberMe: boolean } => {\n const body = (requestBody ?? {}) as { deviceId?: string; rememberMe?: boolean };\n const deviceId = body.deviceId || generateDeviceId();\n const rememberMe = Boolean(body.rememberMe);\n\n return { deviceId, rememberMe };\n};\n"],"names":["REFRESH_COOKIE_NAME","DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN","DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN","DEFAULT_MAX_SESSION_LIFESPAN","DEFAULT_IDLE_SESSION_LIFESPAN","getRefreshCookieOptions","isProduction","strapi","config","get","domain","path","sameSite","httpOnly","secure","overwrite","maxAge","undefined","getLifespansForType","type","idleSeconds","Number","maxSeconds","buildCookieOptionsWithExpiry","absoluteExpiresAtISO","base","now","Date","idleExpiry","absoluteExpiry","getTime","chosen","Math","min","expires","max","getSessionManager","manager","sessionManager","generateDeviceId","crypto","randomUUID","extractDeviceParams","requestBody","body","deviceId","rememberMe","Boolean"],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import crypto from 'crypto';
|
|
2
|
+
|
|
3
|
+
const REFRESH_COOKIE_NAME = 'strapi_admin_refresh';
|
|
4
|
+
const DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN = 30 * 24 * 60 * 60;
|
|
5
|
+
const DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN = 14 * 24 * 60 * 60;
|
|
6
|
+
const DEFAULT_MAX_SESSION_LIFESPAN = 1 * 24 * 60 * 60;
|
|
7
|
+
const DEFAULT_IDLE_SESSION_LIFESPAN = 2 * 60 * 60;
|
|
8
|
+
const getRefreshCookieOptions = ()=>{
|
|
9
|
+
const isProduction = strapi.config.get('environment') === 'production';
|
|
10
|
+
const domain = strapi.config.get('admin.auth.cookie.domain') || strapi.config.get('admin.auth.domain');
|
|
11
|
+
const path = strapi.config.get('admin.auth.cookie.path', '/admin');
|
|
12
|
+
const sameSite = strapi.config.get('admin.auth.cookie.sameSite') ?? 'lax';
|
|
13
|
+
return {
|
|
14
|
+
httpOnly: true,
|
|
15
|
+
secure: isProduction,
|
|
16
|
+
overwrite: true,
|
|
17
|
+
domain,
|
|
18
|
+
path,
|
|
19
|
+
sameSite,
|
|
20
|
+
maxAge: undefined
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
const getLifespansForType = (type)=>{
|
|
24
|
+
{
|
|
25
|
+
const idleSeconds = Number(strapi.config.get('admin.auth.sessions.idleRefreshTokenLifespan', DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN));
|
|
26
|
+
const maxSeconds = Number(strapi.config.get('admin.auth.sessions.maxRefreshTokenLifespan', DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN));
|
|
27
|
+
return {
|
|
28
|
+
idleSeconds,
|
|
29
|
+
maxSeconds
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const buildCookieOptionsWithExpiry = (type, absoluteExpiresAtISO)=>{
|
|
34
|
+
const base = getRefreshCookieOptions();
|
|
35
|
+
if (type === 'session') {
|
|
36
|
+
return base;
|
|
37
|
+
}
|
|
38
|
+
const { idleSeconds } = getLifespansForType();
|
|
39
|
+
const now = Date.now();
|
|
40
|
+
const idleExpiry = now + idleSeconds * 1000;
|
|
41
|
+
const absoluteExpiry = absoluteExpiresAtISO ? new Date(absoluteExpiresAtISO).getTime() : idleExpiry;
|
|
42
|
+
const chosen = new Date(Math.min(idleExpiry, absoluteExpiry));
|
|
43
|
+
return {
|
|
44
|
+
...base,
|
|
45
|
+
expires: chosen,
|
|
46
|
+
maxAge: Math.max(0, chosen.getTime() - now)
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
const getSessionManager = ()=>{
|
|
50
|
+
const manager = strapi.sessionManager;
|
|
51
|
+
return manager ?? null;
|
|
52
|
+
};
|
|
53
|
+
const generateDeviceId = ()=>crypto.randomUUID();
|
|
54
|
+
const extractDeviceParams = (requestBody)=>{
|
|
55
|
+
const body = requestBody ?? {};
|
|
56
|
+
const deviceId = body.deviceId || generateDeviceId();
|
|
57
|
+
const rememberMe = Boolean(body.rememberMe);
|
|
58
|
+
return {
|
|
59
|
+
deviceId,
|
|
60
|
+
rememberMe
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export { DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN, DEFAULT_IDLE_SESSION_LIFESPAN, DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN, DEFAULT_MAX_SESSION_LIFESPAN, REFRESH_COOKIE_NAME, buildCookieOptionsWithExpiry, extractDeviceParams, generateDeviceId, getRefreshCookieOptions, getSessionManager };
|
|
65
|
+
//# sourceMappingURL=session-auth.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-auth.mjs","sources":["../../../../shared/utils/session-auth.ts"],"sourcesContent":["import crypto from 'crypto';\nimport type { Modules } from '@strapi/types';\n\nexport const REFRESH_COOKIE_NAME = 'strapi_admin_refresh';\n\nexport const DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN = 30 * 24 * 60 * 60;\nexport const DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN = 14 * 24 * 60 * 60;\nexport const DEFAULT_MAX_SESSION_LIFESPAN = 1 * 24 * 60 * 60;\nexport const DEFAULT_IDLE_SESSION_LIFESPAN = 2 * 60 * 60;\n\nexport const getRefreshCookieOptions = () => {\n const isProduction = strapi.config.get('environment') === 'production';\n const domain: string | undefined =\n strapi.config.get('admin.auth.cookie.domain') || strapi.config.get('admin.auth.domain');\n const path: string = strapi.config.get('admin.auth.cookie.path', '/admin');\n\n const sameSite: boolean | 'lax' | 'strict' | 'none' =\n strapi.config.get('admin.auth.cookie.sameSite') ?? 'lax';\n\n return {\n httpOnly: true,\n secure: isProduction,\n overwrite: true,\n domain,\n path,\n sameSite,\n maxAge: undefined,\n };\n};\n\nconst getLifespansForType = (\n type: 'refresh' | 'session'\n): { idleSeconds: number; maxSeconds: number } => {\n if (type === 'refresh') {\n const idleSeconds = Number(\n strapi.config.get(\n 'admin.auth.sessions.idleRefreshTokenLifespan',\n DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN\n )\n );\n const maxSeconds = Number(\n strapi.config.get(\n 'admin.auth.sessions.maxRefreshTokenLifespan',\n DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN\n )\n );\n\n return { idleSeconds, maxSeconds };\n }\n\n const idleSeconds = Number(\n strapi.config.get('admin.auth.sessions.idleSessionLifespan', DEFAULT_IDLE_SESSION_LIFESPAN)\n );\n const maxSeconds = Number(\n strapi.config.get('admin.auth.sessions.maxSessionLifespan', DEFAULT_MAX_SESSION_LIFESPAN)\n );\n\n return { idleSeconds, maxSeconds };\n};\n\nexport const buildCookieOptionsWithExpiry = (\n type: 'refresh' | 'session',\n absoluteExpiresAtISO?: string\n) => {\n const base = getRefreshCookieOptions();\n if (type === 'session') {\n return base;\n }\n\n const { idleSeconds } = getLifespansForType('refresh');\n const now = Date.now();\n const idleExpiry = now + idleSeconds * 1000;\n const absoluteExpiry = absoluteExpiresAtISO\n ? new Date(absoluteExpiresAtISO).getTime()\n : idleExpiry;\n const chosen = new Date(Math.min(idleExpiry, absoluteExpiry));\n\n return { ...base, expires: chosen, maxAge: Math.max(0, chosen.getTime() - now) };\n};\n\nexport const getSessionManager = (): Modules.SessionManager.SessionManagerService | null => {\n const manager = strapi.sessionManager as Modules.SessionManager.SessionManagerService | undefined;\n return manager ?? null;\n};\n\nexport const generateDeviceId = (): string => crypto.randomUUID();\n\nexport const extractDeviceParams = (\n requestBody: unknown\n): { deviceId: string; rememberMe: boolean } => {\n const body = (requestBody ?? {}) as { deviceId?: string; rememberMe?: boolean };\n const deviceId = body.deviceId || generateDeviceId();\n const rememberMe = Boolean(body.rememberMe);\n\n return { deviceId, rememberMe };\n};\n"],"names":["REFRESH_COOKIE_NAME","DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN","DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN","DEFAULT_MAX_SESSION_LIFESPAN","DEFAULT_IDLE_SESSION_LIFESPAN","getRefreshCookieOptions","isProduction","strapi","config","get","domain","path","sameSite","httpOnly","secure","overwrite","maxAge","undefined","getLifespansForType","type","idleSeconds","Number","maxSeconds","buildCookieOptionsWithExpiry","absoluteExpiresAtISO","base","now","Date","idleExpiry","absoluteExpiry","getTime","chosen","Math","min","expires","max","getSessionManager","manager","sessionManager","generateDeviceId","crypto","randomUUID","extractDeviceParams","requestBody","body","deviceId","rememberMe","Boolean"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../server/src/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../server/src/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;qCAuGR;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;AAAzD,wBAuEE"}
|
|
@@ -440,6 +440,94 @@ declare const _default: {
|
|
|
440
440
|
};
|
|
441
441
|
};
|
|
442
442
|
};
|
|
443
|
+
session: {
|
|
444
|
+
schema: {
|
|
445
|
+
collectionName: string;
|
|
446
|
+
info: {
|
|
447
|
+
name: string;
|
|
448
|
+
description: string;
|
|
449
|
+
singularName: string;
|
|
450
|
+
pluralName: string;
|
|
451
|
+
displayName: string;
|
|
452
|
+
};
|
|
453
|
+
options: {
|
|
454
|
+
draftAndPublish: boolean;
|
|
455
|
+
};
|
|
456
|
+
pluginOptions: {
|
|
457
|
+
'content-manager': {
|
|
458
|
+
visible: boolean;
|
|
459
|
+
};
|
|
460
|
+
'content-type-builder': {
|
|
461
|
+
visible: boolean;
|
|
462
|
+
};
|
|
463
|
+
i18n: {
|
|
464
|
+
localized: boolean;
|
|
465
|
+
};
|
|
466
|
+
};
|
|
467
|
+
attributes: {
|
|
468
|
+
userId: {
|
|
469
|
+
type: string;
|
|
470
|
+
required: boolean;
|
|
471
|
+
configurable: boolean;
|
|
472
|
+
private: boolean;
|
|
473
|
+
searchable: boolean;
|
|
474
|
+
};
|
|
475
|
+
sessionId: {
|
|
476
|
+
type: string;
|
|
477
|
+
unique: boolean;
|
|
478
|
+
required: boolean;
|
|
479
|
+
configurable: boolean;
|
|
480
|
+
private: boolean;
|
|
481
|
+
searchable: boolean;
|
|
482
|
+
};
|
|
483
|
+
childId: {
|
|
484
|
+
type: string;
|
|
485
|
+
configurable: boolean;
|
|
486
|
+
private: boolean;
|
|
487
|
+
searchable: boolean;
|
|
488
|
+
};
|
|
489
|
+
deviceId: {
|
|
490
|
+
type: string;
|
|
491
|
+
required: boolean;
|
|
492
|
+
configurable: boolean;
|
|
493
|
+
private: boolean;
|
|
494
|
+
searchable: boolean;
|
|
495
|
+
};
|
|
496
|
+
origin: {
|
|
497
|
+
type: string;
|
|
498
|
+
required: boolean;
|
|
499
|
+
configurable: boolean;
|
|
500
|
+
private: boolean;
|
|
501
|
+
searchable: boolean;
|
|
502
|
+
};
|
|
503
|
+
expiresAt: {
|
|
504
|
+
type: string;
|
|
505
|
+
required: boolean;
|
|
506
|
+
configurable: boolean;
|
|
507
|
+
private: boolean;
|
|
508
|
+
searchable: boolean;
|
|
509
|
+
};
|
|
510
|
+
absoluteExpiresAt: {
|
|
511
|
+
type: string;
|
|
512
|
+
configurable: boolean;
|
|
513
|
+
private: boolean;
|
|
514
|
+
searchable: boolean;
|
|
515
|
+
};
|
|
516
|
+
status: {
|
|
517
|
+
type: string;
|
|
518
|
+
configurable: boolean;
|
|
519
|
+
private: boolean;
|
|
520
|
+
searchable: boolean;
|
|
521
|
+
};
|
|
522
|
+
type: {
|
|
523
|
+
type: string;
|
|
524
|
+
configurable: boolean;
|
|
525
|
+
private: boolean;
|
|
526
|
+
searchable: boolean;
|
|
527
|
+
};
|
|
528
|
+
};
|
|
529
|
+
};
|
|
530
|
+
};
|
|
443
531
|
};
|
|
444
532
|
export default _default;
|
|
445
533
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/content-types/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/content-types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,wBASE"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
collectionName: string;
|
|
3
|
+
info: {
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
singularName: string;
|
|
7
|
+
pluralName: string;
|
|
8
|
+
displayName: string;
|
|
9
|
+
};
|
|
10
|
+
options: {
|
|
11
|
+
draftAndPublish: boolean;
|
|
12
|
+
};
|
|
13
|
+
pluginOptions: {
|
|
14
|
+
'content-manager': {
|
|
15
|
+
visible: boolean;
|
|
16
|
+
};
|
|
17
|
+
'content-type-builder': {
|
|
18
|
+
visible: boolean;
|
|
19
|
+
};
|
|
20
|
+
i18n: {
|
|
21
|
+
localized: boolean;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
attributes: {
|
|
25
|
+
userId: {
|
|
26
|
+
type: string;
|
|
27
|
+
required: boolean;
|
|
28
|
+
configurable: boolean;
|
|
29
|
+
private: boolean;
|
|
30
|
+
searchable: boolean;
|
|
31
|
+
};
|
|
32
|
+
sessionId: {
|
|
33
|
+
type: string;
|
|
34
|
+
unique: boolean;
|
|
35
|
+
required: boolean;
|
|
36
|
+
configurable: boolean;
|
|
37
|
+
private: boolean;
|
|
38
|
+
searchable: boolean;
|
|
39
|
+
};
|
|
40
|
+
childId: {
|
|
41
|
+
type: string;
|
|
42
|
+
configurable: boolean;
|
|
43
|
+
private: boolean;
|
|
44
|
+
searchable: boolean;
|
|
45
|
+
};
|
|
46
|
+
deviceId: {
|
|
47
|
+
type: string;
|
|
48
|
+
required: boolean;
|
|
49
|
+
configurable: boolean;
|
|
50
|
+
private: boolean;
|
|
51
|
+
searchable: boolean;
|
|
52
|
+
};
|
|
53
|
+
origin: {
|
|
54
|
+
type: string;
|
|
55
|
+
required: boolean;
|
|
56
|
+
configurable: boolean;
|
|
57
|
+
private: boolean;
|
|
58
|
+
searchable: boolean;
|
|
59
|
+
};
|
|
60
|
+
expiresAt: {
|
|
61
|
+
type: string;
|
|
62
|
+
required: boolean;
|
|
63
|
+
configurable: boolean;
|
|
64
|
+
private: boolean;
|
|
65
|
+
searchable: boolean;
|
|
66
|
+
};
|
|
67
|
+
absoluteExpiresAt: {
|
|
68
|
+
type: string;
|
|
69
|
+
configurable: boolean;
|
|
70
|
+
private: boolean;
|
|
71
|
+
searchable: boolean;
|
|
72
|
+
};
|
|
73
|
+
status: {
|
|
74
|
+
type: string;
|
|
75
|
+
configurable: boolean;
|
|
76
|
+
private: boolean;
|
|
77
|
+
searchable: boolean;
|
|
78
|
+
};
|
|
79
|
+
type: {
|
|
80
|
+
type: string;
|
|
81
|
+
configurable: boolean;
|
|
82
|
+
private: boolean;
|
|
83
|
+
searchable: boolean;
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
export default _default;
|
|
88
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../server/src/content-types/session.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBAqFE"}
|
|
@@ -2,13 +2,13 @@ import type { Context } from 'koa';
|
|
|
2
2
|
import '@strapi/types';
|
|
3
3
|
declare const _default: {
|
|
4
4
|
login: import("koa").Middleware<import("koa").DefaultState, Context, any>;
|
|
5
|
-
renewToken(ctx: Context): Promise<void>;
|
|
6
5
|
registrationInfo(ctx: Context): Promise<void>;
|
|
7
|
-
register(ctx: Context): Promise<
|
|
8
|
-
registerAdmin(ctx: Context): Promise<
|
|
6
|
+
register(ctx: Context): Promise<Context | undefined>;
|
|
7
|
+
registerAdmin(ctx: Context): Promise<Context | undefined>;
|
|
9
8
|
forgotPassword(ctx: Context): Promise<void>;
|
|
10
|
-
resetPassword(ctx: Context): Promise<
|
|
11
|
-
|
|
9
|
+
resetPassword(ctx: Context): Promise<Context | undefined>;
|
|
10
|
+
accessToken(ctx: Context): Promise<Context | undefined>;
|
|
11
|
+
logout(ctx: Context): Promise<void>;
|
|
12
12
|
};
|
|
13
13
|
export default _default;
|
|
14
14
|
//# sourceMappingURL=authentication.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/authentication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAQ,MAAM,KAAK,CAAC;AAGzC,OAAO,eAAe,CAAC;;;
|
|
1
|
+
{"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/authentication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAQ,MAAM,KAAK,CAAC;AAGzC,OAAO,eAAe,CAAC;;;0BAgHO,OAAO;kBAcf,OAAO;uBA6CF,OAAO;wBAkEN,OAAO;uBAUR,OAAO;qBA+CT,OAAO;gBAqCZ,OAAO;;AA3S3B,wBAoUE"}
|
|
@@ -67,13 +67,13 @@ declare const _default: {
|
|
|
67
67
|
};
|
|
68
68
|
authentication: {
|
|
69
69
|
login: import("koa").Middleware<import("koa").DefaultState, import("koa").Context, any>;
|
|
70
|
-
renewToken(ctx: import("koa").Context): Promise<void>;
|
|
71
70
|
registrationInfo(ctx: import("koa").Context): Promise<void>;
|
|
72
|
-
register(ctx: import("koa").Context): Promise<
|
|
73
|
-
registerAdmin(ctx: import("koa").Context): Promise<
|
|
71
|
+
register(ctx: import("koa").Context): Promise<import("koa").Context | undefined>;
|
|
72
|
+
registerAdmin(ctx: import("koa").Context): Promise<import("koa").Context | undefined>;
|
|
74
73
|
forgotPassword(ctx: import("koa").Context): Promise<void>;
|
|
75
|
-
resetPassword(ctx: import("koa").Context): Promise<
|
|
76
|
-
|
|
74
|
+
resetPassword(ctx: import("koa").Context): Promise<import("koa").Context | undefined>;
|
|
75
|
+
accessToken(ctx: import("koa").Context): Promise<import("koa").Context | undefined>;
|
|
76
|
+
logout(ctx: import("koa").Context): Promise<void>;
|
|
77
77
|
};
|
|
78
78
|
permission: {
|
|
79
79
|
check(ctx: import("koa").Context): Promise<void>;
|
|
@@ -272,13 +272,13 @@ declare let admin: {
|
|
|
272
272
|
};
|
|
273
273
|
authentication: {
|
|
274
274
|
login: import("koa").Middleware<import("koa").DefaultState, import("koa").Context, any>;
|
|
275
|
-
renewToken(ctx: import("koa").Context): Promise<void>;
|
|
276
275
|
registrationInfo(ctx: import("koa").Context): Promise<void>;
|
|
277
|
-
register(ctx: import("koa").Context): Promise<
|
|
278
|
-
registerAdmin(ctx: import("koa").Context): Promise<
|
|
276
|
+
register(ctx: import("koa").Context): Promise<import("koa").Context | undefined>;
|
|
277
|
+
registerAdmin(ctx: import("koa").Context): Promise<import("koa").Context | undefined>;
|
|
279
278
|
forgotPassword(ctx: import("koa").Context): Promise<void>;
|
|
280
|
-
resetPassword(ctx: import("koa").Context): Promise<
|
|
281
|
-
|
|
279
|
+
resetPassword(ctx: import("koa").Context): Promise<import("koa").Context | undefined>;
|
|
280
|
+
accessToken(ctx: import("koa").Context): Promise<import("koa").Context | undefined>;
|
|
281
|
+
logout(ctx: import("koa").Context): Promise<void>;
|
|
282
282
|
};
|
|
283
283
|
permission: {
|
|
284
284
|
check(ctx: import("koa").Context): Promise<void>;
|
|
@@ -774,6 +774,94 @@ declare let admin: {
|
|
|
774
774
|
};
|
|
775
775
|
};
|
|
776
776
|
};
|
|
777
|
+
session: {
|
|
778
|
+
schema: {
|
|
779
|
+
collectionName: string;
|
|
780
|
+
info: {
|
|
781
|
+
name: string;
|
|
782
|
+
description: string;
|
|
783
|
+
singularName: string;
|
|
784
|
+
pluralName: string;
|
|
785
|
+
displayName: string;
|
|
786
|
+
};
|
|
787
|
+
options: {
|
|
788
|
+
draftAndPublish: boolean;
|
|
789
|
+
};
|
|
790
|
+
pluginOptions: {
|
|
791
|
+
'content-manager': {
|
|
792
|
+
visible: boolean;
|
|
793
|
+
};
|
|
794
|
+
'content-type-builder': {
|
|
795
|
+
visible: boolean;
|
|
796
|
+
};
|
|
797
|
+
i18n: {
|
|
798
|
+
localized: boolean;
|
|
799
|
+
};
|
|
800
|
+
};
|
|
801
|
+
attributes: {
|
|
802
|
+
userId: {
|
|
803
|
+
type: string;
|
|
804
|
+
required: boolean;
|
|
805
|
+
configurable: boolean;
|
|
806
|
+
private: boolean;
|
|
807
|
+
searchable: boolean;
|
|
808
|
+
};
|
|
809
|
+
sessionId: {
|
|
810
|
+
type: string;
|
|
811
|
+
unique: boolean;
|
|
812
|
+
required: boolean;
|
|
813
|
+
configurable: boolean;
|
|
814
|
+
private: boolean;
|
|
815
|
+
searchable: boolean;
|
|
816
|
+
};
|
|
817
|
+
childId: {
|
|
818
|
+
type: string;
|
|
819
|
+
configurable: boolean;
|
|
820
|
+
private: boolean;
|
|
821
|
+
searchable: boolean;
|
|
822
|
+
};
|
|
823
|
+
deviceId: {
|
|
824
|
+
type: string;
|
|
825
|
+
required: boolean;
|
|
826
|
+
configurable: boolean;
|
|
827
|
+
private: boolean;
|
|
828
|
+
searchable: boolean;
|
|
829
|
+
};
|
|
830
|
+
origin: {
|
|
831
|
+
type: string;
|
|
832
|
+
required: boolean;
|
|
833
|
+
configurable: boolean;
|
|
834
|
+
private: boolean;
|
|
835
|
+
searchable: boolean;
|
|
836
|
+
};
|
|
837
|
+
expiresAt: {
|
|
838
|
+
type: string;
|
|
839
|
+
required: boolean;
|
|
840
|
+
configurable: boolean;
|
|
841
|
+
private: boolean;
|
|
842
|
+
searchable: boolean;
|
|
843
|
+
};
|
|
844
|
+
absoluteExpiresAt: {
|
|
845
|
+
type: string;
|
|
846
|
+
configurable: boolean;
|
|
847
|
+
private: boolean;
|
|
848
|
+
searchable: boolean;
|
|
849
|
+
};
|
|
850
|
+
status: {
|
|
851
|
+
type: string;
|
|
852
|
+
configurable: boolean;
|
|
853
|
+
private: boolean;
|
|
854
|
+
searchable: boolean;
|
|
855
|
+
};
|
|
856
|
+
type: {
|
|
857
|
+
type: string;
|
|
858
|
+
configurable: boolean;
|
|
859
|
+
private: boolean;
|
|
860
|
+
searchable: boolean;
|
|
861
|
+
};
|
|
862
|
+
};
|
|
863
|
+
};
|
|
864
|
+
};
|
|
777
865
|
};
|
|
778
866
|
middlewares: {
|
|
779
867
|
rateLimit: (config: any, { strapi }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":";AAeA,QAAA,IAAI,KAAK
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":";AAeA,QAAA,IAAI,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWR,CAAC;AAUF,eAAe,KAAK,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/authentication.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/authentication.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA2DE"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { Algorithm } from 'jsonwebtoken';
|
|
1
2
|
import type { AdminUser } from '../../../shared/contracts/shared';
|
|
2
3
|
export type TokenOptions = {
|
|
3
4
|
expiresIn?: string;
|
|
5
|
+
algorithm?: Algorithm;
|
|
4
6
|
[key: string]: unknown;
|
|
5
7
|
};
|
|
6
8
|
export type TokenPayload = {
|
|
@@ -20,25 +22,15 @@ declare const getTokenOptions: () => {
|
|
|
20
22
|
* Create a random token
|
|
21
23
|
*/
|
|
22
24
|
declare const createToken: () => string;
|
|
25
|
+
declare const checkSecretIsDefined: () => void;
|
|
26
|
+
export { createToken, getTokenOptions, checkSecretIsDefined };
|
|
23
27
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Tries to decode a token an return its payload and if it is valid
|
|
32
|
-
* @param token - a token to decode
|
|
33
|
-
* @return decodeInfo - the decoded info
|
|
28
|
+
* Convert an expiresIn value (string or number) into seconds.
|
|
29
|
+
* Supported formats:
|
|
30
|
+
* - number: treated as seconds
|
|
31
|
+
* - numeric string (e.g. "180"): treated as seconds
|
|
32
|
+
* - shorthand string: "Xs", "Xm", "Xh", "Xd", "Xw" (case-insensitive)
|
|
33
|
+
* Returns undefined when value is not set or invalid.
|
|
34
34
|
*/
|
|
35
|
-
declare const
|
|
36
|
-
payload: TokenPayload;
|
|
37
|
-
isValid: true;
|
|
38
|
-
} | {
|
|
39
|
-
payload: null;
|
|
40
|
-
isValid: false;
|
|
41
|
-
};
|
|
42
|
-
declare const checkSecretIsDefined: () => void;
|
|
43
|
-
export { createToken, createJwtToken, getTokenOptions, decodeJwtToken, checkSecretIsDefined };
|
|
35
|
+
export declare const expiresInToSeconds: (expiresIn: unknown) => number | undefined;
|
|
44
36
|
//# sourceMappingURL=token.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../../server/src/services/token.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../../server/src/services/token.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAIlE,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,QAAA,MAAM,eAAe;;;;;CAUpB,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,WAAW,QAAO,MAEvB,CAAC;AAEF,QAAA,MAAM,oBAAoB,YAOzB,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC;AAE9D;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,cAAe,OAAO,KAAG,MAAM,GAAG,SA0ChE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../server/src/services/user.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EACV,SAAS,EAET,wBAAwB,EACxB,kBAAkB,EAElB,sBAAsB,EAEvB,MAAM,kCAAkC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../server/src/services/user.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EACV,SAAS,EAET,wBAAwB,EACxB,kBAAkB,EAElB,sBAAsB,EAEvB,MAAM,kCAAkC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AAkZ1C,wBAmBE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../../server/src/strategies/admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../../server/src/strategies/admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAUnC,+CAA+C;AAC/C,eAAO,MAAM,YAAY,QAAe,OAAO;;;;;;;;EA0D9C,CAAC;AAEF,eAAO,MAAM,IAAI,UAAU,CAAC;AAE5B,uCAAuC;;;;;;;;;;;;;AACvC,wBAGE"}
|