@strapi/admin 5.57.0 → 5.58.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/components/FormInputs/Boolean.js +3 -2
- package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
- package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
- package/dist/admin/admin/src/constants.js +14 -0
- package/dist/admin/admin/src/constants.js.map +1 -1
- package/dist/admin/admin/src/constants.mjs +14 -0
- package/dist/admin/admin/src/constants.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +6 -12
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs +6 -12
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +10 -2
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +10 -2
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +6 -56
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +6 -56
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js +217 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs +195 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js +185 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs +162 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js +342 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs +320 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs.map +1 -0
- package/dist/admin/admin/src/services/admin.js +11 -1
- package/dist/admin/admin/src/services/admin.js.map +1 -1
- package/dist/admin/admin/src/services/admin.mjs +11 -2
- package/dist/admin/admin/src/services/admin.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +71 -4
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +71 -4
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/utils/browserStrapi.js +1 -1
- package/dist/admin/admin/src/utils/browserStrapi.js.map +1 -1
- package/dist/admin/admin/src/utils/browserStrapi.mjs +1 -1
- package/dist/admin/admin/src/utils/browserStrapi.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 +24 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +52 -22
- 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 +53 -23
- 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/ApplicationInfoPage/components/AdminSeatInfo.js +16 -29
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs +18 -31
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js +473 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js.map +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs +471 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs.map +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +2 -0
- 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 +2 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.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/shared/utils/get-project-type.js +49 -0
- package/dist/admin/shared/utils/get-project-type.js.map +1 -0
- package/dist/admin/shared/utils/get-project-type.mjs +46 -0
- package/dist/admin/shared/utils/get-project-type.mjs.map +1 -0
- package/dist/admin/src/constants.d.ts +10 -0
- package/dist/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.d.ts +12 -0
- package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.d.ts +14 -0
- package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.d.ts +2 -0
- package/dist/admin/src/services/admin.d.ts +2 -2
- package/dist/admin/src/types/permissions.d.ts +1 -0
- package/dist/admin/src/utils/getFetchClient.d.ts +25 -0
- package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +29 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.d.ts +6 -1
- package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.d.ts +2 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +2 -0
- package/dist/ee/server/src/audit-logs/entitlements.d.ts +8 -0
- package/dist/ee/server/src/audit-logs/entitlements.d.ts.map +1 -0
- package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +16 -0
- package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/admin.d.ts +36 -10
- package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/index.d.ts +36 -10
- package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +36 -10
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/server/ee/server/src/audit-logs/entitlements.js +25 -0
- package/dist/server/ee/server/src/audit-logs/entitlements.js.map +1 -0
- package/dist/server/ee/server/src/audit-logs/entitlements.mjs +23 -0
- package/dist/server/ee/server/src/audit-logs/entitlements.mjs.map +1 -0
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +20 -8
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +19 -9
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.js +76 -3
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs +76 -3
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +28 -10
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +28 -10
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.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/audit-logs/auth.js +72 -0
- package/dist/server/server/src/audit-logs/auth.js.map +1 -0
- package/dist/server/server/src/audit-logs/auth.mjs +67 -0
- package/dist/server/server/src/audit-logs/auth.mjs.map +1 -0
- package/dist/server/server/src/config/admin-actions.js +7 -0
- package/dist/server/server/src/config/admin-actions.js.map +1 -1
- package/dist/server/server/src/config/admin-actions.mjs +7 -0
- package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin.js +6 -0
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs +6 -0
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/controllers/authentication.js +34 -8
- package/dist/server/server/src/controllers/authentication.js.map +1 -1
- package/dist/server/server/src/controllers/authentication.mjs +34 -8
- package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
- package/dist/server/server/src/register.js +4 -0
- package/dist/server/server/src/register.js.map +1 -1
- package/dist/server/server/src/register.mjs +4 -0
- package/dist/server/server/src/register.mjs.map +1 -1
- package/dist/server/server/src/routes/admin.js +18 -0
- package/dist/server/server/src/routes/admin.js.map +1 -1
- package/dist/server/server/src/routes/admin.mjs +18 -0
- package/dist/server/server/src/routes/admin.mjs.map +1 -1
- package/dist/server/server/src/services/auth.js +4 -2
- package/dist/server/server/src/services/auth.js.map +1 -1
- package/dist/server/server/src/services/auth.mjs +4 -3
- package/dist/server/server/src/services/auth.mjs.map +1 -1
- package/dist/server/server/src/services/debug-dump.js +173 -0
- package/dist/server/server/src/services/debug-dump.js.map +1 -0
- package/dist/server/server/src/services/debug-dump.mjs +166 -0
- package/dist/server/server/src/services/debug-dump.mjs.map +1 -0
- package/dist/server/server/src/services/index.js +3 -1
- package/dist/server/server/src/services/index.js.map +1 -1
- package/dist/server/server/src/services/index.mjs +3 -1
- package/dist/server/server/src/services/index.mjs.map +1 -1
- package/dist/server/server/src/utils/debug-dump/redact.js +197 -0
- package/dist/server/server/src/utils/debug-dump/redact.js.map +1 -0
- package/dist/server/server/src/utils/debug-dump/redact.mjs +194 -0
- package/dist/server/server/src/utils/debug-dump/redact.mjs.map +1 -0
- package/dist/server/shared/utils/get-project-type.js +49 -0
- package/dist/server/shared/utils/get-project-type.js.map +1 -0
- package/dist/server/shared/utils/get-project-type.mjs +46 -0
- package/dist/server/shared/utils/get-project-type.mjs.map +1 -0
- package/dist/server/src/audit-logs/auth.d.ts +72 -0
- package/dist/server/src/audit-logs/auth.d.ts.map +1 -0
- package/dist/server/src/config/admin-actions.d.ts.map +1 -1
- package/dist/server/src/controllers/admin.d.ts +3 -0
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/controllers/authentication.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +3 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +8 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/routes/admin.d.ts.map +1 -1
- package/dist/server/src/services/auth.d.ts +6 -0
- package/dist/server/src/services/auth.d.ts.map +1 -1
- package/dist/server/src/services/debug-dump.d.ts +9 -0
- package/dist/server/src/services/debug-dump.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +5 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/utils/debug-dump/redact.d.ts +8 -0
- package/dist/server/src/utils/debug-dump/redact.d.ts.map +1 -0
- package/dist/shared/contracts/admin.d.ts +106 -0
- package/dist/shared/contracts/admin.d.ts.map +1 -1
- package/dist/shared/utils/__tests__/get-project-type.test.d.ts +1 -0
- package/dist/shared/utils/__tests__/get-project-type.test.d.ts.map +1 -0
- package/dist/shared/utils/get-project-type.d.ts +37 -0
- package/dist/shared/utils/get-project-type.d.ts.map +1 -0
- package/package.json +8 -8
- package/dist/admin/admin/src/utils/getProjectType.js +0 -22
- package/dist/admin/admin/src/utils/getProjectType.js.map +0 -1
- package/dist/admin/admin/src/utils/getProjectType.mjs +0 -20
- package/dist/admin/admin/src/utils/getProjectType.mjs.map +0 -1
- package/dist/admin/src/utils/getProjectType.d.ts +0 -16
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@strapi/utils');
|
|
4
|
+
var adminUsers = require('./admin-users.js');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Event hub events bound to the `admin.auth.events` config callbacks
|
|
8
|
+
* (`onConnectionError`, `onSSOAutoRegistration`). Their names and payloads are public.
|
|
9
|
+
*/ const AUTH_EVENTS = {
|
|
10
|
+
LOGIN_FAILURE: 'admin.auth.error',
|
|
11
|
+
AUTO_REGISTRATION: 'admin.auth.autoRegistration'
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Emits without waiting: listeners bound to the event, such as the `onConnectionError`
|
|
15
|
+
* config callback, run before the audit subscriber and must not hold the login.
|
|
16
|
+
*/ const emitLoginFailure = ({ strapi }, event)=>{
|
|
17
|
+
utils.emitAudit({
|
|
18
|
+
strapi
|
|
19
|
+
}, AUTH_EVENTS.LOGIN_FAILURE, {
|
|
20
|
+
error: event.error,
|
|
21
|
+
provider: event.provider,
|
|
22
|
+
reason: event.reason,
|
|
23
|
+
...event.user ? {
|
|
24
|
+
user: {
|
|
25
|
+
id: event.user.id,
|
|
26
|
+
email: event.user.email
|
|
27
|
+
}
|
|
28
|
+
} : {}
|
|
29
|
+
}).catch((error)=>{
|
|
30
|
+
strapi.log.error(`Failed to emit ${AUTH_EVENTS.LOGIN_FAILURE}`, {
|
|
31
|
+
error
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Whether the audit log records a failed login. Not recorded: failures anyone can produce
|
|
37
|
+
* from outside before any verification, a local login for an email with no account and an
|
|
38
|
+
* SSO connection with no valid profile.
|
|
39
|
+
*/ const isRecordedLoginFailure = (event)=>event.reason !== 'sso_connection_error' && !(event.provider === 'local' && !event.user);
|
|
40
|
+
const toResource = (user)=>({
|
|
41
|
+
type: 'admin-user',
|
|
42
|
+
id: user.id,
|
|
43
|
+
email: user.email
|
|
44
|
+
});
|
|
45
|
+
const registerAuthAuditEvents = (auditLogsLifecycle)=>{
|
|
46
|
+
auditLogsLifecycle.registerEvent(AUTH_EVENTS.LOGIN_FAILURE, (event)=>({
|
|
47
|
+
...event.user ? {
|
|
48
|
+
resource: toResource(event.user)
|
|
49
|
+
} : {},
|
|
50
|
+
outcome: 'failure',
|
|
51
|
+
details: {
|
|
52
|
+
provider: event.provider,
|
|
53
|
+
reason: event.reason
|
|
54
|
+
}
|
|
55
|
+
}), {
|
|
56
|
+
alwaysUnknownActor: true,
|
|
57
|
+
shouldRecord: isRecordedLoginFailure
|
|
58
|
+
});
|
|
59
|
+
auditLogsLifecycle.registerEvent(AUTH_EVENTS.AUTO_REGISTRATION, (event)=>({
|
|
60
|
+
resource: toResource(event.user),
|
|
61
|
+
details: {
|
|
62
|
+
provider: event.provider,
|
|
63
|
+
roles: adminUsers.toRoleIds(event.user.roles)
|
|
64
|
+
}
|
|
65
|
+
}));
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
exports.AUTH_EVENTS = AUTH_EVENTS;
|
|
69
|
+
exports.emitLoginFailure = emitLoginFailure;
|
|
70
|
+
exports.isRecordedLoginFailure = isRecordedLoginFailure;
|
|
71
|
+
exports.registerAuthAuditEvents = registerAuthAuditEvents;
|
|
72
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sources":["../../../../../server/src/audit-logs/auth.ts"],"sourcesContent":["import type { Data, Modules } from '@strapi/types';\nimport { emitAudit } from '@strapi/utils';\n\nimport { toRoleIds, type AdminUserResource, type AdminUserSnapshot } from './admin-users';\n\n/**\n * Event hub events bound to the `admin.auth.events` config callbacks\n * (`onConnectionError`, `onSSOAutoRegistration`). Their names and payloads are public.\n */\nexport const AUTH_EVENTS = {\n LOGIN_FAILURE: 'admin.auth.error',\n AUTO_REGISTRATION: 'admin.auth.autoRegistration',\n} as const;\n\n/** One fixed value per emit site. */\nexport type LoginFailureReason =\n | 'login_not_allowed'\n | 'unexpected_error'\n | 'invalid_credentials'\n | 'account_inactive'\n | 'sso_connection_error'\n | 'sso_registration_disabled'\n | 'sso_role_misconfigured';\n\n/**\n * Payload of `admin.auth.error`, also passed to the `onConnectionError` callback.\n * The audit log stores `provider`, `reason` and the account, never `error`.\n */\nexport interface LoginFailureEvent {\n error: Error;\n provider: string;\n reason: LoginFailureReason;\n /** The account the login was for, when known. */\n user?: { id: Data.ID; email: string };\n}\n\n/** Payload of `admin.auth.autoRegistration`: the created `admin::user` row, roles populated. */\nexport interface AutoRegistrationEvent {\n user: { id: Data.ID; email?: string | null; roles?: AdminUserSnapshot['roles'] };\n provider: string;\n}\n\nexport interface LoginFailureDetails {\n provider: string;\n reason: LoginFailureReason;\n}\n\nexport interface AutoRegistrationDetails {\n provider: string;\n roles: Data.ID[];\n}\n\ntype AuditStrapi = Parameters<typeof emitAudit>[0]['strapi'];\n\n/**\n * Emits without waiting: listeners bound to the event, such as the `onConnectionError`\n * config callback, run before the audit subscriber and must not hold the login.\n */\nexport const emitLoginFailure = (\n { strapi }: { strapi: AuditStrapi },\n event: LoginFailureEvent\n): void => {\n emitAudit({ strapi }, AUTH_EVENTS.LOGIN_FAILURE, {\n error: event.error,\n provider: event.provider,\n reason: event.reason,\n ...(event.user ? { user: { id: event.user.id, email: event.user.email } } : {}),\n } satisfies LoginFailureEvent).catch((error) => {\n strapi.log.error(`Failed to emit ${AUTH_EVENTS.LOGIN_FAILURE}`, { error });\n });\n};\n\n/**\n * Whether the audit log records a failed login. Not recorded: failures anyone can produce\n * from outside before any verification, a local login for an email with no account and an\n * SSO connection with no valid profile.\n */\nexport const isRecordedLoginFailure = (event: LoginFailureEvent) =>\n event.reason !== 'sso_connection_error' && !(event.provider === 'local' && !event.user);\n\n/**\n * The part of the audit-logs lifecycle service used here.\n * The full service type lives in the Admin EE package.\n */\ninterface AuditLogsLifecycle {\n registerEvent<TDetails>(\n name: string,\n transform: Modules.AuditLogs.EventTransformer<TDetails>,\n options?: {\n allowUnknownActor?: boolean;\n alwaysUnknownActor?: boolean;\n shouldRecord?: (...args: any[]) => boolean;\n }\n ): void;\n}\n\nconst toResource = (user: { id: Data.ID; email?: string | null }): AdminUserResource => ({\n type: 'admin-user',\n id: user.id,\n email: user.email as string,\n});\n\nexport const registerAuthAuditEvents = (auditLogsLifecycle: AuditLogsLifecycle) => {\n auditLogsLifecycle.registerEvent<LoginFailureDetails>(\n AUTH_EVENTS.LOGIN_FAILURE,\n (event: LoginFailureEvent) => ({\n ...(event.user ? { resource: toResource(event.user) } : {}),\n outcome: 'failure',\n details: { provider: event.provider, reason: event.reason },\n }),\n { alwaysUnknownActor: true, shouldRecord: isRecordedLoginFailure }\n );\n\n auditLogsLifecycle.registerEvent<AutoRegistrationDetails>(\n AUTH_EVENTS.AUTO_REGISTRATION,\n (event: AutoRegistrationEvent) => ({\n resource: toResource(event.user),\n details: { provider: event.provider, roles: toRoleIds(event.user.roles) },\n })\n );\n};\n"],"names":["AUTH_EVENTS","LOGIN_FAILURE","AUTO_REGISTRATION","emitLoginFailure","strapi","event","emitAudit","error","provider","reason","user","id","email","catch","log","isRecordedLoginFailure","toResource","type","registerAuthAuditEvents","auditLogsLifecycle","registerEvent","resource","outcome","details","alwaysUnknownActor","shouldRecord","roles","toRoleIds"],"mappings":";;;;;AAKA;;;UAIaA,WAAAA,GAAc;IACzBC,aAAAA,EAAe,kBAAA;IACfC,iBAAAA,EAAmB;AACrB;AA0CA;;;AAGC,IACM,MAAMC,gBAAAA,GAAmB,CAC9B,EAAEC,MAAM,EAA2B,EACnCC,KAAAA,GAAAA;IAEAC,eAAAA,CAAU;AAAEF,QAAAA;KAAO,EAAGJ,WAAAA,CAAYC,aAAa,EAAE;AAC/CM,QAAAA,KAAAA,EAAOF,MAAME,KAAK;AAClBC,QAAAA,QAAAA,EAAUH,MAAMG,QAAQ;AACxBC,QAAAA,MAAAA,EAAQJ,MAAMI,MAAM;QACpB,GAAIJ,KAAAA,CAAMK,IAAI,GAAG;YAAEA,IAAAA,EAAM;gBAAEC,EAAAA,EAAIN,KAAAA,CAAMK,IAAI,CAACC,EAAE;gBAAEC,KAAAA,EAAOP,KAAAA,CAAMK,IAAI,CAACE;AAAM;AAAE,SAAA,GAAI;KAC9E,CAAA,CAA+BC,KAAK,CAAC,CAACN,KAAAA,GAAAA;QACpCH,MAAAA,CAAOU,GAAG,CAACP,KAAK,CAAC,CAAC,eAAe,EAAEP,WAAAA,CAAYC,aAAa,CAAA,CAAE,EAAE;AAAEM,YAAAA;AAAM,SAAA,CAAA;AAC1E,IAAA,CAAA,CAAA;AACF;AAEA;;;;AAIC,IACM,MAAMQ,sBAAAA,GAAyB,CAACV,KAAAA,GACrCA,KAAAA,CAAMI,MAAM,KAAK,sBAAA,IAA0B,EAAEJ,KAAAA,CAAMG,QAAQ,KAAK,OAAA,IAAW,CAACH,KAAAA,CAAMK,IAAI;AAkBxF,MAAMM,UAAAA,GAAa,CAACN,IAAAA,IAAqE;QACvFO,IAAAA,EAAM,YAAA;AACNN,QAAAA,EAAAA,EAAID,KAAKC,EAAE;AACXC,QAAAA,KAAAA,EAAOF,KAAKE;KACd,CAAA;AAEO,MAAMM,0BAA0B,CAACC,kBAAAA,GAAAA;AACtCA,IAAAA,kBAAAA,CAAmBC,aAAa,CAC9BpB,WAAAA,CAAYC,aAAa,EACzB,CAACI,SAA8B;YAC7B,GAAIA,KAAAA,CAAMK,IAAI,GAAG;gBAAEW,QAAAA,EAAUL,UAAAA,CAAWX,MAAMK,IAAI;AAAE,aAAA,GAAI,EAAE;YAC1DY,OAAAA,EAAS,SAAA;YACTC,OAAAA,EAAS;AAAEf,gBAAAA,QAAAA,EAAUH,MAAMG,QAAQ;AAAEC,gBAAAA,MAAAA,EAAQJ,MAAMI;AAAO;AAC5D,SAAA,CAAA,EACA;QAAEe,kBAAAA,EAAoB,IAAA;QAAMC,YAAAA,EAAcV;AAAuB,KAAA,CAAA;AAGnEI,IAAAA,kBAAAA,CAAmBC,aAAa,CAC9BpB,WAAAA,CAAYE,iBAAiB,EAC7B,CAACG,SAAkC;YACjCgB,QAAAA,EAAUL,UAAAA,CAAWX,MAAMK,IAAI,CAAA;YAC/Ba,OAAAA,EAAS;AAAEf,gBAAAA,QAAAA,EAAUH,MAAMG,QAAQ;AAAEkB,gBAAAA,KAAAA,EAAOC,oBAAAA,CAAUtB,KAAAA,CAAMK,IAAI,CAACgB,KAAK;AAAE;SAC1E,CAAA,CAAA;AAEJ;;;;;;;"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { emitAudit } from '@strapi/utils';
|
|
2
|
+
import { toRoleIds } from './admin-users.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Event hub events bound to the `admin.auth.events` config callbacks
|
|
6
|
+
* (`onConnectionError`, `onSSOAutoRegistration`). Their names and payloads are public.
|
|
7
|
+
*/ const AUTH_EVENTS = {
|
|
8
|
+
LOGIN_FAILURE: 'admin.auth.error',
|
|
9
|
+
AUTO_REGISTRATION: 'admin.auth.autoRegistration'
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Emits without waiting: listeners bound to the event, such as the `onConnectionError`
|
|
13
|
+
* config callback, run before the audit subscriber and must not hold the login.
|
|
14
|
+
*/ const emitLoginFailure = ({ strapi }, event)=>{
|
|
15
|
+
emitAudit({
|
|
16
|
+
strapi
|
|
17
|
+
}, AUTH_EVENTS.LOGIN_FAILURE, {
|
|
18
|
+
error: event.error,
|
|
19
|
+
provider: event.provider,
|
|
20
|
+
reason: event.reason,
|
|
21
|
+
...event.user ? {
|
|
22
|
+
user: {
|
|
23
|
+
id: event.user.id,
|
|
24
|
+
email: event.user.email
|
|
25
|
+
}
|
|
26
|
+
} : {}
|
|
27
|
+
}).catch((error)=>{
|
|
28
|
+
strapi.log.error(`Failed to emit ${AUTH_EVENTS.LOGIN_FAILURE}`, {
|
|
29
|
+
error
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Whether the audit log records a failed login. Not recorded: failures anyone can produce
|
|
35
|
+
* from outside before any verification, a local login for an email with no account and an
|
|
36
|
+
* SSO connection with no valid profile.
|
|
37
|
+
*/ const isRecordedLoginFailure = (event)=>event.reason !== 'sso_connection_error' && !(event.provider === 'local' && !event.user);
|
|
38
|
+
const toResource = (user)=>({
|
|
39
|
+
type: 'admin-user',
|
|
40
|
+
id: user.id,
|
|
41
|
+
email: user.email
|
|
42
|
+
});
|
|
43
|
+
const registerAuthAuditEvents = (auditLogsLifecycle)=>{
|
|
44
|
+
auditLogsLifecycle.registerEvent(AUTH_EVENTS.LOGIN_FAILURE, (event)=>({
|
|
45
|
+
...event.user ? {
|
|
46
|
+
resource: toResource(event.user)
|
|
47
|
+
} : {},
|
|
48
|
+
outcome: 'failure',
|
|
49
|
+
details: {
|
|
50
|
+
provider: event.provider,
|
|
51
|
+
reason: event.reason
|
|
52
|
+
}
|
|
53
|
+
}), {
|
|
54
|
+
alwaysUnknownActor: true,
|
|
55
|
+
shouldRecord: isRecordedLoginFailure
|
|
56
|
+
});
|
|
57
|
+
auditLogsLifecycle.registerEvent(AUTH_EVENTS.AUTO_REGISTRATION, (event)=>({
|
|
58
|
+
resource: toResource(event.user),
|
|
59
|
+
details: {
|
|
60
|
+
provider: event.provider,
|
|
61
|
+
roles: toRoleIds(event.user.roles)
|
|
62
|
+
}
|
|
63
|
+
}));
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export { AUTH_EVENTS, emitLoginFailure, isRecordedLoginFailure, registerAuthAuditEvents };
|
|
67
|
+
//# sourceMappingURL=auth.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.mjs","sources":["../../../../../server/src/audit-logs/auth.ts"],"sourcesContent":["import type { Data, Modules } from '@strapi/types';\nimport { emitAudit } from '@strapi/utils';\n\nimport { toRoleIds, type AdminUserResource, type AdminUserSnapshot } from './admin-users';\n\n/**\n * Event hub events bound to the `admin.auth.events` config callbacks\n * (`onConnectionError`, `onSSOAutoRegistration`). Their names and payloads are public.\n */\nexport const AUTH_EVENTS = {\n LOGIN_FAILURE: 'admin.auth.error',\n AUTO_REGISTRATION: 'admin.auth.autoRegistration',\n} as const;\n\n/** One fixed value per emit site. */\nexport type LoginFailureReason =\n | 'login_not_allowed'\n | 'unexpected_error'\n | 'invalid_credentials'\n | 'account_inactive'\n | 'sso_connection_error'\n | 'sso_registration_disabled'\n | 'sso_role_misconfigured';\n\n/**\n * Payload of `admin.auth.error`, also passed to the `onConnectionError` callback.\n * The audit log stores `provider`, `reason` and the account, never `error`.\n */\nexport interface LoginFailureEvent {\n error: Error;\n provider: string;\n reason: LoginFailureReason;\n /** The account the login was for, when known. */\n user?: { id: Data.ID; email: string };\n}\n\n/** Payload of `admin.auth.autoRegistration`: the created `admin::user` row, roles populated. */\nexport interface AutoRegistrationEvent {\n user: { id: Data.ID; email?: string | null; roles?: AdminUserSnapshot['roles'] };\n provider: string;\n}\n\nexport interface LoginFailureDetails {\n provider: string;\n reason: LoginFailureReason;\n}\n\nexport interface AutoRegistrationDetails {\n provider: string;\n roles: Data.ID[];\n}\n\ntype AuditStrapi = Parameters<typeof emitAudit>[0]['strapi'];\n\n/**\n * Emits without waiting: listeners bound to the event, such as the `onConnectionError`\n * config callback, run before the audit subscriber and must not hold the login.\n */\nexport const emitLoginFailure = (\n { strapi }: { strapi: AuditStrapi },\n event: LoginFailureEvent\n): void => {\n emitAudit({ strapi }, AUTH_EVENTS.LOGIN_FAILURE, {\n error: event.error,\n provider: event.provider,\n reason: event.reason,\n ...(event.user ? { user: { id: event.user.id, email: event.user.email } } : {}),\n } satisfies LoginFailureEvent).catch((error) => {\n strapi.log.error(`Failed to emit ${AUTH_EVENTS.LOGIN_FAILURE}`, { error });\n });\n};\n\n/**\n * Whether the audit log records a failed login. Not recorded: failures anyone can produce\n * from outside before any verification, a local login for an email with no account and an\n * SSO connection with no valid profile.\n */\nexport const isRecordedLoginFailure = (event: LoginFailureEvent) =>\n event.reason !== 'sso_connection_error' && !(event.provider === 'local' && !event.user);\n\n/**\n * The part of the audit-logs lifecycle service used here.\n * The full service type lives in the Admin EE package.\n */\ninterface AuditLogsLifecycle {\n registerEvent<TDetails>(\n name: string,\n transform: Modules.AuditLogs.EventTransformer<TDetails>,\n options?: {\n allowUnknownActor?: boolean;\n alwaysUnknownActor?: boolean;\n shouldRecord?: (...args: any[]) => boolean;\n }\n ): void;\n}\n\nconst toResource = (user: { id: Data.ID; email?: string | null }): AdminUserResource => ({\n type: 'admin-user',\n id: user.id,\n email: user.email as string,\n});\n\nexport const registerAuthAuditEvents = (auditLogsLifecycle: AuditLogsLifecycle) => {\n auditLogsLifecycle.registerEvent<LoginFailureDetails>(\n AUTH_EVENTS.LOGIN_FAILURE,\n (event: LoginFailureEvent) => ({\n ...(event.user ? { resource: toResource(event.user) } : {}),\n outcome: 'failure',\n details: { provider: event.provider, reason: event.reason },\n }),\n { alwaysUnknownActor: true, shouldRecord: isRecordedLoginFailure }\n );\n\n auditLogsLifecycle.registerEvent<AutoRegistrationDetails>(\n AUTH_EVENTS.AUTO_REGISTRATION,\n (event: AutoRegistrationEvent) => ({\n resource: toResource(event.user),\n details: { provider: event.provider, roles: toRoleIds(event.user.roles) },\n })\n );\n};\n"],"names":["AUTH_EVENTS","LOGIN_FAILURE","AUTO_REGISTRATION","emitLoginFailure","strapi","event","emitAudit","error","provider","reason","user","id","email","catch","log","isRecordedLoginFailure","toResource","type","registerAuthAuditEvents","auditLogsLifecycle","registerEvent","resource","outcome","details","alwaysUnknownActor","shouldRecord","roles","toRoleIds"],"mappings":";;;AAKA;;;UAIaA,WAAAA,GAAc;IACzBC,aAAAA,EAAe,kBAAA;IACfC,iBAAAA,EAAmB;AACrB;AA0CA;;;AAGC,IACM,MAAMC,gBAAAA,GAAmB,CAC9B,EAAEC,MAAM,EAA2B,EACnCC,KAAAA,GAAAA;IAEAC,SAAAA,CAAU;AAAEF,QAAAA;KAAO,EAAGJ,WAAAA,CAAYC,aAAa,EAAE;AAC/CM,QAAAA,KAAAA,EAAOF,MAAME,KAAK;AAClBC,QAAAA,QAAAA,EAAUH,MAAMG,QAAQ;AACxBC,QAAAA,MAAAA,EAAQJ,MAAMI,MAAM;QACpB,GAAIJ,KAAAA,CAAMK,IAAI,GAAG;YAAEA,IAAAA,EAAM;gBAAEC,EAAAA,EAAIN,KAAAA,CAAMK,IAAI,CAACC,EAAE;gBAAEC,KAAAA,EAAOP,KAAAA,CAAMK,IAAI,CAACE;AAAM;AAAE,SAAA,GAAI;KAC9E,CAAA,CAA+BC,KAAK,CAAC,CAACN,KAAAA,GAAAA;QACpCH,MAAAA,CAAOU,GAAG,CAACP,KAAK,CAAC,CAAC,eAAe,EAAEP,WAAAA,CAAYC,aAAa,CAAA,CAAE,EAAE;AAAEM,YAAAA;AAAM,SAAA,CAAA;AAC1E,IAAA,CAAA,CAAA;AACF;AAEA;;;;AAIC,IACM,MAAMQ,sBAAAA,GAAyB,CAACV,KAAAA,GACrCA,KAAAA,CAAMI,MAAM,KAAK,sBAAA,IAA0B,EAAEJ,KAAAA,CAAMG,QAAQ,KAAK,OAAA,IAAW,CAACH,KAAAA,CAAMK,IAAI;AAkBxF,MAAMM,UAAAA,GAAa,CAACN,IAAAA,IAAqE;QACvFO,IAAAA,EAAM,YAAA;AACNN,QAAAA,EAAAA,EAAID,KAAKC,EAAE;AACXC,QAAAA,KAAAA,EAAOF,KAAKE;KACd,CAAA;AAEO,MAAMM,0BAA0B,CAACC,kBAAAA,GAAAA;AACtCA,IAAAA,kBAAAA,CAAmBC,aAAa,CAC9BpB,WAAAA,CAAYC,aAAa,EACzB,CAACI,SAA8B;YAC7B,GAAIA,KAAAA,CAAMK,IAAI,GAAG;gBAAEW,QAAAA,EAAUL,UAAAA,CAAWX,MAAMK,IAAI;AAAE,aAAA,GAAI,EAAE;YAC1DY,OAAAA,EAAS,SAAA;YACTC,OAAAA,EAAS;AAAEf,gBAAAA,QAAAA,EAAUH,MAAMG,QAAQ;AAAEC,gBAAAA,MAAAA,EAAQJ,MAAMI;AAAO;AAC5D,SAAA,CAAA,EACA;QAAEe,kBAAAA,EAAoB,IAAA;QAAMC,YAAAA,EAAcV;AAAuB,KAAA,CAAA;AAGnEI,IAAAA,kBAAAA,CAAmBC,aAAa,CAC9BpB,WAAAA,CAAYE,iBAAiB,EAC7B,CAACG,SAAkC;YACjCgB,QAAAA,EAAUL,UAAAA,CAAWX,MAAMK,IAAI,CAAA;YAC/Ba,OAAAA,EAAS;AAAEf,gBAAAA,QAAAA,EAAUH,MAAMG,QAAQ;AAAEkB,gBAAAA,KAAAA,EAAOC,SAAAA,CAAUtB,KAAAA,CAAMK,IAAI,CAACgB,KAAK;AAAE;SAC1E,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -229,6 +229,13 @@ const actions = [
|
|
|
229
229
|
section: 'settings',
|
|
230
230
|
category: 'project'
|
|
231
231
|
},
|
|
232
|
+
{
|
|
233
|
+
uid: 'debug-dump.read',
|
|
234
|
+
displayName: 'Generate a support debug dump',
|
|
235
|
+
pluginName: 'admin',
|
|
236
|
+
section: 'settings',
|
|
237
|
+
category: 'debug and support'
|
|
238
|
+
},
|
|
232
239
|
{
|
|
233
240
|
uid: 'transfer.tokens.access',
|
|
234
241
|
displayName: 'Access the transfer tokens settings page',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-actions.js","sources":["../../../../../server/src/config/admin-actions.ts"],"sourcesContent":["export const actions = [\n {\n uid: 'marketplace.read',\n displayName: 'Access the marketplace',\n pluginName: 'admin',\n section: 'settings',\n category: 'plugins and marketplace',\n subCategory: 'marketplace',\n },\n {\n uid: 'webhooks.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'users.create',\n displayName: 'Create (invite)',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::user'],\n },\n ],\n },\n {\n uid: 'users.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'roles.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::role'],\n },\n ],\n },\n {\n uid: 'roles.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'api-tokens.access',\n displayName: 'Access the API tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'api Tokens',\n },\n {\n uid: 'admin-tokens.access',\n displayName: 'Access the Admin tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'admin tokens',\n },\n {\n uid: 'admin-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'project-settings.update',\n displayName: 'Update the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'project-settings.read',\n displayName: 'Read the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'transfer.tokens.access',\n displayName: 'Access the transfer tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'transfer tokens',\n },\n {\n uid: 'transfer.tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n];\n\nexport default {\n actions,\n};\n"],"names":["actions","uid","displayName","pluginName","section","category","subCategory","aliases","actionId","subjects"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admin-actions.js","sources":["../../../../../server/src/config/admin-actions.ts"],"sourcesContent":["export const actions = [\n {\n uid: 'marketplace.read',\n displayName: 'Access the marketplace',\n pluginName: 'admin',\n section: 'settings',\n category: 'plugins and marketplace',\n subCategory: 'marketplace',\n },\n {\n uid: 'webhooks.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'users.create',\n displayName: 'Create (invite)',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::user'],\n },\n ],\n },\n {\n uid: 'users.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'roles.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::role'],\n },\n ],\n },\n {\n uid: 'roles.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'api-tokens.access',\n displayName: 'Access the API tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'api Tokens',\n },\n {\n uid: 'admin-tokens.access',\n displayName: 'Access the Admin tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'admin tokens',\n },\n {\n uid: 'admin-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'project-settings.update',\n displayName: 'Update the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'project-settings.read',\n displayName: 'Read the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'debug-dump.read',\n displayName: 'Generate a support debug dump',\n pluginName: 'admin',\n section: 'settings',\n category: 'debug and support',\n },\n {\n uid: 'transfer.tokens.access',\n displayName: 'Access the transfer tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'transfer tokens',\n },\n {\n uid: 'transfer.tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n];\n\nexport default {\n actions,\n};\n"],"names":["actions","uid","displayName","pluginName","section","category","subCategory","aliases","actionId","subjects"],"mappings":"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"}
|
|
@@ -225,6 +225,13 @@ const actions = [
|
|
|
225
225
|
section: 'settings',
|
|
226
226
|
category: 'project'
|
|
227
227
|
},
|
|
228
|
+
{
|
|
229
|
+
uid: 'debug-dump.read',
|
|
230
|
+
displayName: 'Generate a support debug dump',
|
|
231
|
+
pluginName: 'admin',
|
|
232
|
+
section: 'settings',
|
|
233
|
+
category: 'debug and support'
|
|
234
|
+
},
|
|
228
235
|
{
|
|
229
236
|
uid: 'transfer.tokens.access',
|
|
230
237
|
displayName: 'Access the transfer tokens settings page',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-actions.mjs","sources":["../../../../../server/src/config/admin-actions.ts"],"sourcesContent":["export const actions = [\n {\n uid: 'marketplace.read',\n displayName: 'Access the marketplace',\n pluginName: 'admin',\n section: 'settings',\n category: 'plugins and marketplace',\n subCategory: 'marketplace',\n },\n {\n uid: 'webhooks.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'users.create',\n displayName: 'Create (invite)',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::user'],\n },\n ],\n },\n {\n uid: 'users.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'roles.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::role'],\n },\n ],\n },\n {\n uid: 'roles.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'api-tokens.access',\n displayName: 'Access the API tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'api Tokens',\n },\n {\n uid: 'admin-tokens.access',\n displayName: 'Access the Admin tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'admin tokens',\n },\n {\n uid: 'admin-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'project-settings.update',\n displayName: 'Update the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'project-settings.read',\n displayName: 'Read the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'transfer.tokens.access',\n displayName: 'Access the transfer tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'transfer tokens',\n },\n {\n uid: 'transfer.tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n];\n\nexport default {\n actions,\n};\n"],"names":["actions","uid","displayName","pluginName","section","category","subCategory","aliases","actionId","subjects"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admin-actions.mjs","sources":["../../../../../server/src/config/admin-actions.ts"],"sourcesContent":["export const actions = [\n {\n uid: 'marketplace.read',\n displayName: 'Access the marketplace',\n pluginName: 'admin',\n section: 'settings',\n category: 'plugins and marketplace',\n subCategory: 'marketplace',\n },\n {\n uid: 'webhooks.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'users.create',\n displayName: 'Create (invite)',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::user'],\n },\n ],\n },\n {\n uid: 'users.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'roles.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::role'],\n },\n ],\n },\n {\n uid: 'roles.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'api-tokens.access',\n displayName: 'Access the API tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'api Tokens',\n },\n {\n uid: 'admin-tokens.access',\n displayName: 'Access the Admin tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'admin tokens',\n },\n {\n uid: 'admin-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'project-settings.update',\n displayName: 'Update the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'project-settings.read',\n displayName: 'Read the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'debug-dump.read',\n displayName: 'Generate a support debug dump',\n pluginName: 'admin',\n section: 'settings',\n category: 'debug and support',\n },\n {\n uid: 'transfer.tokens.access',\n displayName: 'Access the transfer tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'transfer tokens',\n },\n {\n uid: 'transfer.tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n];\n\nexport default {\n actions,\n};\n"],"names":["actions","uid","displayName","pluginName","section","category","subCategory","aliases","actionId","subjects"],"mappings":"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"}
|
|
@@ -131,6 +131,12 @@ const isUsingTypeScript = (...args)=>{
|
|
|
131
131
|
}
|
|
132
132
|
};
|
|
133
133
|
},
|
|
134
|
+
async debugDump () {
|
|
135
|
+
const data = await index.getService('debug-dump').generate();
|
|
136
|
+
return {
|
|
137
|
+
data
|
|
138
|
+
};
|
|
139
|
+
},
|
|
134
140
|
async plugins (ctx) {
|
|
135
141
|
const enabledPlugins = strapi.config.get('enabledPlugins');
|
|
136
142
|
// List of core plugins that are always enabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.js","sources":["../../../../../server/src/controllers/admin.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Context } from 'koa';\n\nimport path from 'path';\n\nimport { exists } from 'fs-extra';\nimport { env } from '@strapi/utils';\nimport type { Struct } from '@strapi/types';\nimport {\n validateUpdateProjectSettings,\n validateUpdateProjectSettingsFiles,\n validateUpdateProjectSettingsImagesDimensions,\n} from '../validation/project-settings';\nimport { getService } from '../utils';\n\nimport type {\n Init,\n GetProjectSettings,\n GetProjectType,\n Information,\n Plugins,\n TelemetryProperties,\n UpdateProjectSettings,\n GetGuidedTourMeta,\n} from '../../../shared/contracts/admin';\n\n// Lazy: only resolved on first GET /admin/project-type request\ntype TsUtilsModule = typeof import('@strapi/typescript-utils');\nlet lazyTsUtils: TsUtilsModule | undefined;\nconst isUsingTypeScript: TsUtilsModule['isUsingTypeScript'] = (\n ...args: Parameters<TsUtilsModule['isUsingTypeScript']>\n) => {\n if (!lazyTsUtils) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyTsUtils = require('@strapi/typescript-utils');\n }\n return (lazyTsUtils as TsUtilsModule).isUsingTypeScript(...args);\n};\n\n/**\n * A set of functions called \"actions\" for `Admin`\n */\nexport default {\n // TODO very temporary to check the switch ee/ce\n // When removing this we need to update the /admin/src/index.js file\n // whe,re we set the strapi.window.isEE value\n\n // NOTE: admin/ee/server overrides this controller, and adds the EE features\n // This returns an empty feature list for CE\n async getProjectType(): Promise<GetProjectType.Response> {\n const flags = strapi.config.get('admin.flags', {});\n return { data: { isEE: false, isTrial: false, features: [], flags, ai: { enabled: false } } };\n },\n\n async init() {\n let uuid = strapi.config.get('uuid', false);\n const hasAdmin = await getService('user').exists();\n const { menuLogo, authLogo } = await getService('project-settings').getProjectSettings();\n // set to null if telemetryDisabled flag not avaialble in package.json\n const telemetryDisabled: boolean | null = strapi.config.get(\n 'packageJsonStrapi.telemetryDisabled',\n null\n );\n\n if (telemetryDisabled !== null && telemetryDisabled === true) {\n uuid = false;\n }\n\n return {\n data: {\n uuid,\n hasAdmin,\n menuLogo: menuLogo ? menuLogo.url : null,\n authLogo: authLogo ? authLogo.url : null,\n },\n } satisfies Init.Response;\n },\n\n async getProjectSettings() {\n return getService(\n 'project-settings'\n ).getProjectSettings() satisfies Promise<GetProjectSettings.Response>;\n },\n\n async updateProjectSettings(ctx: Context) {\n const {\n request: { files, body },\n } = ctx as { request: UpdateProjectSettings.Request };\n\n const projectSettingsService = getService('project-settings');\n\n await validateUpdateProjectSettings(body);\n await validateUpdateProjectSettingsFiles(files);\n\n const formatedFiles = await projectSettingsService.parseFilesData(files);\n await validateUpdateProjectSettingsImagesDimensions(formatedFiles);\n\n return projectSettingsService.updateProjectSettings({\n ...body,\n ...formatedFiles,\n }) satisfies Promise<UpdateProjectSettings.Response>;\n },\n\n async telemetryProperties(ctx: Context) {\n // If the telemetry is disabled, ignore the request and return early\n if (strapi.telemetry.isDisabled) {\n ctx.status = 204;\n return;\n }\n\n const useTypescriptOnServer = await isUsingTypeScript(strapi.dirs.app.root);\n const useTypescriptOnAdmin = await isUsingTypeScript(\n path.join(strapi.dirs.app.root, 'src', 'admin')\n );\n const isHostedOnStrapiCloud = env('STRAPI_HOSTING', null) === 'strapi.cloud';\n\n const numberOfAllContentTypes = _.size(strapi.contentTypes);\n const numberOfComponents = _.size(strapi.components);\n\n const getNumberOfDynamicZones = () => {\n return Object.values(strapi.contentTypes)\n .flatMap((contentType: Struct.ContentTypeSchema) => Object.values(contentType.attributes))\n .filter((attribute) => attribute.type === 'dynamiczone').length;\n };\n\n const getNumberOfFolders = async (): Promise<number> => {\n try {\n const contentStructure = strapi.get('content-structure') as\n | { countGroups?: () => Promise<number> }\n | undefined;\n\n return (await contentStructure?.countGroups?.()) ?? 0;\n } catch {\n return 0;\n }\n };\n\n return {\n data: {\n useTypescriptOnServer,\n useTypescriptOnAdmin,\n isHostedOnStrapiCloud,\n numberOfAllContentTypes, // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents,\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfContentTypeFolders: await getNumberOfFolders(),\n },\n } satisfies TelemetryProperties.Response;\n },\n\n async information() {\n const currentEnvironment: string = strapi.config.get('environment');\n const autoReload = strapi.config.get('autoReload', false);\n const strapiVersion = strapi.config.get('info.strapi', null);\n const dependencies = strapi.config.get('info.dependencies', {});\n const projectId = strapi.config.get('uuid', null);\n const nodeVersion = process.version;\n const communityEdition = !strapi.EE;\n const useYarn: boolean = await exists(path.join(process.cwd(), 'yarn.lock'));\n\n return {\n data: {\n currentEnvironment,\n autoReload,\n strapiVersion,\n dependencies,\n projectId,\n nodeVersion,\n communityEdition,\n useYarn,\n },\n } satisfies Information.Response;\n },\n\n async plugins(ctx: Context) {\n const enabledPlugins = strapi.config.get('enabledPlugins') as any;\n\n // List of core plugins that are always enabled,\n // and so it's not necessary to display them in the plugins list\n const CORE_PLUGINS = [\n 'content-manager',\n 'content-type-builder',\n 'email',\n 'upload',\n 'i18n',\n 'content-releases',\n 'review-workflows',\n ];\n\n const plugins = Object.entries(enabledPlugins)\n .filter(([key]: any) => !CORE_PLUGINS.includes(key))\n .map(([key, plugin]: any) => ({\n name: plugin.info.name || key,\n displayName: plugin.info.displayName || plugin.info.name || key,\n description: plugin.info.description || '',\n packageName: plugin.info.packageName,\n }));\n\n ctx.send({ plugins } satisfies Plugins.Response);\n },\n\n async licenseTrialTimeLeft() {\n const data = await strapi.ee.getTrialEndDate({\n strapi,\n });\n\n return data;\n },\n\n async getGuidedTourMeta(ctx: Context) {\n const isFirstSuperAdminUser = await getService('user').isFirstSuperAdminUser(ctx.state.user.id);\n\n return {\n data: {\n isFirstSuperAdminUser,\n schemas: strapi.contentTypes,\n },\n } satisfies GetGuidedTourMeta.Response;\n },\n};\n"],"names":["lazyTsUtils","isUsingTypeScript","args","require","getProjectType","flags","strapi","config","get","data","isEE","isTrial","features","ai","enabled","init","uuid","hasAdmin","getService","exists","menuLogo","authLogo","getProjectSettings","telemetryDisabled","url","updateProjectSettings","ctx","request","files","body","projectSettingsService","validateUpdateProjectSettings","validateUpdateProjectSettingsFiles","formatedFiles","parseFilesData","validateUpdateProjectSettingsImagesDimensions","telemetryProperties","telemetry","isDisabled","status","useTypescriptOnServer","dirs","app","root","useTypescriptOnAdmin","path","join","isHostedOnStrapiCloud","env","numberOfAllContentTypes","_","size","contentTypes","numberOfComponents","components","getNumberOfDynamicZones","Object","values","flatMap","contentType","attributes","filter","attribute","type","length","getNumberOfFolders","contentStructure","countGroups","numberOfDynamicZones","numberOfContentTypeFolders","information","currentEnvironment","autoReload","strapiVersion","dependencies","projectId","nodeVersion","process","version","communityEdition","EE","useYarn","cwd","plugins","enabledPlugins","CORE_PLUGINS","entries","key","includes","map","plugin","name","info","displayName","description","packageName","send","licenseTrialTimeLeft","ee","getTrialEndDate","getGuidedTourMeta","isFirstSuperAdminUser","state","user","id","schemas"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admin.js","sources":["../../../../../server/src/controllers/admin.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Context } from 'koa';\n\nimport path from 'path';\n\nimport { exists } from 'fs-extra';\nimport { env } from '@strapi/utils';\nimport type { Struct } from '@strapi/types';\nimport {\n validateUpdateProjectSettings,\n validateUpdateProjectSettingsFiles,\n validateUpdateProjectSettingsImagesDimensions,\n} from '../validation/project-settings';\nimport { getService } from '../utils';\n\nimport type {\n Init,\n GetProjectSettings,\n GetProjectType,\n Information,\n Plugins,\n TelemetryProperties,\n UpdateProjectSettings,\n GetGuidedTourMeta,\n DebugDump,\n} from '../../../shared/contracts/admin';\n\n// Lazy: only resolved on first GET /admin/project-type request\ntype TsUtilsModule = typeof import('@strapi/typescript-utils');\nlet lazyTsUtils: TsUtilsModule | undefined;\nconst isUsingTypeScript: TsUtilsModule['isUsingTypeScript'] = (\n ...args: Parameters<TsUtilsModule['isUsingTypeScript']>\n) => {\n if (!lazyTsUtils) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyTsUtils = require('@strapi/typescript-utils');\n }\n return (lazyTsUtils as TsUtilsModule).isUsingTypeScript(...args);\n};\n\n/**\n * A set of functions called \"actions\" for `Admin`\n */\nexport default {\n // TODO very temporary to check the switch ee/ce\n // When removing this we need to update the /admin/src/index.js file\n // whe,re we set the strapi.window.isEE value\n\n // NOTE: admin/ee/server overrides this controller, and adds the EE features\n // This returns an empty feature list for CE\n async getProjectType(): Promise<GetProjectType.Response> {\n const flags = strapi.config.get('admin.flags', {});\n return { data: { isEE: false, isTrial: false, features: [], flags, ai: { enabled: false } } };\n },\n\n async init() {\n let uuid = strapi.config.get('uuid', false);\n const hasAdmin = await getService('user').exists();\n const { menuLogo, authLogo } = await getService('project-settings').getProjectSettings();\n // set to null if telemetryDisabled flag not avaialble in package.json\n const telemetryDisabled: boolean | null = strapi.config.get(\n 'packageJsonStrapi.telemetryDisabled',\n null\n );\n\n if (telemetryDisabled !== null && telemetryDisabled === true) {\n uuid = false;\n }\n\n return {\n data: {\n uuid,\n hasAdmin,\n menuLogo: menuLogo ? menuLogo.url : null,\n authLogo: authLogo ? authLogo.url : null,\n },\n } satisfies Init.Response;\n },\n\n async getProjectSettings() {\n return getService(\n 'project-settings'\n ).getProjectSettings() satisfies Promise<GetProjectSettings.Response>;\n },\n\n async updateProjectSettings(ctx: Context) {\n const {\n request: { files, body },\n } = ctx as { request: UpdateProjectSettings.Request };\n\n const projectSettingsService = getService('project-settings');\n\n await validateUpdateProjectSettings(body);\n await validateUpdateProjectSettingsFiles(files);\n\n const formatedFiles = await projectSettingsService.parseFilesData(files);\n await validateUpdateProjectSettingsImagesDimensions(formatedFiles);\n\n return projectSettingsService.updateProjectSettings({\n ...body,\n ...formatedFiles,\n }) satisfies Promise<UpdateProjectSettings.Response>;\n },\n\n async telemetryProperties(ctx: Context) {\n // If the telemetry is disabled, ignore the request and return early\n if (strapi.telemetry.isDisabled) {\n ctx.status = 204;\n return;\n }\n\n const useTypescriptOnServer = await isUsingTypeScript(strapi.dirs.app.root);\n const useTypescriptOnAdmin = await isUsingTypeScript(\n path.join(strapi.dirs.app.root, 'src', 'admin')\n );\n const isHostedOnStrapiCloud = env('STRAPI_HOSTING', null) === 'strapi.cloud';\n\n const numberOfAllContentTypes = _.size(strapi.contentTypes);\n const numberOfComponents = _.size(strapi.components);\n\n const getNumberOfDynamicZones = () => {\n return Object.values(strapi.contentTypes)\n .flatMap((contentType: Struct.ContentTypeSchema) => Object.values(contentType.attributes))\n .filter((attribute) => attribute.type === 'dynamiczone').length;\n };\n\n const getNumberOfFolders = async (): Promise<number> => {\n try {\n const contentStructure = strapi.get('content-structure') as\n | { countGroups?: () => Promise<number> }\n | undefined;\n\n return (await contentStructure?.countGroups?.()) ?? 0;\n } catch {\n return 0;\n }\n };\n\n return {\n data: {\n useTypescriptOnServer,\n useTypescriptOnAdmin,\n isHostedOnStrapiCloud,\n numberOfAllContentTypes, // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents,\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfContentTypeFolders: await getNumberOfFolders(),\n },\n } satisfies TelemetryProperties.Response;\n },\n\n async information() {\n const currentEnvironment: string = strapi.config.get('environment');\n const autoReload = strapi.config.get('autoReload', false);\n const strapiVersion = strapi.config.get('info.strapi', null);\n const dependencies = strapi.config.get('info.dependencies', {});\n const projectId = strapi.config.get('uuid', null);\n const nodeVersion = process.version;\n const communityEdition = !strapi.EE;\n const useYarn: boolean = await exists(path.join(process.cwd(), 'yarn.lock'));\n\n return {\n data: {\n currentEnvironment,\n autoReload,\n strapiVersion,\n dependencies,\n projectId,\n nodeVersion,\n communityEdition,\n useYarn,\n },\n } satisfies Information.Response;\n },\n\n async debugDump() {\n const data = await getService('debug-dump').generate();\n\n return { data } satisfies DebugDump.Response;\n },\n\n async plugins(ctx: Context) {\n const enabledPlugins = strapi.config.get('enabledPlugins') as any;\n\n // List of core plugins that are always enabled,\n // and so it's not necessary to display them in the plugins list\n const CORE_PLUGINS = [\n 'content-manager',\n 'content-type-builder',\n 'email',\n 'upload',\n 'i18n',\n 'content-releases',\n 'review-workflows',\n ];\n\n const plugins = Object.entries(enabledPlugins)\n .filter(([key]: any) => !CORE_PLUGINS.includes(key))\n .map(([key, plugin]: any) => ({\n name: plugin.info.name || key,\n displayName: plugin.info.displayName || plugin.info.name || key,\n description: plugin.info.description || '',\n packageName: plugin.info.packageName,\n }));\n\n ctx.send({ plugins } satisfies Plugins.Response);\n },\n\n async licenseTrialTimeLeft() {\n const data = await strapi.ee.getTrialEndDate({\n strapi,\n });\n\n return data;\n },\n\n async getGuidedTourMeta(ctx: Context) {\n const isFirstSuperAdminUser = await getService('user').isFirstSuperAdminUser(ctx.state.user.id);\n\n return {\n data: {\n isFirstSuperAdminUser,\n schemas: strapi.contentTypes,\n },\n } satisfies GetGuidedTourMeta.Response;\n },\n};\n"],"names":["lazyTsUtils","isUsingTypeScript","args","require","getProjectType","flags","strapi","config","get","data","isEE","isTrial","features","ai","enabled","init","uuid","hasAdmin","getService","exists","menuLogo","authLogo","getProjectSettings","telemetryDisabled","url","updateProjectSettings","ctx","request","files","body","projectSettingsService","validateUpdateProjectSettings","validateUpdateProjectSettingsFiles","formatedFiles","parseFilesData","validateUpdateProjectSettingsImagesDimensions","telemetryProperties","telemetry","isDisabled","status","useTypescriptOnServer","dirs","app","root","useTypescriptOnAdmin","path","join","isHostedOnStrapiCloud","env","numberOfAllContentTypes","_","size","contentTypes","numberOfComponents","components","getNumberOfDynamicZones","Object","values","flatMap","contentType","attributes","filter","attribute","type","length","getNumberOfFolders","contentStructure","countGroups","numberOfDynamicZones","numberOfContentTypeFolders","information","currentEnvironment","autoReload","strapiVersion","dependencies","projectId","nodeVersion","process","version","communityEdition","EE","useYarn","cwd","debugDump","generate","plugins","enabledPlugins","CORE_PLUGINS","entries","key","includes","map","plugin","name","info","displayName","description","packageName","send","licenseTrialTimeLeft","ee","getTrialEndDate","getGuidedTourMeta","isFirstSuperAdminUser","state","user","id","schemas"],"mappings":";;;;;;;;;;;;;;AA6BA,IAAIA,WAAAA;AACJ,MAAMC,iBAAAA,GAAwD,CAC5D,GAAGC,IAAAA,GAAAA;AAEH,IAAA,IAAI,CAACF,WAAAA,EAAa;;AAEhBA,QAAAA,WAAAA,GAAcG,OAAAA,CAAQ,0BAAA,CAAA;AACxB,IAAA;IACA,OAAQH,WAAAA,CAA8BC,iBAAiB,CAAA,GAAIC,IAAAA,CAAAA;AAC7D,CAAA;AAEA;;AAEC,IACD,YAAe;;;;;;IAOb,MAAME,cAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAMC,QAAQC,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,eAAe,EAAC,CAAA;QAChD,OAAO;YAAEC,IAAAA,EAAM;gBAAEC,IAAAA,EAAM,KAAA;gBAAOC,OAAAA,EAAS,KAAA;AAAOC,gBAAAA,QAAAA,EAAU,EAAE;AAAEP,gBAAAA,KAAAA;gBAAOQ,EAAAA,EAAI;oBAAEC,OAAAA,EAAS;AAAM;AAAE;AAAE,SAAA;AAC9F,IAAA,CAAA;IAEA,MAAMC,IAAAA,CAAAA,GAAAA;AACJ,QAAA,IAAIC,OAAOV,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,MAAA,EAAQ,KAAA,CAAA;AACrC,QAAA,MAAMS,QAAAA,GAAW,MAAMC,gBAAAA,CAAW,MAAA,CAAA,CAAQC,MAAM,EAAA;QAChD,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,GAAG,MAAMH,gBAAAA,CAAW,kBAAA,CAAA,CAAoBI,kBAAkB,EAAA;;AAEtF,QAAA,MAAMC,oBAAoCjB,MAAAA,CAAOC,MAAM,CAACC,GAAG,CACzD,qCAAA,EACA,IAAA,CAAA;QAGF,IAAIe,iBAAAA,KAAsB,IAAA,IAAQA,iBAAAA,KAAsB,IAAA,EAAM;YAC5DP,IAAAA,GAAO,KAAA;AACT,QAAA;QAEA,OAAO;YACLP,IAAAA,EAAM;AACJO,gBAAAA,IAAAA;AACAC,gBAAAA,QAAAA;gBACAG,QAAAA,EAAUA,QAAAA,GAAWA,QAAAA,CAASI,GAAG,GAAG,IAAA;gBACpCH,QAAAA,EAAUA,QAAAA,GAAWA,QAAAA,CAASG,GAAG,GAAG;AACtC;AACF,SAAA;AACF,IAAA,CAAA;IAEA,MAAMF,kBAAAA,CAAAA,GAAAA;QACJ,OAAOJ,gBAAAA,CACL,oBACAI,kBAAkB,EAAA;AACtB,IAAA,CAAA;AAEA,IAAA,MAAMG,uBAAsBC,GAAY,EAAA;QACtC,MAAM,EACJC,SAAS,EAAEC,KAAK,EAAEC,IAAI,EAAE,EACzB,GAAGH,GAAAA;AAEJ,QAAA,MAAMI,yBAAyBZ,gBAAAA,CAAW,kBAAA,CAAA;AAE1C,QAAA,MAAMa,6CAAAA,CAA8BF,IAAAA,CAAAA;AACpC,QAAA,MAAMG,kDAAAA,CAAmCJ,KAAAA,CAAAA;AAEzC,QAAA,MAAMK,aAAAA,GAAgB,MAAMH,sBAAAA,CAAuBI,cAAc,CAACN,KAAAA,CAAAA;AAClE,QAAA,MAAMO,6DAAAA,CAA8CF,aAAAA,CAAAA;QAEpD,OAAOH,sBAAAA,CAAuBL,qBAAqB,CAAC;AAClD,YAAA,GAAGI,IAAI;AACP,YAAA,GAAGI;AACL,SAAA,CAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMG,qBAAoBV,GAAY,EAAA;;AAEpC,QAAA,IAAIpB,MAAAA,CAAO+B,SAAS,CAACC,UAAU,EAAE;AAC/BZ,YAAAA,GAAAA,CAAIa,MAAM,GAAG,GAAA;AACb,YAAA;AACF,QAAA;QAEA,MAAMC,qBAAAA,GAAwB,MAAMvC,iBAAAA,CAAkBK,MAAAA,CAAOmC,IAAI,CAACC,GAAG,CAACC,IAAI,CAAA;AAC1E,QAAA,MAAMC,oBAAAA,GAAuB,MAAM3C,iBAAAA,CACjC4C,qBAAAA,CAAKC,IAAI,CAACxC,MAAAA,CAAOmC,IAAI,CAACC,GAAG,CAACC,IAAI,EAAE,KAAA,EAAO,OAAA,CAAA,CAAA;QAEzC,MAAMI,qBAAAA,GAAwBC,SAAAA,CAAI,gBAAA,EAAkB,IAAA,CAAA,KAAU,cAAA;AAE9D,QAAA,MAAMC,uBAAAA,GAA0BC,kBAAAA,CAAEC,IAAI,CAAC7C,OAAO8C,YAAY,CAAA;AAC1D,QAAA,MAAMC,kBAAAA,GAAqBH,kBAAAA,CAAEC,IAAI,CAAC7C,OAAOgD,UAAU,CAAA;AAEnD,QAAA,MAAMC,uBAAAA,GAA0B,IAAA;YAC9B,OAAOC,MAAAA,CAAOC,MAAM,CAACnD,MAAAA,CAAO8C,YAAY,EACrCM,OAAO,CAAC,CAACC,WAAAA,GAA0CH,MAAAA,CAAOC,MAAM,CAACE,WAAAA,CAAYC,UAAU,CAAA,CAAA,CACvFC,MAAM,CAAC,CAACC,YAAcA,SAAAA,CAAUC,IAAI,KAAK,aAAA,CAAA,CAAeC,MAAM;AACnE,QAAA,CAAA;AAEA,QAAA,MAAMC,kBAAAA,GAAqB,UAAA;YACzB,IAAI;gBACF,MAAMC,gBAAAA,GAAmB5D,MAAAA,CAAOE,GAAG,CAAC,mBAAA,CAAA;gBAIpC,OAAQ,MAAM0D,gBAAAA,EAAkBC,WAAAA,IAAAA,IAAoB,CAAA;AACtD,YAAA,CAAA,CAAE,OAAM;gBACN,OAAO,CAAA;AACT,YAAA;AACF,QAAA,CAAA;QAEA,OAAO;YACL1D,IAAAA,EAAM;AACJ+B,gBAAAA,qBAAAA;AACAI,gBAAAA,oBAAAA;AACAG,gBAAAA,qBAAAA;AACAE,gBAAAA,uBAAAA;AACAI,gBAAAA,kBAAAA;gBACAe,oBAAAA,EAAsBb,uBAAAA,EAAAA;AACtBc,gBAAAA,0BAAAA,EAA4B,MAAMJ,kBAAAA;AACpC;AACF,SAAA;AACF,IAAA,CAAA;IAEA,MAAMK,WAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAMC,kBAAAA,GAA6BjE,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,aAAA,CAAA;AACrD,QAAA,MAAMgE,aAAalE,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,YAAA,EAAc,KAAA,CAAA;AACnD,QAAA,MAAMiE,gBAAgBnE,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,aAAA,EAAe,IAAA,CAAA;AACvD,QAAA,MAAMkE,eAAepE,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,qBAAqB,EAAC,CAAA;AAC7D,QAAA,MAAMmE,YAAYrE,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,MAAA,EAAQ,IAAA,CAAA;QAC5C,MAAMoE,WAAAA,GAAcC,QAAQC,OAAO;QACnC,MAAMC,gBAAAA,GAAmB,CAACzE,MAAAA,CAAO0E,EAAE;QACnC,MAAMC,OAAAA,GAAmB,MAAM9D,UAAAA,CAAO0B,qBAAAA,CAAKC,IAAI,CAAC+B,OAAAA,CAAQK,GAAG,EAAA,EAAI,WAAA,CAAA,CAAA;QAE/D,OAAO;YACLzE,IAAAA,EAAM;AACJ8D,gBAAAA,kBAAAA;AACAC,gBAAAA,UAAAA;AACAC,gBAAAA,aAAAA;AACAC,gBAAAA,YAAAA;AACAC,gBAAAA,SAAAA;AACAC,gBAAAA,WAAAA;AACAG,gBAAAA,gBAAAA;AACAE,gBAAAA;AACF;AACF,SAAA;AACF,IAAA,CAAA;IAEA,MAAME,SAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAM1E,IAAAA,GAAO,MAAMS,gBAAAA,CAAW,YAAA,CAAA,CAAckE,QAAQ,EAAA;QAEpD,OAAO;AAAE3E,YAAAA;AAAK,SAAA;AAChB,IAAA,CAAA;AAEA,IAAA,MAAM4E,SAAQ3D,GAAY,EAAA;AACxB,QAAA,MAAM4D,cAAAA,GAAiBhF,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,gBAAA,CAAA;;;AAIzC,QAAA,MAAM+E,YAAAA,GAAe;AACnB,YAAA,iBAAA;AACA,YAAA,sBAAA;AACA,YAAA,OAAA;AACA,YAAA,QAAA;AACA,YAAA,MAAA;AACA,YAAA,kBAAA;AACA,YAAA;AACD,SAAA;QAED,MAAMF,OAAAA,GAAU7B,OAAOgC,OAAO,CAACF,gBAC5BzB,MAAM,CAAC,CAAC,CAAC4B,GAAAA,CAAS,GAAK,CAACF,YAAAA,CAAaG,QAAQ,CAACD,GAAAA,CAAAA,CAAAA,CAC9CE,GAAG,CAAC,CAAC,CAACF,GAAAA,EAAKG,MAAAA,CAAY,IAAM;AAC5BC,gBAAAA,IAAAA,EAAMD,MAAAA,CAAOE,IAAI,CAACD,IAAI,IAAIJ,GAAAA;gBAC1BM,WAAAA,EAAaH,MAAAA,CAAOE,IAAI,CAACC,WAAW,IAAIH,MAAAA,CAAOE,IAAI,CAACD,IAAI,IAAIJ,GAAAA;AAC5DO,gBAAAA,WAAAA,EAAaJ,MAAAA,CAAOE,IAAI,CAACE,WAAW,IAAI,EAAA;gBACxCC,WAAAA,EAAaL,MAAAA,CAAOE,IAAI,CAACG;aAC3B,CAAA,CAAA;AAEFvE,QAAAA,GAAAA,CAAIwE,IAAI,CAAC;AAAEb,YAAAA;AAAQ,SAAA,CAAA;AACrB,IAAA,CAAA;IAEA,MAAMc,oBAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAM1F,OAAO,MAAMH,MAAAA,CAAO8F,EAAE,CAACC,eAAe,CAAC;AAC3C/F,YAAAA;AACF,SAAA,CAAA;QAEA,OAAOG,IAAAA;AACT,IAAA,CAAA;AAEA,IAAA,MAAM6F,mBAAkB5E,GAAY,EAAA;QAClC,MAAM6E,qBAAAA,GAAwB,MAAMrF,gBAAAA,CAAW,MAAA,CAAA,CAAQqF,qBAAqB,CAAC7E,GAAAA,CAAI8E,KAAK,CAACC,IAAI,CAACC,EAAE,CAAA;QAE9F,OAAO;YACLjG,IAAAA,EAAM;AACJ8F,gBAAAA,qBAAAA;AACAI,gBAAAA,OAAAA,EAASrG,OAAO8C;AAClB;AACF,SAAA;AACF,IAAA;AACF,CAAA;;;;"}
|
|
@@ -124,6 +124,12 @@ const isUsingTypeScript = (...args)=>{
|
|
|
124
124
|
}
|
|
125
125
|
};
|
|
126
126
|
},
|
|
127
|
+
async debugDump () {
|
|
128
|
+
const data = await getService('debug-dump').generate();
|
|
129
|
+
return {
|
|
130
|
+
data
|
|
131
|
+
};
|
|
132
|
+
},
|
|
127
133
|
async plugins (ctx) {
|
|
128
134
|
const enabledPlugins = strapi.config.get('enabledPlugins');
|
|
129
135
|
// List of core plugins that are always enabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.mjs","sources":["../../../../../server/src/controllers/admin.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Context } from 'koa';\n\nimport path from 'path';\n\nimport { exists } from 'fs-extra';\nimport { env } from '@strapi/utils';\nimport type { Struct } from '@strapi/types';\nimport {\n validateUpdateProjectSettings,\n validateUpdateProjectSettingsFiles,\n validateUpdateProjectSettingsImagesDimensions,\n} from '../validation/project-settings';\nimport { getService } from '../utils';\n\nimport type {\n Init,\n GetProjectSettings,\n GetProjectType,\n Information,\n Plugins,\n TelemetryProperties,\n UpdateProjectSettings,\n GetGuidedTourMeta,\n} from '../../../shared/contracts/admin';\n\n// Lazy: only resolved on first GET /admin/project-type request\ntype TsUtilsModule = typeof import('@strapi/typescript-utils');\nlet lazyTsUtils: TsUtilsModule | undefined;\nconst isUsingTypeScript: TsUtilsModule['isUsingTypeScript'] = (\n ...args: Parameters<TsUtilsModule['isUsingTypeScript']>\n) => {\n if (!lazyTsUtils) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyTsUtils = require('@strapi/typescript-utils');\n }\n return (lazyTsUtils as TsUtilsModule).isUsingTypeScript(...args);\n};\n\n/**\n * A set of functions called \"actions\" for `Admin`\n */\nexport default {\n // TODO very temporary to check the switch ee/ce\n // When removing this we need to update the /admin/src/index.js file\n // whe,re we set the strapi.window.isEE value\n\n // NOTE: admin/ee/server overrides this controller, and adds the EE features\n // This returns an empty feature list for CE\n async getProjectType(): Promise<GetProjectType.Response> {\n const flags = strapi.config.get('admin.flags', {});\n return { data: { isEE: false, isTrial: false, features: [], flags, ai: { enabled: false } } };\n },\n\n async init() {\n let uuid = strapi.config.get('uuid', false);\n const hasAdmin = await getService('user').exists();\n const { menuLogo, authLogo } = await getService('project-settings').getProjectSettings();\n // set to null if telemetryDisabled flag not avaialble in package.json\n const telemetryDisabled: boolean | null = strapi.config.get(\n 'packageJsonStrapi.telemetryDisabled',\n null\n );\n\n if (telemetryDisabled !== null && telemetryDisabled === true) {\n uuid = false;\n }\n\n return {\n data: {\n uuid,\n hasAdmin,\n menuLogo: menuLogo ? menuLogo.url : null,\n authLogo: authLogo ? authLogo.url : null,\n },\n } satisfies Init.Response;\n },\n\n async getProjectSettings() {\n return getService(\n 'project-settings'\n ).getProjectSettings() satisfies Promise<GetProjectSettings.Response>;\n },\n\n async updateProjectSettings(ctx: Context) {\n const {\n request: { files, body },\n } = ctx as { request: UpdateProjectSettings.Request };\n\n const projectSettingsService = getService('project-settings');\n\n await validateUpdateProjectSettings(body);\n await validateUpdateProjectSettingsFiles(files);\n\n const formatedFiles = await projectSettingsService.parseFilesData(files);\n await validateUpdateProjectSettingsImagesDimensions(formatedFiles);\n\n return projectSettingsService.updateProjectSettings({\n ...body,\n ...formatedFiles,\n }) satisfies Promise<UpdateProjectSettings.Response>;\n },\n\n async telemetryProperties(ctx: Context) {\n // If the telemetry is disabled, ignore the request and return early\n if (strapi.telemetry.isDisabled) {\n ctx.status = 204;\n return;\n }\n\n const useTypescriptOnServer = await isUsingTypeScript(strapi.dirs.app.root);\n const useTypescriptOnAdmin = await isUsingTypeScript(\n path.join(strapi.dirs.app.root, 'src', 'admin')\n );\n const isHostedOnStrapiCloud = env('STRAPI_HOSTING', null) === 'strapi.cloud';\n\n const numberOfAllContentTypes = _.size(strapi.contentTypes);\n const numberOfComponents = _.size(strapi.components);\n\n const getNumberOfDynamicZones = () => {\n return Object.values(strapi.contentTypes)\n .flatMap((contentType: Struct.ContentTypeSchema) => Object.values(contentType.attributes))\n .filter((attribute) => attribute.type === 'dynamiczone').length;\n };\n\n const getNumberOfFolders = async (): Promise<number> => {\n try {\n const contentStructure = strapi.get('content-structure') as\n | { countGroups?: () => Promise<number> }\n | undefined;\n\n return (await contentStructure?.countGroups?.()) ?? 0;\n } catch {\n return 0;\n }\n };\n\n return {\n data: {\n useTypescriptOnServer,\n useTypescriptOnAdmin,\n isHostedOnStrapiCloud,\n numberOfAllContentTypes, // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents,\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfContentTypeFolders: await getNumberOfFolders(),\n },\n } satisfies TelemetryProperties.Response;\n },\n\n async information() {\n const currentEnvironment: string = strapi.config.get('environment');\n const autoReload = strapi.config.get('autoReload', false);\n const strapiVersion = strapi.config.get('info.strapi', null);\n const dependencies = strapi.config.get('info.dependencies', {});\n const projectId = strapi.config.get('uuid', null);\n const nodeVersion = process.version;\n const communityEdition = !strapi.EE;\n const useYarn: boolean = await exists(path.join(process.cwd(), 'yarn.lock'));\n\n return {\n data: {\n currentEnvironment,\n autoReload,\n strapiVersion,\n dependencies,\n projectId,\n nodeVersion,\n communityEdition,\n useYarn,\n },\n } satisfies Information.Response;\n },\n\n async plugins(ctx: Context) {\n const enabledPlugins = strapi.config.get('enabledPlugins') as any;\n\n // List of core plugins that are always enabled,\n // and so it's not necessary to display them in the plugins list\n const CORE_PLUGINS = [\n 'content-manager',\n 'content-type-builder',\n 'email',\n 'upload',\n 'i18n',\n 'content-releases',\n 'review-workflows',\n ];\n\n const plugins = Object.entries(enabledPlugins)\n .filter(([key]: any) => !CORE_PLUGINS.includes(key))\n .map(([key, plugin]: any) => ({\n name: plugin.info.name || key,\n displayName: plugin.info.displayName || plugin.info.name || key,\n description: plugin.info.description || '',\n packageName: plugin.info.packageName,\n }));\n\n ctx.send({ plugins } satisfies Plugins.Response);\n },\n\n async licenseTrialTimeLeft() {\n const data = await strapi.ee.getTrialEndDate({\n strapi,\n });\n\n return data;\n },\n\n async getGuidedTourMeta(ctx: Context) {\n const isFirstSuperAdminUser = await getService('user').isFirstSuperAdminUser(ctx.state.user.id);\n\n return {\n data: {\n isFirstSuperAdminUser,\n schemas: strapi.contentTypes,\n },\n } satisfies GetGuidedTourMeta.Response;\n },\n};\n"],"names":["lazyTsUtils","isUsingTypeScript","args","require","getProjectType","flags","strapi","config","get","data","isEE","isTrial","features","ai","enabled","init","uuid","hasAdmin","getService","exists","menuLogo","authLogo","getProjectSettings","telemetryDisabled","url","updateProjectSettings","ctx","request","files","body","projectSettingsService","validateUpdateProjectSettings","validateUpdateProjectSettingsFiles","formatedFiles","parseFilesData","validateUpdateProjectSettingsImagesDimensions","telemetryProperties","telemetry","isDisabled","status","useTypescriptOnServer","dirs","app","root","useTypescriptOnAdmin","path","join","isHostedOnStrapiCloud","env","numberOfAllContentTypes","_","size","contentTypes","numberOfComponents","components","getNumberOfDynamicZones","Object","values","flatMap","contentType","attributes","filter","attribute","type","length","getNumberOfFolders","contentStructure","countGroups","numberOfDynamicZones","numberOfContentTypeFolders","information","currentEnvironment","autoReload","strapiVersion","dependencies","projectId","nodeVersion","process","version","communityEdition","EE","useYarn","cwd","plugins","enabledPlugins","CORE_PLUGINS","entries","key","includes","map","plugin","name","info","displayName","description","packageName","send","licenseTrialTimeLeft","ee","getTrialEndDate","getGuidedTourMeta","isFirstSuperAdminUser","state","user","id","schemas"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admin.mjs","sources":["../../../../../server/src/controllers/admin.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Context } from 'koa';\n\nimport path from 'path';\n\nimport { exists } from 'fs-extra';\nimport { env } from '@strapi/utils';\nimport type { Struct } from '@strapi/types';\nimport {\n validateUpdateProjectSettings,\n validateUpdateProjectSettingsFiles,\n validateUpdateProjectSettingsImagesDimensions,\n} from '../validation/project-settings';\nimport { getService } from '../utils';\n\nimport type {\n Init,\n GetProjectSettings,\n GetProjectType,\n Information,\n Plugins,\n TelemetryProperties,\n UpdateProjectSettings,\n GetGuidedTourMeta,\n DebugDump,\n} from '../../../shared/contracts/admin';\n\n// Lazy: only resolved on first GET /admin/project-type request\ntype TsUtilsModule = typeof import('@strapi/typescript-utils');\nlet lazyTsUtils: TsUtilsModule | undefined;\nconst isUsingTypeScript: TsUtilsModule['isUsingTypeScript'] = (\n ...args: Parameters<TsUtilsModule['isUsingTypeScript']>\n) => {\n if (!lazyTsUtils) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyTsUtils = require('@strapi/typescript-utils');\n }\n return (lazyTsUtils as TsUtilsModule).isUsingTypeScript(...args);\n};\n\n/**\n * A set of functions called \"actions\" for `Admin`\n */\nexport default {\n // TODO very temporary to check the switch ee/ce\n // When removing this we need to update the /admin/src/index.js file\n // whe,re we set the strapi.window.isEE value\n\n // NOTE: admin/ee/server overrides this controller, and adds the EE features\n // This returns an empty feature list for CE\n async getProjectType(): Promise<GetProjectType.Response> {\n const flags = strapi.config.get('admin.flags', {});\n return { data: { isEE: false, isTrial: false, features: [], flags, ai: { enabled: false } } };\n },\n\n async init() {\n let uuid = strapi.config.get('uuid', false);\n const hasAdmin = await getService('user').exists();\n const { menuLogo, authLogo } = await getService('project-settings').getProjectSettings();\n // set to null if telemetryDisabled flag not avaialble in package.json\n const telemetryDisabled: boolean | null = strapi.config.get(\n 'packageJsonStrapi.telemetryDisabled',\n null\n );\n\n if (telemetryDisabled !== null && telemetryDisabled === true) {\n uuid = false;\n }\n\n return {\n data: {\n uuid,\n hasAdmin,\n menuLogo: menuLogo ? menuLogo.url : null,\n authLogo: authLogo ? authLogo.url : null,\n },\n } satisfies Init.Response;\n },\n\n async getProjectSettings() {\n return getService(\n 'project-settings'\n ).getProjectSettings() satisfies Promise<GetProjectSettings.Response>;\n },\n\n async updateProjectSettings(ctx: Context) {\n const {\n request: { files, body },\n } = ctx as { request: UpdateProjectSettings.Request };\n\n const projectSettingsService = getService('project-settings');\n\n await validateUpdateProjectSettings(body);\n await validateUpdateProjectSettingsFiles(files);\n\n const formatedFiles = await projectSettingsService.parseFilesData(files);\n await validateUpdateProjectSettingsImagesDimensions(formatedFiles);\n\n return projectSettingsService.updateProjectSettings({\n ...body,\n ...formatedFiles,\n }) satisfies Promise<UpdateProjectSettings.Response>;\n },\n\n async telemetryProperties(ctx: Context) {\n // If the telemetry is disabled, ignore the request and return early\n if (strapi.telemetry.isDisabled) {\n ctx.status = 204;\n return;\n }\n\n const useTypescriptOnServer = await isUsingTypeScript(strapi.dirs.app.root);\n const useTypescriptOnAdmin = await isUsingTypeScript(\n path.join(strapi.dirs.app.root, 'src', 'admin')\n );\n const isHostedOnStrapiCloud = env('STRAPI_HOSTING', null) === 'strapi.cloud';\n\n const numberOfAllContentTypes = _.size(strapi.contentTypes);\n const numberOfComponents = _.size(strapi.components);\n\n const getNumberOfDynamicZones = () => {\n return Object.values(strapi.contentTypes)\n .flatMap((contentType: Struct.ContentTypeSchema) => Object.values(contentType.attributes))\n .filter((attribute) => attribute.type === 'dynamiczone').length;\n };\n\n const getNumberOfFolders = async (): Promise<number> => {\n try {\n const contentStructure = strapi.get('content-structure') as\n | { countGroups?: () => Promise<number> }\n | undefined;\n\n return (await contentStructure?.countGroups?.()) ?? 0;\n } catch {\n return 0;\n }\n };\n\n return {\n data: {\n useTypescriptOnServer,\n useTypescriptOnAdmin,\n isHostedOnStrapiCloud,\n numberOfAllContentTypes, // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents,\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfContentTypeFolders: await getNumberOfFolders(),\n },\n } satisfies TelemetryProperties.Response;\n },\n\n async information() {\n const currentEnvironment: string = strapi.config.get('environment');\n const autoReload = strapi.config.get('autoReload', false);\n const strapiVersion = strapi.config.get('info.strapi', null);\n const dependencies = strapi.config.get('info.dependencies', {});\n const projectId = strapi.config.get('uuid', null);\n const nodeVersion = process.version;\n const communityEdition = !strapi.EE;\n const useYarn: boolean = await exists(path.join(process.cwd(), 'yarn.lock'));\n\n return {\n data: {\n currentEnvironment,\n autoReload,\n strapiVersion,\n dependencies,\n projectId,\n nodeVersion,\n communityEdition,\n useYarn,\n },\n } satisfies Information.Response;\n },\n\n async debugDump() {\n const data = await getService('debug-dump').generate();\n\n return { data } satisfies DebugDump.Response;\n },\n\n async plugins(ctx: Context) {\n const enabledPlugins = strapi.config.get('enabledPlugins') as any;\n\n // List of core plugins that are always enabled,\n // and so it's not necessary to display them in the plugins list\n const CORE_PLUGINS = [\n 'content-manager',\n 'content-type-builder',\n 'email',\n 'upload',\n 'i18n',\n 'content-releases',\n 'review-workflows',\n ];\n\n const plugins = Object.entries(enabledPlugins)\n .filter(([key]: any) => !CORE_PLUGINS.includes(key))\n .map(([key, plugin]: any) => ({\n name: plugin.info.name || key,\n displayName: plugin.info.displayName || plugin.info.name || key,\n description: plugin.info.description || '',\n packageName: plugin.info.packageName,\n }));\n\n ctx.send({ plugins } satisfies Plugins.Response);\n },\n\n async licenseTrialTimeLeft() {\n const data = await strapi.ee.getTrialEndDate({\n strapi,\n });\n\n return data;\n },\n\n async getGuidedTourMeta(ctx: Context) {\n const isFirstSuperAdminUser = await getService('user').isFirstSuperAdminUser(ctx.state.user.id);\n\n return {\n data: {\n isFirstSuperAdminUser,\n schemas: strapi.contentTypes,\n },\n } satisfies GetGuidedTourMeta.Response;\n },\n};\n"],"names":["lazyTsUtils","isUsingTypeScript","args","require","getProjectType","flags","strapi","config","get","data","isEE","isTrial","features","ai","enabled","init","uuid","hasAdmin","getService","exists","menuLogo","authLogo","getProjectSettings","telemetryDisabled","url","updateProjectSettings","ctx","request","files","body","projectSettingsService","validateUpdateProjectSettings","validateUpdateProjectSettingsFiles","formatedFiles","parseFilesData","validateUpdateProjectSettingsImagesDimensions","telemetryProperties","telemetry","isDisabled","status","useTypescriptOnServer","dirs","app","root","useTypescriptOnAdmin","path","join","isHostedOnStrapiCloud","env","numberOfAllContentTypes","_","size","contentTypes","numberOfComponents","components","getNumberOfDynamicZones","Object","values","flatMap","contentType","attributes","filter","attribute","type","length","getNumberOfFolders","contentStructure","countGroups","numberOfDynamicZones","numberOfContentTypeFolders","information","currentEnvironment","autoReload","strapiVersion","dependencies","projectId","nodeVersion","process","version","communityEdition","EE","useYarn","cwd","debugDump","generate","plugins","enabledPlugins","CORE_PLUGINS","entries","key","includes","map","plugin","name","info","displayName","description","packageName","send","licenseTrialTimeLeft","ee","getTrialEndDate","getGuidedTourMeta","isFirstSuperAdminUser","state","user","id","schemas"],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ var compose = require('koa-compose');
|
|
|
5
5
|
require('@strapi/types');
|
|
6
6
|
var utils = require('@strapi/utils');
|
|
7
7
|
var index = require('../utils/index.js');
|
|
8
|
+
var auth$1 = require('../audit-logs/auth.js');
|
|
9
|
+
var auth = require('../services/auth.js');
|
|
8
10
|
var sessionAuth = require('../../../shared/utils/session-auth.js');
|
|
9
11
|
var register = require('../validation/authentication/register.js');
|
|
10
12
|
var forgotPassword = require('../validation/authentication/forgot-password.js');
|
|
@@ -17,6 +19,36 @@ var passport__default = /*#__PURE__*/_interopDefault(passport);
|
|
|
17
19
|
var compose__default = /*#__PURE__*/_interopDefault(compose);
|
|
18
20
|
|
|
19
21
|
const { ApplicationError, ValidationError } = utils.errors;
|
|
22
|
+
/**
|
|
23
|
+
* Emits `admin.auth.error` without delaying the response. The account is looked up by
|
|
24
|
+
* the email of the request, as the local strategy does, because passport does not pass
|
|
25
|
+
* the user along with an error.
|
|
26
|
+
*/ const emitLocalLoginFailure = (ctx, error, reason)=>{
|
|
27
|
+
const { email } = ctx.request.body ?? {};
|
|
28
|
+
const emit = (user)=>auth$1.emitLoginFailure({
|
|
29
|
+
strapi
|
|
30
|
+
}, {
|
|
31
|
+
error,
|
|
32
|
+
reason,
|
|
33
|
+
provider: 'local',
|
|
34
|
+
...user ? {
|
|
35
|
+
user: {
|
|
36
|
+
id: user.id,
|
|
37
|
+
email: user.email
|
|
38
|
+
}
|
|
39
|
+
} : {}
|
|
40
|
+
});
|
|
41
|
+
// A failed lookup still emits, without the account
|
|
42
|
+
Promise.resolve().then(()=>typeof email === 'string' ? strapi.db.query('admin::user').findOne({
|
|
43
|
+
select: [
|
|
44
|
+
'id',
|
|
45
|
+
'email'
|
|
46
|
+
],
|
|
47
|
+
where: {
|
|
48
|
+
email: email.toLowerCase()
|
|
49
|
+
}
|
|
50
|
+
}) : null).then(emit, ()=>emit());
|
|
51
|
+
};
|
|
20
52
|
var authentication = {
|
|
21
53
|
login: compose__default.default([
|
|
22
54
|
async (ctx, next)=>{
|
|
@@ -28,10 +60,7 @@ var authentication = {
|
|
|
28
60
|
session: false
|
|
29
61
|
}, (err, user, info)=>{
|
|
30
62
|
if (err) {
|
|
31
|
-
|
|
32
|
-
error: err,
|
|
33
|
-
provider: 'local'
|
|
34
|
-
});
|
|
63
|
+
emitLocalLoginFailure(ctx, err, err.details?.code === 'LOGIN_NOT_ALLOWED' ? 'login_not_allowed' : 'unexpected_error');
|
|
35
64
|
// if this is a recognized error, allow it to bubble up to user
|
|
36
65
|
if (err.details?.code === 'LOGIN_NOT_ALLOWED') {
|
|
37
66
|
throw err;
|
|
@@ -40,10 +69,7 @@ var authentication = {
|
|
|
40
69
|
return ctx.notImplemented();
|
|
41
70
|
}
|
|
42
71
|
if (!user) {
|
|
43
|
-
|
|
44
|
-
error: new Error(info.message),
|
|
45
|
-
provider: 'local'
|
|
46
|
-
});
|
|
72
|
+
emitLocalLoginFailure(ctx, new Error(info.message), info.message === auth.USER_NOT_ACTIVE_MESSAGE ? 'account_inactive' : 'invalid_credentials');
|
|
47
73
|
throw new ApplicationError(info.message);
|
|
48
74
|
}
|
|
49
75
|
const query = ctx.state;
|