@strapi/admin 5.46.1 → 5.47.1

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.
Files changed (152) hide show
  1. package/dist/admin/admin/src/StrapiApp.js +53 -11
  2. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  3. package/dist/admin/admin/src/StrapiApp.mjs +53 -11
  4. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +51 -8
  6. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  7. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +52 -9
  8. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/Layouts/utils/getMatchingDocLink.js +167 -0
  10. package/dist/admin/admin/src/components/Layouts/utils/getMatchingDocLink.js.map +1 -0
  11. package/dist/admin/admin/src/components/Layouts/utils/getMatchingDocLink.mjs +165 -0
  12. package/dist/admin/admin/src/components/Layouts/utils/getMatchingDocLink.mjs.map +1 -0
  13. package/dist/admin/admin/src/constants.js +8 -11
  14. package/dist/admin/admin/src/constants.js.map +1 -1
  15. package/dist/admin/admin/src/constants.mjs +8 -11
  16. package/dist/admin/admin/src/constants.mjs.map +1 -1
  17. package/dist/admin/admin/src/features/Auth.js +27 -1
  18. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  19. package/dist/admin/admin/src/features/Auth.mjs +28 -2
  20. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  21. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  22. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  23. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js +62 -0
  24. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +1 -0
  25. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs +40 -0
  26. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +1 -0
  27. package/dist/admin/admin/src/pages/Settings/constants.js +1 -2
  28. package/dist/admin/admin/src/pages/Settings/constants.js.map +1 -1
  29. package/dist/admin/admin/src/pages/Settings/constants.mjs +1 -2
  30. package/dist/admin/admin/src/pages/Settings/constants.mjs.map +1 -1
  31. package/dist/admin/admin/src/render.js +2 -1
  32. package/dist/admin/admin/src/render.js.map +1 -1
  33. package/dist/admin/admin/src/render.mjs +2 -1
  34. package/dist/admin/admin/src/render.mjs.map +1 -1
  35. package/dist/admin/admin/src/translations/{dk.json.js → da.json.js} +3 -3
  36. package/dist/admin/admin/src/translations/{dk.json.js.map → da.json.js.map} +1 -1
  37. package/dist/admin/admin/src/translations/{dk.json.mjs → da.json.mjs} +3 -3
  38. package/dist/admin/admin/src/translations/{dk.json.mjs.map → da.json.mjs.map} +1 -1
  39. package/dist/admin/admin/src/translations/en.json.js +1 -0
  40. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  41. package/dist/admin/admin/src/translations/en.json.mjs +1 -0
  42. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  43. package/dist/admin/admin/src/translations/languageNativeNames.js +1 -1
  44. package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
  45. package/dist/admin/admin/src/translations/languageNativeNames.mjs +1 -1
  46. package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
  47. package/dist/admin/admin/src/translations/normalizeAdminLocale.js +8 -0
  48. package/dist/admin/admin/src/translations/normalizeAdminLocale.js.map +1 -0
  49. package/dist/admin/admin/src/translations/normalizeAdminLocale.mjs +6 -0
  50. package/dist/admin/admin/src/translations/normalizeAdminLocale.mjs.map +1 -0
  51. package/dist/admin/admin/src/translations/sk.json.js +446 -42
  52. package/dist/admin/admin/src/translations/sk.json.js.map +1 -1
  53. package/dist/admin/admin/src/translations/sk.json.mjs +445 -43
  54. package/dist/admin/admin/src/translations/sk.json.mjs.map +1 -1
  55. package/dist/admin/admin/src/utils/baseQuery.js +5 -0
  56. package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
  57. package/dist/admin/admin/src/utils/baseQuery.mjs +6 -1
  58. package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
  59. package/dist/admin/admin/src/utils/getFetchClient.js +24 -0
  60. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  61. package/dist/admin/admin/src/utils/getFetchClient.mjs +23 -1
  62. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  63. package/dist/admin/admin/src/utils/jwt.js +37 -0
  64. package/dist/admin/admin/src/utils/jwt.js.map +1 -0
  65. package/dist/admin/admin/src/utils/jwt.mjs +35 -0
  66. package/dist/admin/admin/src/utils/jwt.mjs.map +1 -0
  67. package/dist/admin/index.js +2 -0
  68. package/dist/admin/index.js.map +1 -1
  69. package/dist/admin/index.mjs +1 -1
  70. package/dist/admin/src/StrapiApp.d.ts +2 -0
  71. package/dist/admin/src/components/Layouts/HeaderLayout.d.ts +2 -0
  72. package/dist/admin/src/components/Layouts/utils/getMatchingDocLink.d.ts +6 -0
  73. package/dist/admin/src/features/Tracking.d.ts +8 -1
  74. package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
  75. package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +33 -0
  76. package/dist/admin/src/services/admin.d.ts +6 -6
  77. package/dist/admin/src/services/contentApi.d.ts +1 -1
  78. package/dist/admin/src/services/users.d.ts +8 -8
  79. package/dist/admin/src/translations/languageNativeNames.d.ts +1 -1
  80. package/dist/admin/src/translations/normalizeAdminLocale.d.ts +4 -0
  81. package/dist/admin/src/utils/getFetchClient.d.ts +15 -1
  82. package/dist/admin/src/utils/jwt.d.ts +15 -0
  83. package/dist/server/server/src/bootstrap.js +3 -2
  84. package/dist/server/server/src/bootstrap.js.map +1 -1
  85. package/dist/server/server/src/bootstrap.mjs +4 -3
  86. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  87. package/dist/server/server/src/controllers/admin.js +8 -2
  88. package/dist/server/server/src/controllers/admin.js.map +1 -1
  89. package/dist/server/server/src/controllers/admin.mjs +8 -2
  90. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  91. package/dist/server/server/src/controllers/webhooks.js +1 -2
  92. package/dist/server/server/src/controllers/webhooks.js.map +1 -1
  93. package/dist/server/server/src/controllers/webhooks.mjs +1 -2
  94. package/dist/server/server/src/controllers/webhooks.mjs.map +1 -1
  95. package/dist/server/server/src/migrations/database/migrate-prefered-language-dk-to-da.js +28 -0
  96. package/dist/server/server/src/migrations/database/migrate-prefered-language-dk-to-da.js.map +1 -0
  97. package/dist/server/server/src/migrations/database/migrate-prefered-language-dk-to-da.mjs +26 -0
  98. package/dist/server/server/src/migrations/database/migrate-prefered-language-dk-to-da.mjs.map +1 -0
  99. package/dist/server/server/src/policies/index.js +0 -2
  100. package/dist/server/server/src/policies/index.js.map +1 -1
  101. package/dist/server/server/src/policies/index.mjs +0 -2
  102. package/dist/server/server/src/policies/index.mjs.map +1 -1
  103. package/dist/server/server/src/register.js +3 -1
  104. package/dist/server/server/src/register.js.map +1 -1
  105. package/dist/server/server/src/register.mjs +2 -0
  106. package/dist/server/server/src/register.mjs.map +1 -1
  107. package/dist/server/server/src/routes/admin-tokens.js +0 -7
  108. package/dist/server/server/src/routes/admin-tokens.js.map +1 -1
  109. package/dist/server/server/src/routes/admin-tokens.mjs +0 -7
  110. package/dist/server/server/src/routes/admin-tokens.mjs.map +1 -1
  111. package/dist/server/server/src/routes/serve-admin-panel.js +8 -1
  112. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  113. package/dist/server/server/src/routes/serve-admin-panel.mjs +6 -2
  114. package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
  115. package/dist/server/server/src/services/api-token.js +71 -1
  116. package/dist/server/server/src/services/api-token.js.map +1 -1
  117. package/dist/server/server/src/services/api-token.mjs +71 -2
  118. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  119. package/dist/server/server/src/services/token.js +11 -0
  120. package/dist/server/server/src/services/token.js.map +1 -1
  121. package/dist/server/server/src/services/token.mjs +11 -1
  122. package/dist/server/server/src/services/token.mjs.map +1 -1
  123. package/dist/server/server/src/strategies/admin-token.js +5 -63
  124. package/dist/server/server/src/strategies/admin-token.js.map +1 -1
  125. package/dist/server/server/src/strategies/admin-token.mjs +6 -64
  126. package/dist/server/server/src/strategies/admin-token.mjs.map +1 -1
  127. package/dist/server/src/bootstrap.d.ts.map +1 -1
  128. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  129. package/dist/server/src/controllers/webhooks.d.ts.map +1 -1
  130. package/dist/server/src/index.d.ts +0 -5
  131. package/dist/server/src/index.d.ts.map +1 -1
  132. package/dist/server/src/migrations/database/migrate-prefered-language-dk-to-da.d.ts +22 -0
  133. package/dist/server/src/migrations/database/migrate-prefered-language-dk-to-da.d.ts.map +1 -0
  134. package/dist/server/src/policies/index.d.ts +0 -5
  135. package/dist/server/src/policies/index.d.ts.map +1 -1
  136. package/dist/server/src/register.d.ts.map +1 -1
  137. package/dist/server/src/routes/admin-tokens.d.ts.map +1 -1
  138. package/dist/server/src/routes/serve-admin-panel.d.ts +2 -0
  139. package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
  140. package/dist/server/src/services/api-token.d.ts +15 -1
  141. package/dist/server/src/services/api-token.d.ts.map +1 -1
  142. package/dist/server/src/services/token.d.ts +7 -1
  143. package/dist/server/src/services/token.d.ts.map +1 -1
  144. package/dist/server/src/strategies/admin-token.d.ts +12 -22
  145. package/dist/server/src/strategies/admin-token.d.ts.map +1 -1
  146. package/package.json +10 -12
  147. package/dist/server/server/src/policies/isAdminTokensEnabled.js +0 -16
  148. package/dist/server/server/src/policies/isAdminTokensEnabled.js.map +0 -1
  149. package/dist/server/server/src/policies/isAdminTokensEnabled.mjs +0 -14
  150. package/dist/server/server/src/policies/isAdminTokensEnabled.mjs.map +0 -1
  151. package/dist/server/src/policies/isAdminTokensEnabled.d.ts +0 -7
  152. 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 apiToken = await apiTokenService.getByAccessKey(apiTokenService.hash(token));
27
- if (apiToken === null || apiToken === undefined) {
28
- return {
29
- authenticated: false
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
- const ability = await index.getService('permission').engine.generateTokenAbility(apiToken.adminPermissions ?? [], user);
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, updateLastUsedAt } 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 if (strapi.features.future.isEnabled('adminTokens') !== true) {\n return { authenticated: false };\n }\n\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 apiToken = await apiTokenService.getByAccessKey(apiTokenService.hash(token));\n\n if (apiToken === null || apiToken === undefined) {\n return { authenticated: false };\n }\n\n // Defensive kind check — only handle admin tokens\n if (apiToken.kind !== 'admin') {\n return { authenticated: false };\n }\n\n const expiryError = checkExpiry(apiToken);\n if (expiryError !== null) {\n return { authenticated: false, error: expiryError };\n }\n\n await updateLastUsedAt(apiToken);\n\n const owner = apiToken.adminUserOwner;\n const ownerId =\n // eslint-disable-next-line no-nested-ternary\n owner === null || owner === undefined ? null : typeof owner === 'object' ? owner.id : owner;\n\n if (ownerId === null) {\n return { authenticated: false, error: new UnauthorizedError('Token owner not found') };\n }\n\n // Token populate does not load `roles`; reload the user like session auth (`admin` strategy)\n // so `isSuperAdmin` and permission ceiling logic see the full admin user.\n const user = await strapi.db\n .query('admin::user')\n .findOne({ where: { id: ownerId }, populate: ['roles'] });\n\n if (user === null || user === undefined) {\n return { authenticated: false, error: new UnauthorizedError('Token owner not found') };\n }\n\n if (user.isActive !== true || user.blocked === true) {\n return { authenticated: false, error: new UnauthorizedError('Token owner is deactivated') };\n }\n\n const ability = await getService('permission').engine.generateTokenAbility(\n apiToken.adminPermissions ?? [],\n user\n );\n\n ctx.state.userAbility = ability;\n ctx.state.user = user;\n\n return { authenticated: true, credentials: apiToken, ability };\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","strapi","features","future","isEnabled","authenticated","apiTokenService","getService","token","extractToken","apiToken","getByAccessKey","hash","undefined","kind","expiryError","checkExpiry","error","updateLastUsedAt","owner","adminUserOwner","ownerId","id","user","db","query","findOne","where","populate","isActive","blocked","ability","engine","generateTokenAbility","adminPermissions","state","userAbility","credentials","verify","auth","name"],"mappings":"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"}
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, updateLastUsedAt } from './api-token-utils.mjs';
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 apiToken = await apiTokenService.getByAccessKey(apiTokenService.hash(token));
23
- if (apiToken === null || apiToken === undefined) {
24
- return {
25
- authenticated: false
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
- const ability = await getService('permission').engine.generateTokenAbility(apiToken.adminPermissions ?? [], user);
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, updateLastUsedAt } 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 if (strapi.features.future.isEnabled('adminTokens') !== true) {\n return { authenticated: false };\n }\n\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 apiToken = await apiTokenService.getByAccessKey(apiTokenService.hash(token));\n\n if (apiToken === null || apiToken === undefined) {\n return { authenticated: false };\n }\n\n // Defensive kind check — only handle admin tokens\n if (apiToken.kind !== 'admin') {\n return { authenticated: false };\n }\n\n const expiryError = checkExpiry(apiToken);\n if (expiryError !== null) {\n return { authenticated: false, error: expiryError };\n }\n\n await updateLastUsedAt(apiToken);\n\n const owner = apiToken.adminUserOwner;\n const ownerId =\n // eslint-disable-next-line no-nested-ternary\n owner === null || owner === undefined ? null : typeof owner === 'object' ? owner.id : owner;\n\n if (ownerId === null) {\n return { authenticated: false, error: new UnauthorizedError('Token owner not found') };\n }\n\n // Token populate does not load `roles`; reload the user like session auth (`admin` strategy)\n // so `isSuperAdmin` and permission ceiling logic see the full admin user.\n const user = await strapi.db\n .query('admin::user')\n .findOne({ where: { id: ownerId }, populate: ['roles'] });\n\n if (user === null || user === undefined) {\n return { authenticated: false, error: new UnauthorizedError('Token owner not found') };\n }\n\n if (user.isActive !== true || user.blocked === true) {\n return { authenticated: false, error: new UnauthorizedError('Token owner is deactivated') };\n }\n\n const ability = await getService('permission').engine.generateTokenAbility(\n apiToken.adminPermissions ?? [],\n user\n );\n\n ctx.state.userAbility = ability;\n ctx.state.user = user;\n\n return { authenticated: true, credentials: apiToken, ability };\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","strapi","features","future","isEnabled","authenticated","apiTokenService","getService","token","extractToken","apiToken","getByAccessKey","hash","undefined","kind","expiryError","checkExpiry","error","updateLastUsedAt","owner","adminUserOwner","ownerId","id","user","db","query","findOne","where","populate","isActive","blocked","ability","engine","generateTokenAbility","adminPermissions","state","userAbility","credentials","verify","auth","name"],"mappings":"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"}
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;qCAgIR;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;AAAzD,wBAiFE"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAgBnC,OAAO,KAAK,EAEV,kBAAkB,EAMnB,MAAM,iCAAiC,CAAC;AAIzC;;GAEG;;;;;;;;;;;;;;;;;;;;;+BA2CgC,OAAO;6BAmBT,OAAO;;;;;;;;;;;;;;;;;;;;;;iBA6DnB,OAAO;;;;2BAmCG,OAAO;;;;;;;AA7JtC,wBAuKE"}
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAenC,OAAO,KAAK,EAEV,kBAAkB,EAMnB,MAAM,iCAAiC,CAAC;AAezC;;GAEG;;;;;;;;;;;;;;;;;;;;;+BA2CgC,OAAO;6BAmBT,OAAO;;;;;;;;;;;;;;;;;;;;;;iBA6DnB,OAAO;;;;2BAmCG,OAAO;;;;;;;AA7JtC,wBAuKE"}
@@ -1 +1 @@
1
- {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/webhooks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;sBAmET,OAAO;oBAKT,OAAO;uBAWJ,OAAO;uBAYP,OAAO;uBA0BP,OAAO;wBAeN,OAAO;wBAmBP,OAAO;;AAzFnC,wBAoGE"}
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/webhooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;sBAmET,OAAO;oBAKT,OAAO;uBAWJ,OAAO;uBAYP,OAAO;uBA0BP,OAAO;wBAeN,OAAO;wBAmBP,OAAO;;AAzFnC,wBAoGE"}
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWR,CAAC;AAUF,eAAe,KAAK,CAAC"}
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"}
@@ -0,0 +1,22 @@
1
+ type MigrationTransaction = {
2
+ schema: {
3
+ hasTable(tableName: string): Promise<boolean>;
4
+ hasColumn(tableName: string, columnName: string): Promise<boolean>;
5
+ };
6
+ (tableName: string): {
7
+ where(columnName: string, value: string): {
8
+ update(values: Record<string, string>): Promise<unknown>;
9
+ };
10
+ };
11
+ };
12
+ type Migration = {
13
+ name: string;
14
+ up(trx: MigrationTransaction): Promise<void>;
15
+ down(): Promise<void>;
16
+ };
17
+ /**
18
+ * Migrates persisted admin UI language from the legacy Danish code `dk` to ISO 639-1 `da`.
19
+ */
20
+ export declare const migrateAdminPreferedLanguageDkToDa: Migration;
21
+ export {};
22
+ //# sourceMappingURL=migrate-prefered-language-dk-to-da.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-prefered-language-dk-to-da.d.ts","sourceRoot":"","sources":["../../../../../server/src/migrations/database/migrate-prefered-language-dk-to-da.ts"],"names":[],"mappings":"AAGA,KAAK,oBAAoB,GAAG;IAC1B,MAAM,EAAE;QACN,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9C,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KACpE,CAAC;IACF,CAAC,SAAS,EAAE,MAAM,GAAG;QACnB,KAAK,CACH,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ;YACD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;SAC1D,CAAC;KACH,CAAC;CACH,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kCAAkC,EAAE,SAsBhD,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":";;;;;;;;;;;;;;;;;;AAKA,wBAAkG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/policies/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAIA,wBAA4E"}
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../server/src/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;qCAOd;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;AAAnD,wBAeE"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../server/src/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;qCAQd;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;AAAnD,wBAiBE"}
@@ -1 +1 @@
1
- {"version":3,"file":"admin-tokens.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/admin-tokens.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,wBAqFE"}
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":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,QAAA,MAAM,uBAAuB,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,SA4CnE,CAAC;AAoBF,eAAe,uBAAuB,CAAC"}
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":"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"}
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,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC;AAE9D;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,cAAe,OAAO,KAAG,MAAM,GAAG,SA0ChE,CAAC"}
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: boolean;
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: boolean;
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
- error?: undefined;
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: boolean;
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: boolean;
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
- error?: undefined;
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;;;;;;;;;;;;;;;EA8D9C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,MAAM,SAAU,GAAG,KAAG,IAWlC,CAAC;;;;;;;;;;;;;;;;;;;;;AAEF,wBAIE"}
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.46.1",
3
+ "version": "5.47.1",
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.46.1",
95
- "@strapi/types": "5.46.1",
96
- "@strapi/typescript-utils": "5.46.1",
97
- "@strapi/utils": "5.46.1",
94
+ "@strapi/permissions": "5.47.1",
95
+ "@strapi/types": "5.47.1",
96
+ "@strapi/typescript-utils": "5.47.1",
97
+ "@strapi/utils": "5.47.1",
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.16.0",
101
+ "axios": "1.16.1",
102
102
  "bcryptjs": "2.4.3",
103
103
  "boxen": "5.1.2",
104
104
  "chalk": "^4.1.2",
@@ -128,8 +128,7 @@
128
128
  "p-map": "4.0.0",
129
129
  "passport-local": "1.0.0",
130
130
  "pluralize": "8.0.0",
131
- "punycode": "2.3.1",
132
- "qs": "6.15.0",
131
+ "qs": "6.15.2",
133
132
  "react-dnd": "16.0.1",
134
133
  "react-dnd-html5-backend": "16.0.1",
135
134
  "react-intl": "6.6.2",
@@ -139,7 +138,7 @@
139
138
  "react-select": "5.8.0",
140
139
  "react-window": "1.8.10",
141
140
  "rimraf": "6.1.3",
142
- "sanitize-html": "2.13.0",
141
+ "sanitize-html": "2.17.4",
143
142
  "scheduler": "0.23.0",
144
143
  "semver": "7.7.4",
145
144
  "sift": "16.0.1",
@@ -150,8 +149,8 @@
150
149
  "zod": "3.25.67"
151
150
  },
152
151
  "devDependencies": {
153
- "@strapi/admin-test-utils": "5.46.1",
154
- "@strapi/data-transfer": "5.46.1",
152
+ "@strapi/admin-test-utils": "5.47.1",
153
+ "@strapi/data-transfer": "5.47.1",
155
154
  "@types/codemirror5": "npm:@types/codemirror@^5.60.15",
156
155
  "@types/fs-extra": "11.0.4",
157
156
  "@types/invariant": "2.2.36",
@@ -165,7 +164,6 @@
165
164
  "@types/markdown-it-footnote": "3.0.3",
166
165
  "@types/passport-local": "1.0.36",
167
166
  "@types/pluralize": "0.0.32",
168
- "@types/punycode": "2.1.4",
169
167
  "@types/react-window": "1.8.8",
170
168
  "@types/sanitize-html": "2.13.0",
171
169
  "@vitejs/plugin-react-swc": "3.6.0",
@@ -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,7 +0,0 @@
1
- declare const _default: {
2
- name: string;
3
- validator: (config: unknown) => void;
4
- handler: (...args: any[]) => any;
5
- };
6
- export default _default;
7
- //# sourceMappingURL=isAdminTokensEnabled.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isAdminTokensEnabled.d.ts","sourceRoot":"","sources":["../../../../server/src/policies/isAdminTokensEnabled.ts"],"names":[],"mappings":";;;;;AAIA,wBAOG"}