@strapi/admin 5.46.0 → 5.47.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/StrapiApp.js +2 -1
- package/dist/admin/admin/src/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs +2 -1
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.js +2 -0
- package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.mjs +2 -0
- package/dist/admin/admin/src/components/FormInputs/Date.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/DateTime.js +2 -0
- package/dist/admin/admin/src/components/FormInputs/DateTime.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/DateTime.mjs +2 -0
- package/dist/admin/admin/src/components/FormInputs/DateTime.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +51 -8
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +52 -9
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/utils/getMatchingDocLink.js +167 -0
- package/dist/admin/admin/src/components/Layouts/utils/getMatchingDocLink.js.map +1 -0
- package/dist/admin/admin/src/components/Layouts/utils/getMatchingDocLink.mjs +165 -0
- package/dist/admin/admin/src/components/Layouts/utils/getMatchingDocLink.mjs.map +1 -0
- package/dist/admin/admin/src/constants.js +13 -11
- package/dist/admin/admin/src/constants.js.map +1 -1
- package/dist/admin/admin/src/constants.mjs +13 -11
- package/dist/admin/admin/src/constants.mjs.map +1 -1
- package/dist/admin/admin/src/features/Auth.js +25 -0
- package/dist/admin/admin/src/features/Auth.js.map +1 -1
- package/dist/admin/admin/src/features/Auth.mjs +26 -1
- package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.js +62 -0
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +1 -0
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs +40 -0
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/constants.js +1 -2
- package/dist/admin/admin/src/pages/Settings/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/constants.mjs +1 -2
- package/dist/admin/admin/src/pages/Settings/constants.mjs.map +1 -1
- package/dist/admin/admin/src/render.js +2 -1
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs +2 -1
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +1 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +1 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/sk.json.js +446 -42
- package/dist/admin/admin/src/translations/sk.json.js.map +1 -1
- package/dist/admin/admin/src/translations/sk.json.mjs +445 -43
- package/dist/admin/admin/src/translations/sk.json.mjs.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.js +5 -0
- package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs +6 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js +24 -0
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs +23 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/admin/src/utils/jwt.js +37 -0
- package/dist/admin/admin/src/utils/jwt.js.map +1 -0
- package/dist/admin/admin/src/utils/jwt.mjs +35 -0
- package/dist/admin/admin/src/utils/jwt.mjs.map +1 -0
- package/dist/admin/index.js +2 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/components/Layouts/HeaderLayout.d.ts +2 -0
- package/dist/admin/src/components/Layouts/utils/getMatchingDocLink.d.ts +6 -0
- package/dist/admin/src/components/SubNav.d.ts +12 -4
- package/dist/admin/src/constants.d.ts +6 -0
- package/dist/admin/src/features/Tracking.d.ts +8 -1
- package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
- package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +33 -0
- package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +4 -2
- package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +7 -3
- package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +4 -2
- package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +1 -1
- package/dist/admin/src/services/admin.d.ts +6 -6
- package/dist/admin/src/services/contentApi.d.ts +1 -1
- package/dist/admin/src/services/users.d.ts +8 -8
- package/dist/admin/src/utils/getFetchClient.d.ts +15 -1
- package/dist/admin/src/utils/jwt.d.ts +15 -0
- package/dist/server/server/src/bootstrap.js +3 -2
- package/dist/server/server/src/bootstrap.js.map +1 -1
- package/dist/server/server/src/bootstrap.mjs +4 -3
- package/dist/server/server/src/bootstrap.mjs.map +1 -1
- package/dist/server/server/src/policies/index.js +0 -2
- package/dist/server/server/src/policies/index.js.map +1 -1
- package/dist/server/server/src/policies/index.mjs +0 -2
- package/dist/server/server/src/policies/index.mjs.map +1 -1
- package/dist/server/server/src/register.js +1 -1
- package/dist/server/server/src/register.js.map +1 -1
- package/dist/server/server/src/routes/admin-tokens.js +0 -7
- package/dist/server/server/src/routes/admin-tokens.js.map +1 -1
- package/dist/server/server/src/routes/admin-tokens.mjs +0 -7
- package/dist/server/server/src/routes/admin-tokens.mjs.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.js +8 -1
- package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.mjs +6 -2
- package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js +71 -1
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs +71 -2
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/token.js +11 -0
- package/dist/server/server/src/services/token.js.map +1 -1
- package/dist/server/server/src/services/token.mjs +11 -1
- package/dist/server/server/src/services/token.mjs.map +1 -1
- package/dist/server/server/src/strategies/admin-token.js +5 -63
- package/dist/server/server/src/strategies/admin-token.js.map +1 -1
- package/dist/server/server/src/strategies/admin-token.mjs +6 -64
- package/dist/server/server/src/strategies/admin-token.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +0 -5
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/policies/index.d.ts +0 -5
- package/dist/server/src/policies/index.d.ts.map +1 -1
- package/dist/server/src/routes/admin-tokens.d.ts.map +1 -1
- package/dist/server/src/routes/serve-admin-panel.d.ts +2 -0
- package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
- package/dist/server/src/services/api-token.d.ts +15 -1
- package/dist/server/src/services/api-token.d.ts.map +1 -1
- package/dist/server/src/services/token.d.ts +7 -1
- package/dist/server/src/services/token.d.ts.map +1 -1
- package/dist/server/src/strategies/admin-token.d.ts +12 -22
- package/dist/server/src/strategies/admin-token.d.ts.map +1 -1
- package/package.json +10 -10
- package/dist/server/server/src/policies/isAdminTokensEnabled.js +0 -16
- package/dist/server/server/src/policies/isAdminTokensEnabled.js.map +0 -1
- package/dist/server/server/src/policies/isAdminTokensEnabled.mjs +0 -14
- package/dist/server/server/src/policies/isAdminTokensEnabled.mjs.map +0 -1
- package/dist/server/src/policies/isAdminTokensEnabled.d.ts +0 -7
- package/dist/server/src/policies/isAdminTokensEnabled.d.ts.map +0 -1
|
@@ -11,11 +11,6 @@ const { UnauthorizedError } = utils.errors;
|
|
|
11
11
|
/**
|
|
12
12
|
* Authenticate an admin token. Rejects tokens with kind !== 'admin'.
|
|
13
13
|
*/ const authenticate = async (ctx)=>{
|
|
14
|
-
if (strapi.features.future.isEnabled('adminTokens') !== true) {
|
|
15
|
-
return {
|
|
16
|
-
authenticated: false
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
14
|
const apiTokenService = index.getService('api-token-admin');
|
|
20
15
|
const token = apiTokenUtils.extractToken(ctx);
|
|
21
16
|
if (token === null) {
|
|
@@ -23,65 +18,12 @@ const { UnauthorizedError } = utils.errors;
|
|
|
23
18
|
authenticated: false
|
|
24
19
|
};
|
|
25
20
|
}
|
|
26
|
-
const
|
|
27
|
-
if (
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
// Defensive kind check — only handle admin tokens
|
|
33
|
-
if (apiToken.kind !== 'admin') {
|
|
34
|
-
return {
|
|
35
|
-
authenticated: false
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
const expiryError = apiTokenUtils.checkExpiry(apiToken);
|
|
39
|
-
if (expiryError !== null) {
|
|
40
|
-
return {
|
|
41
|
-
authenticated: false,
|
|
42
|
-
error: expiryError
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
await apiTokenUtils.updateLastUsedAt(apiToken);
|
|
46
|
-
const owner = apiToken.adminUserOwner;
|
|
47
|
-
const ownerId = // eslint-disable-next-line no-nested-ternary
|
|
48
|
-
owner === null || owner === undefined ? null : typeof owner === 'object' ? owner.id : owner;
|
|
49
|
-
if (ownerId === null) {
|
|
50
|
-
return {
|
|
51
|
-
authenticated: false,
|
|
52
|
-
error: new UnauthorizedError('Token owner not found')
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
// Token populate does not load `roles`; reload the user like session auth (`admin` strategy)
|
|
56
|
-
// so `isSuperAdmin` and permission ceiling logic see the full admin user.
|
|
57
|
-
const user = await strapi.db.query('admin::user').findOne({
|
|
58
|
-
where: {
|
|
59
|
-
id: ownerId
|
|
60
|
-
},
|
|
61
|
-
populate: [
|
|
62
|
-
'roles'
|
|
63
|
-
]
|
|
64
|
-
});
|
|
65
|
-
if (user === null || user === undefined) {
|
|
66
|
-
return {
|
|
67
|
-
authenticated: false,
|
|
68
|
-
error: new UnauthorizedError('Token owner not found')
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
if (user.isActive !== true || user.blocked === true) {
|
|
72
|
-
return {
|
|
73
|
-
authenticated: false,
|
|
74
|
-
error: new UnauthorizedError('Token owner is deactivated')
|
|
75
|
-
};
|
|
21
|
+
const authResult = await apiTokenService.authenticateAdminToken(token);
|
|
22
|
+
if (authResult.authenticated === true) {
|
|
23
|
+
ctx.state.userAbility = authResult.ability;
|
|
24
|
+
ctx.state.user = authResult.user;
|
|
76
25
|
}
|
|
77
|
-
|
|
78
|
-
ctx.state.userAbility = ability;
|
|
79
|
-
ctx.state.user = user;
|
|
80
|
-
return {
|
|
81
|
-
authenticated: true,
|
|
82
|
-
credentials: apiToken,
|
|
83
|
-
ability
|
|
84
|
-
};
|
|
26
|
+
return authResult;
|
|
85
27
|
};
|
|
86
28
|
/**
|
|
87
29
|
* Re-check presence and expiry at verify time.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-token.js","sources":["../../../../../server/src/strategies/admin-token.ts"],"sourcesContent":["import type { Context } from 'koa';\nimport { errors } from '@strapi/utils';\nimport { getService } from '../utils';\nimport { extractToken, checkExpiry
|
|
1
|
+
{"version":3,"file":"admin-token.js","sources":["../../../../../server/src/strategies/admin-token.ts"],"sourcesContent":["import type { Context } from 'koa';\nimport { errors } from '@strapi/utils';\nimport { getService } from '../utils';\nimport { extractToken, checkExpiry } from './api-token-utils';\nimport '@strapi/types';\n\nconst { UnauthorizedError } = errors;\n\n/**\n * Authenticate an admin token. Rejects tokens with kind !== 'admin'.\n */\nexport const authenticate = async (ctx: Context) => {\n const apiTokenService = getService('api-token-admin');\n const token = extractToken(ctx);\n\n if (token === null) {\n return { authenticated: false };\n }\n\n const authResult = await apiTokenService.authenticateAdminToken(token);\n\n if (authResult.authenticated === true) {\n ctx.state.userAbility = authResult.ability;\n ctx.state.user = authResult.user;\n }\n\n return authResult;\n};\n\n/**\n * Re-check presence and expiry at verify time.\n * Authorization is handled by isAuthenticatedAdmin + hasPermissions policies.\n *\n * @type {import('.').VerifyFunction}\n */\nexport const verify = (auth: any): void => {\n const { credentials: apiToken } = auth;\n\n if (apiToken === null || apiToken === undefined) {\n throw new UnauthorizedError('Token not found');\n }\n\n const expiryError = checkExpiry(apiToken);\n if (expiryError !== null) {\n throw expiryError;\n }\n};\n\nexport default {\n name: 'admin-token',\n authenticate,\n verify,\n};\n"],"names":["UnauthorizedError","errors","authenticate","ctx","apiTokenService","getService","token","extractToken","authenticated","authResult","authenticateAdminToken","state","userAbility","ability","user","verify","auth","credentials","apiToken","undefined","expiryError","checkExpiry","name"],"mappings":";;;;;;;;;AAMA,MAAM,EAAEA,iBAAiB,EAAE,GAAGC,YAAAA;AAE9B;;IAGO,MAAMC,YAAAA,GAAe,OAAOC,GAAAA,GAAAA;AACjC,IAAA,MAAMC,kBAAkBC,gBAAAA,CAAW,iBAAA,CAAA;AACnC,IAAA,MAAMC,QAAQC,0BAAAA,CAAaJ,GAAAA,CAAAA;AAE3B,IAAA,IAAIG,UAAU,IAAA,EAAM;QAClB,OAAO;YAAEE,aAAAA,EAAe;AAAM,SAAA;AAChC,IAAA;AAEA,IAAA,MAAMC,UAAAA,GAAa,MAAML,eAAAA,CAAgBM,sBAAsB,CAACJ,KAAAA,CAAAA;IAEhE,IAAIG,UAAAA,CAAWD,aAAa,KAAK,IAAA,EAAM;AACrCL,QAAAA,GAAAA,CAAIQ,KAAK,CAACC,WAAW,GAAGH,WAAWI,OAAO;AAC1CV,QAAAA,GAAAA,CAAIQ,KAAK,CAACG,IAAI,GAAGL,WAAWK,IAAI;AAClC,IAAA;IAEA,OAAOL,UAAAA;AACT;AAEA;;;;;IAMO,MAAMM,MAAAA,GAAS,CAACC,IAAAA,GAAAA;AACrB,IAAA,MAAM,EAAEC,WAAAA,EAAaC,QAAQ,EAAE,GAAGF,IAAAA;IAElC,IAAIE,QAAAA,KAAa,IAAA,IAAQA,QAAAA,KAAaC,SAAAA,EAAW;AAC/C,QAAA,MAAM,IAAInB,iBAAAA,CAAkB,iBAAA,CAAA;AAC9B,IAAA;AAEA,IAAA,MAAMoB,cAAcC,yBAAAA,CAAYH,QAAAA,CAAAA;AAChC,IAAA,IAAIE,gBAAgB,IAAA,EAAM;QACxB,MAAMA,WAAAA;AACR,IAAA;AACF;AAEA,6BAAe;IACbE,IAAAA,EAAM,aAAA;AACNpB,IAAAA,YAAAA;AACAa,IAAAA;AACF,CAAA;;;;;;"}
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
import { errors } from '@strapi/utils';
|
|
2
2
|
import { getService } from '../utils/index.mjs';
|
|
3
|
-
import { checkExpiry, extractToken
|
|
3
|
+
import { checkExpiry, extractToken } from './api-token-utils.mjs';
|
|
4
4
|
import '@strapi/types';
|
|
5
5
|
|
|
6
6
|
const { UnauthorizedError } = errors;
|
|
7
7
|
/**
|
|
8
8
|
* Authenticate an admin token. Rejects tokens with kind !== 'admin'.
|
|
9
9
|
*/ const authenticate = async (ctx)=>{
|
|
10
|
-
if (strapi.features.future.isEnabled('adminTokens') !== true) {
|
|
11
|
-
return {
|
|
12
|
-
authenticated: false
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
10
|
const apiTokenService = getService('api-token-admin');
|
|
16
11
|
const token = extractToken(ctx);
|
|
17
12
|
if (token === null) {
|
|
@@ -19,65 +14,12 @@ const { UnauthorizedError } = errors;
|
|
|
19
14
|
authenticated: false
|
|
20
15
|
};
|
|
21
16
|
}
|
|
22
|
-
const
|
|
23
|
-
if (
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
// Defensive kind check — only handle admin tokens
|
|
29
|
-
if (apiToken.kind !== 'admin') {
|
|
30
|
-
return {
|
|
31
|
-
authenticated: false
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
const expiryError = checkExpiry(apiToken);
|
|
35
|
-
if (expiryError !== null) {
|
|
36
|
-
return {
|
|
37
|
-
authenticated: false,
|
|
38
|
-
error: expiryError
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
await updateLastUsedAt(apiToken);
|
|
42
|
-
const owner = apiToken.adminUserOwner;
|
|
43
|
-
const ownerId = // eslint-disable-next-line no-nested-ternary
|
|
44
|
-
owner === null || owner === undefined ? null : typeof owner === 'object' ? owner.id : owner;
|
|
45
|
-
if (ownerId === null) {
|
|
46
|
-
return {
|
|
47
|
-
authenticated: false,
|
|
48
|
-
error: new UnauthorizedError('Token owner not found')
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
// Token populate does not load `roles`; reload the user like session auth (`admin` strategy)
|
|
52
|
-
// so `isSuperAdmin` and permission ceiling logic see the full admin user.
|
|
53
|
-
const user = await strapi.db.query('admin::user').findOne({
|
|
54
|
-
where: {
|
|
55
|
-
id: ownerId
|
|
56
|
-
},
|
|
57
|
-
populate: [
|
|
58
|
-
'roles'
|
|
59
|
-
]
|
|
60
|
-
});
|
|
61
|
-
if (user === null || user === undefined) {
|
|
62
|
-
return {
|
|
63
|
-
authenticated: false,
|
|
64
|
-
error: new UnauthorizedError('Token owner not found')
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
if (user.isActive !== true || user.blocked === true) {
|
|
68
|
-
return {
|
|
69
|
-
authenticated: false,
|
|
70
|
-
error: new UnauthorizedError('Token owner is deactivated')
|
|
71
|
-
};
|
|
17
|
+
const authResult = await apiTokenService.authenticateAdminToken(token);
|
|
18
|
+
if (authResult.authenticated === true) {
|
|
19
|
+
ctx.state.userAbility = authResult.ability;
|
|
20
|
+
ctx.state.user = authResult.user;
|
|
72
21
|
}
|
|
73
|
-
|
|
74
|
-
ctx.state.userAbility = ability;
|
|
75
|
-
ctx.state.user = user;
|
|
76
|
-
return {
|
|
77
|
-
authenticated: true,
|
|
78
|
-
credentials: apiToken,
|
|
79
|
-
ability
|
|
80
|
-
};
|
|
22
|
+
return authResult;
|
|
81
23
|
};
|
|
82
24
|
/**
|
|
83
25
|
* Re-check presence and expiry at verify time.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-token.mjs","sources":["../../../../../server/src/strategies/admin-token.ts"],"sourcesContent":["import type { Context } from 'koa';\nimport { errors } from '@strapi/utils';\nimport { getService } from '../utils';\nimport { extractToken, checkExpiry
|
|
1
|
+
{"version":3,"file":"admin-token.mjs","sources":["../../../../../server/src/strategies/admin-token.ts"],"sourcesContent":["import type { Context } from 'koa';\nimport { errors } from '@strapi/utils';\nimport { getService } from '../utils';\nimport { extractToken, checkExpiry } from './api-token-utils';\nimport '@strapi/types';\n\nconst { UnauthorizedError } = errors;\n\n/**\n * Authenticate an admin token. Rejects tokens with kind !== 'admin'.\n */\nexport const authenticate = async (ctx: Context) => {\n const apiTokenService = getService('api-token-admin');\n const token = extractToken(ctx);\n\n if (token === null) {\n return { authenticated: false };\n }\n\n const authResult = await apiTokenService.authenticateAdminToken(token);\n\n if (authResult.authenticated === true) {\n ctx.state.userAbility = authResult.ability;\n ctx.state.user = authResult.user;\n }\n\n return authResult;\n};\n\n/**\n * Re-check presence and expiry at verify time.\n * Authorization is handled by isAuthenticatedAdmin + hasPermissions policies.\n *\n * @type {import('.').VerifyFunction}\n */\nexport const verify = (auth: any): void => {\n const { credentials: apiToken } = auth;\n\n if (apiToken === null || apiToken === undefined) {\n throw new UnauthorizedError('Token not found');\n }\n\n const expiryError = checkExpiry(apiToken);\n if (expiryError !== null) {\n throw expiryError;\n }\n};\n\nexport default {\n name: 'admin-token',\n authenticate,\n verify,\n};\n"],"names":["UnauthorizedError","errors","authenticate","ctx","apiTokenService","getService","token","extractToken","authenticated","authResult","authenticateAdminToken","state","userAbility","ability","user","verify","auth","credentials","apiToken","undefined","expiryError","checkExpiry","name"],"mappings":";;;;;AAMA,MAAM,EAAEA,iBAAiB,EAAE,GAAGC,MAAAA;AAE9B;;IAGO,MAAMC,YAAAA,GAAe,OAAOC,GAAAA,GAAAA;AACjC,IAAA,MAAMC,kBAAkBC,UAAAA,CAAW,iBAAA,CAAA;AACnC,IAAA,MAAMC,QAAQC,YAAAA,CAAaJ,GAAAA,CAAAA;AAE3B,IAAA,IAAIG,UAAU,IAAA,EAAM;QAClB,OAAO;YAAEE,aAAAA,EAAe;AAAM,SAAA;AAChC,IAAA;AAEA,IAAA,MAAMC,UAAAA,GAAa,MAAML,eAAAA,CAAgBM,sBAAsB,CAACJ,KAAAA,CAAAA;IAEhE,IAAIG,UAAAA,CAAWD,aAAa,KAAK,IAAA,EAAM;AACrCL,QAAAA,GAAAA,CAAIQ,KAAK,CAACC,WAAW,GAAGH,WAAWI,OAAO;AAC1CV,QAAAA,GAAAA,CAAIQ,KAAK,CAACG,IAAI,GAAGL,WAAWK,IAAI;AAClC,IAAA;IAEA,OAAOL,UAAAA;AACT;AAEA;;;;;IAMO,MAAMM,MAAAA,GAAS,CAACC,IAAAA,GAAAA;AACrB,IAAA,MAAM,EAAEC,WAAAA,EAAaC,QAAQ,EAAE,GAAGF,IAAAA;IAElC,IAAIE,QAAAA,KAAa,IAAA,IAAQA,QAAAA,KAAaC,SAAAA,EAAW;AAC/C,QAAA,MAAM,IAAInB,iBAAAA,CAAkB,iBAAA,CAAA;AAC9B,IAAA;AAEA,IAAA,MAAMoB,cAAcC,WAAAA,CAAYH,QAAAA,CAAAA;AAChC,IAAA,IAAIE,gBAAgB,IAAA,EAAM;QACxB,MAAMA,WAAAA;AACR,IAAA;AACF;AAEA,6BAAe;IACbE,IAAAA,EAAM,aAAA;AACNpB,IAAAA,YAAAA;AACAa,IAAAA;AACF,CAAA;;;;"}
|
|
@@ -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;qCAoIR;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;AAAzD,wBAoFE"}
|
|
@@ -23,11 +23,6 @@ declare let admin: {
|
|
|
23
23
|
validator: (config: unknown) => void;
|
|
24
24
|
handler: (...args: any[]) => any;
|
|
25
25
|
};
|
|
26
|
-
isAdminTokensEnabled: {
|
|
27
|
-
name: string;
|
|
28
|
-
validator: (config: unknown) => void;
|
|
29
|
-
handler: (...args: any[]) => any;
|
|
30
|
-
};
|
|
31
26
|
isTelemetryEnabled: {
|
|
32
27
|
name: string;
|
|
33
28
|
validator: (config: unknown) => void;
|
|
@@ -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"}
|
|
@@ -5,11 +5,6 @@ declare const _default: {
|
|
|
5
5
|
validator: (config: unknown) => void;
|
|
6
6
|
handler: (...args: any[]) => any;
|
|
7
7
|
};
|
|
8
|
-
isAdminTokensEnabled: {
|
|
9
|
-
name: string;
|
|
10
|
-
validator: (config: unknown) => void;
|
|
11
|
-
handler: (...args: any[]) => any;
|
|
12
|
-
};
|
|
13
8
|
isTelemetryEnabled: {
|
|
14
9
|
name: string;
|
|
15
10
|
validator: (config: unknown) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/policies/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/policies/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAIA,wBAA4E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-tokens.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/admin-tokens.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"admin-tokens.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/admin-tokens.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,wBA8EE"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { Context, Next } from 'koa';
|
|
1
2
|
import type { Core } from '@strapi/types';
|
|
2
3
|
declare const registerAdminPanelRoute: ({ strapi }: {
|
|
3
4
|
strapi: Core.Strapi;
|
|
4
5
|
}) => void;
|
|
6
|
+
export declare const serveStatic: (filesDir: any, koaStaticOptions?: {}) => (ctx: Context, next: Next) => Promise<void>;
|
|
5
7
|
export default registerAdminPanelRoute;
|
|
6
8
|
//# sourceMappingURL=serve-admin-panel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve-admin-panel.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/serve-admin-panel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serve-admin-panel.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/serve-admin-panel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAIzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,QAAA,MAAM,uBAAuB,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,SA4CnE,CAAC;AAGF,eAAO,MAAM,WAAW,aAAc,GAAG,kCAGpB,OAAO,QAAQ,IAAI,kBAiBvC,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import type { Data } from '@strapi/types';
|
|
3
|
+
import { errors } from '@strapi/utils';
|
|
4
|
+
import type { Ability } from '@casl/ability';
|
|
3
5
|
import type { Update, ContentApiApiToken, ContentApiApiTokenBody } from '../../../shared/contracts/api-token';
|
|
4
6
|
import type { AdminApiToken, AdminTokenBody } from '../../../shared/contracts/admin-token';
|
|
5
7
|
import type { AdminUser, Permission } from '../../../shared/contracts/shared';
|
|
6
8
|
type AnyApiToken = ContentApiApiToken | AdminApiToken;
|
|
9
|
+
declare const UnauthorizedError: typeof errors.UnauthorizedError;
|
|
10
|
+
export type AdminTokenAuthenticationResult = {
|
|
11
|
+
authenticated: false;
|
|
12
|
+
error?: InstanceType<typeof UnauthorizedError>;
|
|
13
|
+
} | {
|
|
14
|
+
authenticated: true;
|
|
15
|
+
credentials: AdminApiToken;
|
|
16
|
+
user: AdminUser;
|
|
17
|
+
ability: Ability;
|
|
18
|
+
};
|
|
7
19
|
/** API/body shape: permission without ids/timestamps and without actionParameters (defaulted by domain when creating). */
|
|
8
20
|
type PermissionInput = Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>;
|
|
9
21
|
/**
|
|
@@ -87,6 +99,7 @@ declare const exists: (whereParams?: WhereParams) => Promise<boolean>;
|
|
|
87
99
|
* Return a secure sha512 hash of an accessKey
|
|
88
100
|
*/
|
|
89
101
|
declare const hash: (accessKey: string) => string;
|
|
102
|
+
declare const authenticateAdminToken: (accessToken: string) => Promise<AdminTokenAuthenticationResult>;
|
|
90
103
|
/**
|
|
91
104
|
* Create a token and its permissions
|
|
92
105
|
*/
|
|
@@ -153,6 +166,7 @@ export interface ContentApiTokenService extends SharedTokenMethods {
|
|
|
153
166
|
count(where?: object): Promise<number>;
|
|
154
167
|
}
|
|
155
168
|
export interface AdminTokenService extends SharedTokenMethods {
|
|
169
|
+
authenticateAdminToken(accessToken: string): Promise<AdminTokenAuthenticationResult>;
|
|
156
170
|
create(attributes: AdminTokenBody, callingUser: AdminUser): Promise<AdminApiToken>;
|
|
157
171
|
list(callingUser: AdminUser): Promise<AdminApiToken[]>;
|
|
158
172
|
getById(id: string | number, options?: GetByOptions): Promise<AdminApiToken | null>;
|
|
@@ -170,5 +184,5 @@ export interface AdminTokenService extends SharedTokenMethods {
|
|
|
170
184
|
declare function createTokenService(kind: 'content-api'): ContentApiTokenService;
|
|
171
185
|
declare function createTokenService(kind: 'admin'): AdminTokenService;
|
|
172
186
|
export type { GetByOptions };
|
|
173
|
-
export { createTokenService, create, count, regenerate, exists, checkSaltIsDefined, hash, list, revoke, getById, update, getByName, getBy, assignAdminPermissionsToToken, enforceAdminPermissionsCeiling, reconcileTokenPermissionsToUserCeiling, syncApiTokenPermissionsForUser, syncApiTokenPermissionsForRole, deleteAdminTokensForUser, };
|
|
187
|
+
export { createTokenService, create, count, regenerate, exists, checkSaltIsDefined, hash, list, revoke, getById, update, getByName, getBy, authenticateAdminToken, assignAdminPermissionsToToken, enforceAdminPermissionsCeiling, reconcileTokenPermissionsToUserCeiling, syncApiTokenPermissionsForUser, syncApiTokenPermissionsForRole, deleteAdminTokensForUser, };
|
|
174
188
|
//# sourceMappingURL=api-token.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-token.d.ts","sourceRoot":"","sources":["../../../../server/src/services/api-token.ts"],"names":[],"mappings":";AAeA,OAAO,KAAK,EAAQ,IAAI,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"api-token.d.ts","sourceRoot":"","sources":["../../../../server/src/services/api-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,12 +7,18 @@ declare const getTokenOptions: () => {
|
|
|
7
7
|
expiresIn?: string | number | undefined;
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* True when the project set `admin.auth.options.expiresIn`.
|
|
12
|
+
* Do not use merged options from {@link getTokenOptions}: defaults always inject `expiresIn: '30d'`,
|
|
13
|
+
* which would make every install look like a legacy config (see GitHub #25989).
|
|
14
|
+
*/
|
|
15
|
+
declare const hasUserConfiguredAuthOptionsExpiresIn: (adminAuthOptions: unknown) => boolean;
|
|
10
16
|
/**
|
|
11
17
|
* Create a random token
|
|
12
18
|
*/
|
|
13
19
|
declare const createToken: () => string;
|
|
14
20
|
declare const checkSecretIsDefined: () => void;
|
|
15
|
-
export { createToken, getTokenOptions, checkSecretIsDefined };
|
|
21
|
+
export { createToken, getTokenOptions, checkSecretIsDefined, hasUserConfiguredAuthOptionsExpiresIn, };
|
|
16
22
|
/**
|
|
17
23
|
* Convert an expiresIn value (string or number) into seconds.
|
|
18
24
|
* Supported formats:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../../server/src/services/token.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,eAAe;;;;;;;;CAgBpB,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,WAAW,QAAO,MAEvB,CAAC;AAEF,QAAA,MAAM,oBAAoB,YAOzB,CAAC;AAEF,OAAO,
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../../server/src/services/token.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,eAAe;;;;;;;;CAgBpB,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,qCAAqC,qBAAsB,OAAO,KAAG,OAK1E,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,WAAW,QAAO,MAEvB,CAAC;AAEF,QAAA,MAAM,oBAAoB,YAOzB,CAAC;AAEF,OAAO,EACL,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,qCAAqC,GACtC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,cAAe,OAAO,KAAG,MAAM,GAAG,SA0ChE,CAAC"}
|
|
@@ -5,20 +5,15 @@ import '@strapi/types';
|
|
|
5
5
|
* Authenticate an admin token. Rejects tokens with kind !== 'admin'.
|
|
6
6
|
*/
|
|
7
7
|
export declare const authenticate: (ctx: Context) => Promise<{
|
|
8
|
-
authenticated:
|
|
9
|
-
error?: undefined;
|
|
10
|
-
credentials?: undefined;
|
|
11
|
-
ability?: undefined;
|
|
12
|
-
} | {
|
|
13
|
-
authenticated: boolean;
|
|
14
|
-
error: errors.UnauthorizedError<string, unknown>;
|
|
15
|
-
credentials?: undefined;
|
|
16
|
-
ability?: undefined;
|
|
8
|
+
authenticated: false;
|
|
9
|
+
error?: errors.UnauthorizedError<string, unknown> | undefined;
|
|
17
10
|
} | {
|
|
18
|
-
authenticated:
|
|
11
|
+
authenticated: true;
|
|
19
12
|
credentials: import("../../../shared/contracts/admin-token").AdminApiToken;
|
|
13
|
+
user: import("../../../shared/contracts/shared").AdminUser;
|
|
20
14
|
ability: import("@casl/ability").Ability<import("@casl/ability").AbilityTuple, any>;
|
|
21
|
-
|
|
15
|
+
} | {
|
|
16
|
+
authenticated: boolean;
|
|
22
17
|
}>;
|
|
23
18
|
/**
|
|
24
19
|
* Re-check presence and expiry at verify time.
|
|
@@ -30,20 +25,15 @@ export declare const verify: (auth: any) => void;
|
|
|
30
25
|
declare const _default: {
|
|
31
26
|
name: string;
|
|
32
27
|
authenticate: (ctx: Context) => Promise<{
|
|
33
|
-
authenticated:
|
|
34
|
-
error?: undefined;
|
|
35
|
-
credentials?: undefined;
|
|
36
|
-
ability?: undefined;
|
|
37
|
-
} | {
|
|
38
|
-
authenticated: boolean;
|
|
39
|
-
error: errors.UnauthorizedError<string, unknown>;
|
|
40
|
-
credentials?: undefined;
|
|
41
|
-
ability?: undefined;
|
|
28
|
+
authenticated: false;
|
|
29
|
+
error?: errors.UnauthorizedError<string, unknown> | undefined;
|
|
42
30
|
} | {
|
|
43
|
-
authenticated:
|
|
31
|
+
authenticated: true;
|
|
44
32
|
credentials: import("../../../shared/contracts/admin-token").AdminApiToken;
|
|
33
|
+
user: import("../../../shared/contracts/shared").AdminUser;
|
|
45
34
|
ability: import("@casl/ability").Ability<import("@casl/ability").AbilityTuple, any>;
|
|
46
|
-
|
|
35
|
+
} | {
|
|
36
|
+
authenticated: boolean;
|
|
47
37
|
}>;
|
|
48
38
|
verify: (auth: any) => void;
|
|
49
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-token.d.ts","sourceRoot":"","sources":["../../../../server/src/strategies/admin-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,OAAO,eAAe,CAAC;AAIvB;;GAEG;AACH,eAAO,MAAM,YAAY,QAAe,OAAO
|
|
1
|
+
{"version":3,"file":"admin-token.d.ts","sourceRoot":"","sources":["../../../../server/src/strategies/admin-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,OAAO,eAAe,CAAC;AAIvB;;GAEG;AACH,eAAO,MAAM,YAAY,QAAe,OAAO;;;;;;;;;;EAgB9C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,MAAM,SAAU,GAAG,KAAG,IAWlC,CAAC;;;;;;;;;;;;;;;;AAEF,wBAIE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/admin",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.47.0",
|
|
4
4
|
"description": "Strapi Admin",
|
|
5
5
|
"homepage": "https://strapi.io",
|
|
6
6
|
"bugs": {
|
|
@@ -91,14 +91,14 @@
|
|
|
91
91
|
"@reduxjs/toolkit": "1.9.7",
|
|
92
92
|
"@strapi/design-system": "2.2.0",
|
|
93
93
|
"@strapi/icons": "2.2.0",
|
|
94
|
-
"@strapi/permissions": "5.
|
|
95
|
-
"@strapi/types": "5.
|
|
96
|
-
"@strapi/typescript-utils": "5.
|
|
97
|
-
"@strapi/utils": "5.
|
|
94
|
+
"@strapi/permissions": "5.47.0",
|
|
95
|
+
"@strapi/types": "5.47.0",
|
|
96
|
+
"@strapi/typescript-utils": "5.47.0",
|
|
97
|
+
"@strapi/utils": "5.47.0",
|
|
98
98
|
"@testing-library/dom": "10.4.1",
|
|
99
99
|
"@testing-library/react": "16.3.0",
|
|
100
100
|
"@testing-library/user-event": "14.6.1",
|
|
101
|
-
"axios": "1.
|
|
101
|
+
"axios": "1.16.0",
|
|
102
102
|
"bcryptjs": "2.4.3",
|
|
103
103
|
"boxen": "5.1.2",
|
|
104
104
|
"chalk": "^4.1.2",
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
"react-select": "5.8.0",
|
|
140
140
|
"react-window": "1.8.10",
|
|
141
141
|
"rimraf": "6.1.3",
|
|
142
|
-
"sanitize-html": "2.
|
|
142
|
+
"sanitize-html": "2.17.4",
|
|
143
143
|
"scheduler": "0.23.0",
|
|
144
144
|
"semver": "7.7.4",
|
|
145
145
|
"sift": "16.0.1",
|
|
@@ -150,8 +150,8 @@
|
|
|
150
150
|
"zod": "3.25.67"
|
|
151
151
|
},
|
|
152
152
|
"devDependencies": {
|
|
153
|
-
"@strapi/admin-test-utils": "5.
|
|
154
|
-
"@strapi/data-transfer": "5.
|
|
153
|
+
"@strapi/admin-test-utils": "5.47.0",
|
|
154
|
+
"@strapi/data-transfer": "5.47.0",
|
|
155
155
|
"@types/codemirror5": "npm:@types/codemirror@^5.60.15",
|
|
156
156
|
"@types/fs-extra": "11.0.4",
|
|
157
157
|
"@types/invariant": "2.2.36",
|
|
@@ -174,7 +174,7 @@
|
|
|
174
174
|
"react": "18.3.1",
|
|
175
175
|
"react-dom": "18.3.1",
|
|
176
176
|
"react-router-dom": "6.30.3",
|
|
177
|
-
"styled-components": "6.1
|
|
177
|
+
"styled-components": "6.4.1",
|
|
178
178
|
"vite": "5.4.21",
|
|
179
179
|
"vite-plugin-dts": "^4.3.0"
|
|
180
180
|
},
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var utils = require('@strapi/utils');
|
|
4
|
-
|
|
5
|
-
const { createPolicy } = utils.policy;
|
|
6
|
-
var isAdminTokensEnabled = createPolicy({
|
|
7
|
-
name: 'admin::isAdminTokensEnabled',
|
|
8
|
-
handler (ctx, _config, { strapi }) {
|
|
9
|
-
if (strapi.features.future.isEnabled('adminTokens') !== true) {
|
|
10
|
-
throw new utils.errors.NotFoundError();
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
module.exports = isAdminTokensEnabled;
|
|
16
|
-
//# sourceMappingURL=isAdminTokensEnabled.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isAdminTokensEnabled.js","sources":["../../../../../server/src/policies/isAdminTokensEnabled.ts"],"sourcesContent":["import { policy, errors } from '@strapi/utils';\n\nconst { createPolicy } = policy;\n\nexport default createPolicy({\n name: 'admin::isAdminTokensEnabled',\n handler(ctx, _config, { strapi }) {\n if (strapi.features.future.isEnabled('adminTokens') !== true) {\n throw new errors.NotFoundError();\n }\n },\n});\n"],"names":["createPolicy","policy","name","handler","ctx","_config","strapi","features","future","isEnabled","errors","NotFoundError"],"mappings":";;;;AAEA,MAAM,EAAEA,YAAY,EAAE,GAAGC,YAAAA;AAEzB,2BAAeD,YAAAA,CAAa;IAC1BE,IAAAA,EAAM,6BAAA;AACNC,IAAAA,OAAAA,CAAAA,CAAQC,GAAG,EAAEC,OAAO,EAAE,EAAEC,MAAM,EAAE,EAAA;QAC9B,IAAIA,MAAAA,CAAOC,QAAQ,CAACC,MAAM,CAACC,SAAS,CAAC,mBAAmB,IAAA,EAAM;YAC5D,MAAM,IAAIC,aAAOC,aAAa,EAAA;AAChC,QAAA;AACF,IAAA;AACF,CAAA,CAAA;;;;"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { policy, errors } from '@strapi/utils';
|
|
2
|
-
|
|
3
|
-
const { createPolicy } = policy;
|
|
4
|
-
var isAdminTokensEnabled = createPolicy({
|
|
5
|
-
name: 'admin::isAdminTokensEnabled',
|
|
6
|
-
handler (ctx, _config, { strapi }) {
|
|
7
|
-
if (strapi.features.future.isEnabled('adminTokens') !== true) {
|
|
8
|
-
throw new errors.NotFoundError();
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
export { isAdminTokensEnabled as default };
|
|
14
|
-
//# sourceMappingURL=isAdminTokensEnabled.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isAdminTokensEnabled.mjs","sources":["../../../../../server/src/policies/isAdminTokensEnabled.ts"],"sourcesContent":["import { policy, errors } from '@strapi/utils';\n\nconst { createPolicy } = policy;\n\nexport default createPolicy({\n name: 'admin::isAdminTokensEnabled',\n handler(ctx, _config, { strapi }) {\n if (strapi.features.future.isEnabled('adminTokens') !== true) {\n throw new errors.NotFoundError();\n }\n },\n});\n"],"names":["createPolicy","policy","name","handler","ctx","_config","strapi","features","future","isEnabled","errors","NotFoundError"],"mappings":";;AAEA,MAAM,EAAEA,YAAY,EAAE,GAAGC,MAAAA;AAEzB,2BAAeD,YAAAA,CAAa;IAC1BE,IAAAA,EAAM,6BAAA;AACNC,IAAAA,OAAAA,CAAAA,CAAQC,GAAG,EAAEC,OAAO,EAAE,EAAEC,MAAM,EAAE,EAAA;QAC9B,IAAIA,MAAAA,CAAOC,QAAQ,CAACC,MAAM,CAACC,SAAS,CAAC,mBAAmB,IAAA,EAAM;YAC5D,MAAM,IAAIC,OAAOC,aAAa,EAAA;AAChC,QAAA;AACF,IAAA;AACF,CAAA,CAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isAdminTokensEnabled.d.ts","sourceRoot":"","sources":["../../../../server/src/policies/isAdminTokensEnabled.ts"],"names":[],"mappings":";;;;;AAIA,wBAOG"}
|