@strapi/admin 5.53.0 → 5.55.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/App.js +1 -1
- package/dist/admin/admin/src/App.js.map +1 -1
- package/dist/admin/admin/src/App.mjs +1 -1
- package/dist/admin/admin/src/App.mjs.map +1 -1
- package/dist/admin/admin/src/components/DismissibleBanner.js +60 -0
- package/dist/admin/admin/src/components/DismissibleBanner.js.map +1 -0
- package/dist/admin/admin/src/components/DismissibleBanner.mjs +58 -0
- package/dist/admin/admin/src/components/DismissibleBanner.mjs.map +1 -0
- package/dist/admin/admin/src/components/Form.js +11 -2
- package/dist/admin/admin/src/components/Form.js.map +1 -1
- package/dist/admin/admin/src/components/Form.mjs +11 -2
- package/dist/admin/admin/src/components/Form.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/DateTime.js +1 -1
- package/dist/admin/admin/src/components/FormInputs/DateTime.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/DateTime.mjs +1 -1
- package/dist/admin/admin/src/components/FormInputs/DateTime.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.js +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.mjs +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.mjs.map +1 -1
- package/dist/admin/admin/src/components/LanguageProvider.js +35 -1
- package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
- package/dist/admin/admin/src/components/LanguageProvider.mjs +17 -2
- package/dist/admin/admin/src/components/LanguageProvider.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.js +1 -2
- package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs +1 -2
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
- package/dist/admin/admin/src/components/MediaLibraryBanner.js +85 -0
- package/dist/admin/admin/src/components/MediaLibraryBanner.js.map +1 -0
- package/dist/admin/admin/src/components/MediaLibraryBanner.mjs +83 -0
- package/dist/admin/admin/src/components/MediaLibraryBanner.mjs.map +1 -0
- package/dist/admin/admin/src/components/Providers.js +6 -6
- package/dist/admin/admin/src/components/Providers.js.map +1 -1
- package/dist/admin/admin/src/components/Providers.mjs +6 -6
- package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +113 -35
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +115 -37
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNavFolder.js +188 -0
- package/dist/admin/admin/src/components/SubNavFolder.js.map +1 -0
- package/dist/admin/admin/src/components/SubNavFolder.mjs +186 -0
- package/dist/admin/admin/src/components/SubNavFolder.mjs.map +1 -0
- package/dist/admin/admin/src/components/UpsellBanner.js +56 -86
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.mjs +58 -88
- package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
- package/dist/admin/admin/src/core/store/configure.js +14 -2
- package/dist/admin/admin/src/core/store/configure.js.map +1 -1
- package/dist/admin/admin/src/core/store/configure.mjs +14 -2
- package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
- package/dist/admin/admin/src/core/store/hooks.mjs +1 -1
- package/dist/admin/admin/src/features/Auth.js +162 -46
- package/dist/admin/admin/src/features/Auth.js.map +1 -1
- package/dist/admin/admin/src/features/Auth.mjs +164 -48
- 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/useRegisterUnsavedChanges.js +19 -0
- package/dist/admin/admin/src/hooks/useRegisterUnsavedChanges.js.map +1 -0
- package/dist/admin/admin/src/hooks/useRegisterUnsavedChanges.mjs +17 -0
- package/dist/admin/admin/src/hooks/useRegisterUnsavedChanges.mjs.map +1 -0
- package/dist/admin/admin/src/hooks/{useIdleSessionLogout.js → useSessionKeepalive.js} +34 -27
- package/dist/admin/admin/src/hooks/useSessionKeepalive.js.map +1 -0
- package/dist/admin/admin/src/hooks/{useIdleSessionLogout.mjs → useSessionKeepalive.mjs} +34 -27
- package/dist/admin/admin/src/hooks/useSessionKeepalive.mjs.map +1 -0
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +2 -0
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +2 -0
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/SessionsPage.js +2 -5
- package/dist/admin/admin/src/pages/SessionsPage.js.map +1 -1
- package/dist/admin/admin/src/pages/SessionsPage.mjs +2 -5
- package/dist/admin/admin/src/pages/SessionsPage.mjs.map +1 -1
- package/dist/admin/admin/src/render.js +6 -1
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs +6 -1
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +16 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +16 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.js +3 -13
- package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs +3 -13
- package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js +34 -5
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs +34 -6
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/admin/src/utils/unsavedChangesRegistry.js +25 -0
- package/dist/admin/admin/src/utils/unsavedChangesRegistry.js.map +1 -0
- package/dist/admin/admin/src/utils/unsavedChangesRegistry.mjs +22 -0
- package/dist/admin/admin/src/utils/unsavedChangesRegistry.mjs.map +1 -0
- package/dist/admin/admin/tests/utils.js +14 -14
- package/dist/admin/admin/tests/utils.js.map +1 -1
- package/dist/admin/admin/tests/utils.mjs +14 -14
- package/dist/admin/admin/tests/utils.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.js +1 -6
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs +1 -6
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +7 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +7 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +9 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +9 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +0 -4
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +0 -4
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
- package/dist/admin/index.js +1 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/components/DismissibleBanner.d.ts +8 -0
- package/dist/admin/src/components/MediaLibraryBanner.d.ts +2 -0
- package/dist/admin/src/components/SubNav.d.ts +27 -8
- package/dist/admin/src/components/SubNavFolder.d.ts +15 -0
- package/dist/admin/src/features/Tracking.d.ts +2 -1
- package/dist/admin/src/hooks/useRegisterUnsavedChanges.d.ts +6 -0
- package/dist/admin/src/hooks/useSessionKeepalive.d.ts +88 -0
- package/dist/admin/src/services/admin.d.ts +1 -0
- package/dist/admin/src/utils/getFetchClient.d.ts +14 -6
- package/dist/admin/src/utils/unsavedChangesRegistry.d.ts +11 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +8 -0
- package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.js +1 -5
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs +1 -5
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/ee/server/src/index.js +2 -0
- package/dist/server/ee/server/src/index.js.map +1 -1
- package/dist/server/ee/server/src/index.mjs +2 -0
- package/dist/server/ee/server/src/index.mjs.map +1 -1
- package/dist/server/server/src/ai/controllers/ai.js +3 -3
- package/dist/server/server/src/ai/controllers/ai.js.map +1 -1
- package/dist/server/server/src/ai/controllers/ai.mjs +3 -3
- package/dist/server/server/src/ai/controllers/ai.mjs.map +1 -1
- package/dist/server/server/src/ai/services/ai.js +37 -12
- package/dist/server/server/src/ai/services/ai.js.map +1 -1
- package/dist/server/server/src/ai/services/ai.mjs +37 -12
- package/dist/server/server/src/ai/services/ai.mjs.map +1 -1
- package/dist/server/server/src/audit-logs/tokens.js +106 -0
- package/dist/server/server/src/audit-logs/tokens.js.map +1 -0
- package/dist/server/server/src/audit-logs/tokens.mjs +99 -0
- package/dist/server/server/src/audit-logs/tokens.mjs.map +1 -0
- package/dist/server/server/src/controllers/admin.js +10 -1
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs +10 -1
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js +106 -4
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs +107 -5
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/transfer/token.js +56 -4
- package/dist/server/server/src/services/transfer/token.js.map +1 -1
- package/dist/server/server/src/services/transfer/token.mjs +57 -5
- package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
- package/dist/server/src/ai/services/ai.d.ts +3 -1
- package/dist/server/src/ai/services/ai.d.ts.map +1 -1
- package/dist/server/src/audit-logs/tokens.d.ts +86 -0
- package/dist/server/src/audit-logs/tokens.d.ts.map +1 -0
- package/dist/server/src/controllers/admin.d.ts +1 -0
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +1 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/services/api-token.d.ts.map +1 -1
- package/dist/server/src/services/transfer/token.d.ts.map +1 -1
- package/dist/shared/contracts/admin.d.ts +1 -0
- package/dist/shared/contracts/admin.d.ts.map +1 -1
- package/dist/shared/contracts/shared.d.ts +1 -0
- package/dist/shared/contracts/shared.d.ts.map +1 -1
- package/package.json +7 -7
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +0 -1
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +0 -1
- package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +0 -87
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import crypto from 'crypto';
|
|
2
2
|
import { pick, uniq, differenceWith, prop, omit, map, difference, isEqual, isArray, isEmpty, isNumber, isNil } from 'lodash/fp';
|
|
3
|
-
import { errors } from '@strapi/utils';
|
|
3
|
+
import { errors, emitAudit } from '@strapi/utils';
|
|
4
4
|
import constants from './constants.mjs';
|
|
5
5
|
import { getService } from '../utils/index.mjs';
|
|
6
6
|
import permissionDomain from '../domain/permission/index.mjs';
|
|
7
7
|
import { validatePermissionsExist } from '../validation/permission.mjs';
|
|
8
8
|
import { checkExpiry, updateLastUsedAt } from '../strategies/api-token-utils.mjs';
|
|
9
|
+
import { AUDITED_EVENTS, toAdminPermissionRefs, toActionRefs, getTokenChanges } from '../audit-logs/tokens.mjs';
|
|
9
10
|
|
|
10
11
|
const { SUPER_ADMIN_CODE } = constants;
|
|
11
12
|
const { ValidationError, NotFoundError, UnauthorizedError } = errors;
|
|
@@ -628,6 +629,20 @@ const getExpirationFields = (lifespan)=>{
|
|
|
628
629
|
});
|
|
629
630
|
}
|
|
630
631
|
}
|
|
632
|
+
await emitAudit({
|
|
633
|
+
strapi
|
|
634
|
+
}, AUDITED_EVENTS.TOKEN_CREATE, {
|
|
635
|
+
tokenId: apiToken.id,
|
|
636
|
+
name: apiToken.name,
|
|
637
|
+
kind: 'content-api',
|
|
638
|
+
description: apiToken.description ?? null,
|
|
639
|
+
lifespan: apiToken.lifespan,
|
|
640
|
+
expiresAt: apiToken.expiresAt,
|
|
641
|
+
type: apiToken.type,
|
|
642
|
+
...apiToken.type === constants.API_TOKEN_TYPE.CUSTOM && {
|
|
643
|
+
permissions: result.permissions ?? []
|
|
644
|
+
}
|
|
645
|
+
});
|
|
631
646
|
// Casted to any to avoid complex type duplication
|
|
632
647
|
return omit([
|
|
633
648
|
'adminPermissions',
|
|
@@ -680,6 +695,18 @@ const getExpirationFields = (lifespan)=>{
|
|
|
680
695
|
});
|
|
681
696
|
}
|
|
682
697
|
}
|
|
698
|
+
await emitAudit({
|
|
699
|
+
strapi
|
|
700
|
+
}, AUDITED_EVENTS.TOKEN_CREATE, {
|
|
701
|
+
tokenId: apiToken.id,
|
|
702
|
+
name: apiToken.name,
|
|
703
|
+
kind: 'admin',
|
|
704
|
+
adminUserOwner: ownerId,
|
|
705
|
+
description: apiToken.description ?? null,
|
|
706
|
+
lifespan: apiToken.lifespan,
|
|
707
|
+
expiresAt: apiToken.expiresAt,
|
|
708
|
+
permissions: toAdminPermissionRefs(result.adminPermissions)
|
|
709
|
+
});
|
|
683
710
|
// Casted to any to avoid complex type duplication
|
|
684
711
|
return {
|
|
685
712
|
...omit([
|
|
@@ -695,9 +722,18 @@ const regenerate = async (id)=>{
|
|
|
695
722
|
const apiToken = await strapi.db.query('admin::api-token').update({
|
|
696
723
|
select: [
|
|
697
724
|
'id',
|
|
725
|
+
'name',
|
|
698
726
|
'accessKey',
|
|
699
727
|
'kind'
|
|
700
728
|
],
|
|
729
|
+
// The owner id only, for the audit row; it is stripped from the response below
|
|
730
|
+
populate: {
|
|
731
|
+
adminUserOwner: {
|
|
732
|
+
select: [
|
|
733
|
+
'id'
|
|
734
|
+
]
|
|
735
|
+
}
|
|
736
|
+
},
|
|
701
737
|
where: {
|
|
702
738
|
id
|
|
703
739
|
},
|
|
@@ -709,8 +745,21 @@ const regenerate = async (id)=>{
|
|
|
709
745
|
if (!apiToken) {
|
|
710
746
|
throw new NotFoundError('The provided token id does not exist');
|
|
711
747
|
}
|
|
748
|
+
const ownerId = apiToken.kind === 'admin' ? resolveAdminTokenOwnerId(apiToken) : null;
|
|
749
|
+
await emitAudit({
|
|
750
|
+
strapi
|
|
751
|
+
}, AUDITED_EVENTS.TOKEN_REGENERATE, {
|
|
752
|
+
tokenId: apiToken.id,
|
|
753
|
+
name: apiToken.name,
|
|
754
|
+
kind: apiToken.kind ?? 'content-api',
|
|
755
|
+
...ownerId != null && {
|
|
756
|
+
adminUserOwner: ownerId
|
|
757
|
+
}
|
|
758
|
+
});
|
|
712
759
|
return {
|
|
713
|
-
...
|
|
760
|
+
...omit([
|
|
761
|
+
'adminUserOwner'
|
|
762
|
+
], apiToken),
|
|
714
763
|
kind: apiToken.kind ?? 'content-api',
|
|
715
764
|
accessKey
|
|
716
765
|
};
|
|
@@ -825,6 +874,17 @@ For security reasons, prefer storing the secret in an environment variable and r
|
|
|
825
874
|
if (deletedToken === null || deletedToken === undefined) {
|
|
826
875
|
return deletedToken;
|
|
827
876
|
}
|
|
877
|
+
const ownerId = deletedToken.kind === 'admin' ? resolveAdminTokenOwnerId(deletedToken) : null;
|
|
878
|
+
await emitAudit({
|
|
879
|
+
strapi
|
|
880
|
+
}, AUDITED_EVENTS.TOKEN_DELETE, {
|
|
881
|
+
tokenId: deletedToken.id,
|
|
882
|
+
name: deletedToken.name,
|
|
883
|
+
kind: deletedToken.kind ?? 'content-api',
|
|
884
|
+
...ownerId != null && {
|
|
885
|
+
adminUserOwner: ownerId
|
|
886
|
+
}
|
|
887
|
+
});
|
|
828
888
|
if (deletedToken.kind === 'admin') {
|
|
829
889
|
return {
|
|
830
890
|
...deletedToken,
|
|
@@ -847,7 +907,9 @@ For security reasons, prefer storing the secret in an environment variable and r
|
|
|
847
907
|
const originalToken = await strapi.db.query('admin::api-token').findOne({
|
|
848
908
|
select: SELECT_FIELDS,
|
|
849
909
|
populate: [
|
|
850
|
-
'adminUserOwner'
|
|
910
|
+
'adminUserOwner',
|
|
911
|
+
'permissions',
|
|
912
|
+
'adminPermissions'
|
|
851
913
|
],
|
|
852
914
|
where: {
|
|
853
915
|
id
|
|
@@ -856,6 +918,34 @@ For security reasons, prefer storing the secret in an environment variable and r
|
|
|
856
918
|
if (!originalToken) {
|
|
857
919
|
throw new NotFoundError('Token not found');
|
|
858
920
|
}
|
|
921
|
+
// Populated with its permissions: the audit row for this update lists what changed,
|
|
922
|
+
// so the state before the write is needed. `type` is a content-api concept: admin
|
|
923
|
+
// tokens only carry the column default.
|
|
924
|
+
const previousSnapshot = {
|
|
925
|
+
name: originalToken.name,
|
|
926
|
+
description: originalToken.description,
|
|
927
|
+
...originalToken.kind !== 'admin' && {
|
|
928
|
+
type: originalToken.type
|
|
929
|
+
},
|
|
930
|
+
permissions: originalToken.kind === 'admin' ? toAdminPermissionRefs(originalToken.adminPermissions) : toActionRefs(originalToken.permissions)
|
|
931
|
+
};
|
|
932
|
+
const emitUpdate = async (kind, next, adminUserOwner)=>{
|
|
933
|
+
const changes = getTokenChanges(previousSnapshot, next);
|
|
934
|
+
if (Object.keys(changes).length === 0) {
|
|
935
|
+
return;
|
|
936
|
+
}
|
|
937
|
+
await emitAudit({
|
|
938
|
+
strapi
|
|
939
|
+
}, AUDITED_EVENTS.TOKEN_UPDATE, {
|
|
940
|
+
tokenId: originalToken.id,
|
|
941
|
+
name: next.name,
|
|
942
|
+
kind,
|
|
943
|
+
changes,
|
|
944
|
+
...adminUserOwner != null && {
|
|
945
|
+
adminUserOwner
|
|
946
|
+
}
|
|
947
|
+
});
|
|
948
|
+
};
|
|
859
949
|
const raw = attributes;
|
|
860
950
|
// kind is immutable after creation.
|
|
861
951
|
// Null-kind rows are legacy content-api tokens — treat null and 'content-api' as the same
|
|
@@ -874,7 +964,7 @@ For security reasons, prefer storing the secret in an environment variable and r
|
|
|
874
964
|
const changingTypeToCustom = incomingType === constants.API_TOKEN_TYPE.CUSTOM && originalToken.type !== constants.API_TOKEN_TYPE.CUSTOM;
|
|
875
965
|
// Only re-validate if permissions or type are being changed
|
|
876
966
|
if (incomingPermissions !== undefined || changingTypeToCustom) {
|
|
877
|
-
assertCustomTokenPermissionsValidity(resolvedType, incomingPermissions
|
|
967
|
+
assertCustomTokenPermissionsValidity(resolvedType, incomingPermissions);
|
|
878
968
|
}
|
|
879
969
|
} else if (originalToken.kind === 'admin') {
|
|
880
970
|
assertAdminKindFields(attributes);
|
|
@@ -945,9 +1035,16 @@ For security reasons, prefer storing the secret in an environment variable and r
|
|
|
945
1035
|
});
|
|
946
1036
|
}
|
|
947
1037
|
const permissionsFromDb = await strapi.db.query('admin::api-token').load(updatedToken, 'permissions');
|
|
1038
|
+
const permissions = permissionsFromDb ? toActionRefs(permissionsFromDb) : undefined;
|
|
1039
|
+
await emitUpdate('content-api', {
|
|
1040
|
+
name: updatedToken.name,
|
|
1041
|
+
description: updatedToken.description ?? null,
|
|
1042
|
+
type: updatedToken.type,
|
|
1043
|
+
permissions: permissions ?? []
|
|
1044
|
+
});
|
|
948
1045
|
return {
|
|
949
1046
|
...updatedToken,
|
|
950
|
-
permissions
|
|
1047
|
+
permissions
|
|
951
1048
|
};
|
|
952
1049
|
}
|
|
953
1050
|
// kind === 'admin'
|
|
@@ -959,6 +1056,11 @@ For security reasons, prefer storing the secret in an environment variable and r
|
|
|
959
1056
|
}
|
|
960
1057
|
const adminPermissionsFromDb = await strapi.db.query('admin::api-token').load(updatedToken, 'adminPermissions');
|
|
961
1058
|
const adminUserOwnerFromDb = await strapi.db.query('admin::api-token').load(updatedToken, 'adminUserOwner');
|
|
1059
|
+
await emitUpdate('admin', {
|
|
1060
|
+
name: updatedToken.name,
|
|
1061
|
+
description: updatedToken.description ?? null,
|
|
1062
|
+
permissions: toAdminPermissionRefs(adminPermissionsFromDb || [])
|
|
1063
|
+
}, resolveAdminTokenOwnerId(originalToken));
|
|
962
1064
|
return {
|
|
963
1065
|
...updatedToken,
|
|
964
1066
|
adminPermissions: adminPermissionsFromDb || [],
|