@strapi/admin 4.7.0-beta.0 → 4.9.0-alpha.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/admin/src/content-manager/components/CollectionTypeFormWrapper/index.js +6 -14
- package/admin/src/content-manager/components/DynamicTable/CellContent/RelationMultiple/index.js +1 -1
- package/admin/src/content-manager/components/DynamicZone/components/DynamicComponent.js +2 -0
- package/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js +39 -9
- package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.js +9 -15
- package/admin/src/content-manager/components/SingleTypeFormWrapper/index.js +4 -12
- package/admin/src/content-manager/pages/EditView/DeleteLink/index.js +6 -8
- package/admin/src/content-manager/pages/ListView/index.js +6 -11
- package/admin/src/hooks/useRegenerate/index.js +2 -2
- package/admin/src/hooks/useSettingsMenu/utils/defaultGlobalLinks.js +0 -7
- package/admin/src/index.js +1 -0
- package/admin/src/pages/SettingsPage/components/SettingsNav/index.js +15 -2
- package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/CollapsableContentType/index.js +3 -5
- package/admin/src/pages/SettingsPage/{components/Tokens/TokenBox → pages/ApiTokens/EditView/components/ContentBox}/index.js +17 -17
- package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormApiTokenContainer/index.js +142 -52
- package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormBody/index.js +78 -0
- package/admin/src/pages/SettingsPage/{components/Tokens → pages/ApiTokens/EditView/components}/FormHead/index.js +19 -36
- package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/Regenerate/index.js +1 -5
- package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +14 -37
- package/admin/src/pages/SettingsPage/{components/Tokens/Table → pages/ApiTokens/ListView/DynamicTable}/DefaultButton/index.js +1 -1
- package/admin/src/pages/SettingsPage/{components/Tokens/Table → pages/ApiTokens/ListView/DynamicTable}/DeleteButton/index.js +1 -1
- package/admin/src/pages/SettingsPage/{components/Tokens/Table → pages/ApiTokens/ListView/DynamicTable}/ReadButton/index.js +0 -0
- package/admin/src/pages/SettingsPage/{components/Tokens/Table → pages/ApiTokens/ListView/DynamicTable}/UpdateButton/index.js +0 -0
- package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js +112 -0
- package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/index.js +13 -5
- package/admin/src/pages/SettingsPage/pages/Users/components/MagicLink/MagicLinkWrapper.js +3 -20
- package/admin/src/pages/SettingsPage/utils/defaultRoutes.js +0 -33
- package/admin/src/permissions/defaultPermissions.js +2 -23
- package/admin/src/translations/ar.json +4 -4
- package/admin/src/translations/ca.json +4 -4
- package/admin/src/translations/cs.json +4 -4
- package/admin/src/translations/de.json +4 -4
- package/admin/src/translations/dk.json +4 -4
- package/admin/src/translations/en.json +9 -17
- package/admin/src/translations/es.json +4 -4
- package/admin/src/translations/eu.json +4 -4
- package/admin/src/translations/fr.json +4 -4
- package/admin/src/translations/gu.json +4 -4
- package/admin/src/translations/he.json +4 -4
- package/admin/src/translations/hi.json +4 -4
- package/admin/src/translations/hu.json +4 -4
- package/admin/src/translations/id.json +4 -4
- package/admin/src/translations/it.json +4 -4
- package/admin/src/translations/ja.json +4 -4
- package/admin/src/translations/ko.json +4 -4
- package/admin/src/translations/ml.json +4 -4
- package/admin/src/translations/ms.json +4 -4
- package/admin/src/translations/nl.json +4 -4
- package/admin/src/translations/no.json +4 -4
- package/admin/src/translations/pl.json +4 -4
- package/admin/src/translations/pt-BR.json +4 -4
- package/admin/src/translations/pt.json +4 -4
- package/admin/src/translations/ru.json +785 -789
- package/admin/src/translations/sa.json +4 -4
- package/admin/src/translations/sk.json +4 -4
- package/admin/src/translations/sv.json +4 -4
- package/admin/src/translations/th.json +4 -4
- package/admin/src/translations/tr.json +4 -4
- package/admin/src/translations/uk.json +4 -4
- package/admin/src/translations/vi.json +4 -4
- package/admin/src/translations/zh-Hans.json +4 -4
- package/admin/src/translations/zh.json +4 -4
- package/build/1683.d59d0f23.chunk.js +268 -0
- package/build/{4855.bd092921.chunk.js → 2223.1bfea951.chunk.js} +88 -88
- package/build/2743.646a1015.chunk.js +45 -0
- package/build/3075.3ee481f1.chunk.js +108 -0
- package/build/3632.2e378cf8.chunk.js +138 -0
- package/build/4318.cd55ce02.chunk.js +30 -0
- package/build/8633.00ccd382.chunk.js +1 -0
- package/build/9707.b36ed71e.chunk.js +96 -0
- package/build/{Admin-authenticatedApp.f29f6021.chunk.js → Admin-authenticatedApp.a73577e1.chunk.js} +2 -2
- package/build/{Admin_InternalErrorPage.157152a8.chunk.js → Admin_InternalErrorPage.178ddb90.chunk.js} +1 -1
- package/build/{Admin_homePage.b1730882.chunk.js → Admin_homePage.c2f5f27d.chunk.js} +2 -2
- package/build/{Admin_marketplace.ea0316c2.chunk.js → Admin_marketplace.1df49c42.chunk.js} +1 -1
- package/build/{Admin_pluginsPage.5c24f963.chunk.js → Admin_pluginsPage.8d824408.chunk.js} +2 -2
- package/build/{Admin_profilePage.59af1978.chunk.js → Admin_profilePage.cb667bc5.chunk.js} +2 -2
- package/build/Admin_settingsPage.f90615fb.chunk.js +178 -0
- package/build/{Upload_ConfigureTheView.3f2b6e6a.chunk.js → Upload_ConfigureTheView.d306009d.chunk.js} +1 -1
- package/build/admin-app.06f07029.chunk.js +112 -0
- package/build/admin-edit-roles-page.35199b9d.chunk.js +1 -0
- package/build/admin-edit-users.9e48b00d.chunk.js +10 -0
- package/build/admin-users.cf7b4151.chunk.js +11 -0
- package/build/{api-tokens-create-page.0db3aec1.chunk.js → api-tokens-create-page.a31c7fba.chunk.js} +1 -1
- package/build/{api-tokens-edit-page.671e0e26.chunk.js → api-tokens-edit-page.64fef287.chunk.js} +1 -1
- package/build/api-tokens-list-page.e600ad3e.chunk.js +16 -0
- package/build/ar-json.39e54aba.chunk.js +1 -0
- package/build/{audit-logs-settings-page.c3dce30d.chunk.js → audit-logs-settings-page.d4da4579.chunk.js} +1 -1
- package/build/{ca-json.f6a0f472.chunk.js → ca-json.4d999055.chunk.js} +1 -1
- package/build/content-manager.255c3a59.chunk.js +1139 -0
- package/build/{content-type-builder-list-view.79e84b36.chunk.js → content-type-builder-list-view.8d7a3d68.chunk.js} +5 -5
- package/build/content-type-builder.3c8558a5.chunk.js +126 -0
- package/build/cs-json.4b44411c.chunk.js +1 -0
- package/build/{de-json.30e1f35b.chunk.js → de-json.866f8a28.chunk.js} +1 -1
- package/build/{dk-json.e6d9ffa4.chunk.js → dk-json.10f7b1d1.chunk.js} +1 -1
- package/build/email-settings-page.b19f2eb2.chunk.js +10 -0
- package/build/en-json.1997583c.chunk.js +1 -0
- package/build/es-json.ea15c957.chunk.js +1 -0
- package/build/{eu-json.fceecd8b.chunk.js → eu-json.3bc24d60.chunk.js} +1 -1
- package/build/{fr-json.78545ef8.chunk.js → fr-json.e88fbdfd.chunk.js} +1 -1
- package/build/{gu-json.676518f2.chunk.js → gu-json.94f0d242.chunk.js} +1 -1
- package/build/{he-json.ad22e8cc.chunk.js → he-json.f0de8cdb.chunk.js} +1 -1
- package/build/{hi-json.19b51c09.chunk.js → hi-json.df3a7be2.chunk.js} +1 -1
- package/build/{hu-json.f947088f.chunk.js → hu-json.680e6eef.chunk.js} +1 -1
- package/build/{i18n-settings-page.b8d8753e.chunk.js → i18n-settings-page.a6b49eac.chunk.js} +1 -1
- package/build/{id-json.504daa84.chunk.js → id-json.e0d83d41.chunk.js} +1 -1
- package/build/index.html +1 -1
- package/build/{it-json.2fd90f4d.chunk.js → it-json.8be59205.chunk.js} +1 -1
- package/build/{ja-json.c9f12d0b.chunk.js → ja-json.97ee41ba.chunk.js} +1 -1
- package/build/{ko-json.ef463065.chunk.js → ko-json.4cbbf4f2.chunk.js} +1 -1
- package/build/main.7f308c20.js +4322 -0
- package/build/{ml-json.490f666c.chunk.js → ml-json.e3747091.chunk.js} +1 -1
- package/build/ms-json.0eddffd9.chunk.js +1 -0
- package/build/{nl-json.c416295a.chunk.js → nl-json.371a15ee.chunk.js} +1 -1
- package/build/{no-json.1a2258ba.chunk.js → no-json.9b3cd181.chunk.js} +1 -1
- package/build/{pl-json.8cf0c871.chunk.js → pl-json.e535cbce.chunk.js} +1 -1
- package/build/{pt-BR-json.51fab8d0.chunk.js → pt-BR-json.e5fafa46.chunk.js} +1 -1
- package/build/pt-json.ee554a41.chunk.js +1 -0
- package/build/review-workflows-settings.7b4be1b0.chunk.js +63 -0
- package/build/{ru-json.aa5cd123.chunk.js → ru-json.866f0ff1.chunk.js} +1 -1
- package/build/runtime~main.bf374148.js +2 -0
- package/build/{sa-json.f3fa5407.chunk.js → sa-json.7efeb257.chunk.js} +1 -1
- package/build/{sk-json.9ec60d9f.chunk.js → sk-json.7bbeb0af.chunk.js} +1 -1
- package/build/{sso-settings-page.b85ad080.chunk.js → sso-settings-page.ad2143dd.chunk.js} +1 -1
- package/build/{sv-json.c6b0c237.chunk.js → sv-json.dc40951f.chunk.js} +1 -1
- package/build/{th-json.6e68155c.chunk.js → th-json.f664b96d.chunk.js} +1 -1
- package/build/{tr-json.9f41dc08.chunk.js → tr-json.b79eae31.chunk.js} +1 -1
- package/build/uk-json.b7e38370.chunk.js +1 -0
- package/build/upload-settings.eb1a7908.chunk.js +84 -0
- package/build/upload.700e2c84.chunk.js +33 -0
- package/build/{users-advanced-settings-page.fce9908e.chunk.js → users-advanced-settings-page.aae212f2.chunk.js} +1 -1
- package/build/{users-email-settings-page.343d0ad2.chunk.js → users-email-settings-page.8a9b0da1.chunk.js} +1 -1
- package/build/{users-providers-settings-page.e5a9a3f1.chunk.js → users-providers-settings-page.e6be909d.chunk.js} +10 -10
- package/build/{users-roles-settings-page.66312f31.chunk.js → users-roles-settings-page.97d06a80.chunk.js} +3 -3
- package/build/vi-json.ee4c5537.chunk.js +1 -0
- package/build/webhook-edit-page.9eb0f789.chunk.js +75 -0
- package/build/webhook-list-page.66082323.chunk.js +42 -0
- package/build/{zh-Hans-json.9c0eac99.chunk.js → zh-Hans-json.30a18940.chunk.js} +1 -1
- package/build/{zh-json.f88f563d.chunk.js → zh-json.49d84433.chunk.js} +1 -1
- package/ee/admin/hooks/useSettingsMenu/utils/customAdminLinks.js +12 -12
- package/ee/admin/hooks/useSettingsMenu/utils/customGlobalLinks.js +21 -13
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/ReviewWorkflows.js +137 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/actions/index.js +42 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/AddStage/AddStage.js +87 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/AddStage/index.js +1 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stage/Stage.js +90 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stage/index.js +1 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stages.js +77 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/index.js +1 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/constants.js +6 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflows.js +63 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/index.js +3 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/reducer/index.js +102 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/utils/getWorkflowValidationSchema.js +25 -0
- package/ee/admin/pages/SettingsPage/utils/customRoutes.js +16 -2
- package/ee/admin/permissions/customPermissions.js +7 -0
- package/ee/server/bootstrap.js +7 -1
- package/ee/server/config/admin-actions.js +10 -0
- package/ee/server/constants/default-stages.json +14 -0
- package/ee/server/constants/default-workflow.json +1 -0
- package/ee/server/constants/workflows.js +7 -0
- package/ee/server/content-types/index.js +9 -0
- package/ee/server/content-types/workflow/index.js +34 -0
- package/ee/server/content-types/workflow-stage/index.js +36 -0
- package/ee/server/controllers/index.js +2 -0
- package/ee/server/controllers/workflows/index.js +36 -0
- package/ee/server/controllers/workflows/stages/index.js +57 -0
- package/ee/server/index.js +1 -0
- package/ee/server/routes/index.js +87 -0
- package/ee/server/services/index.js +3 -0
- package/ee/server/services/review-workflows/review-workflows.js +54 -0
- package/ee/server/services/review-workflows/stages.js +133 -0
- package/ee/server/services/review-workflows/workflows.js +25 -0
- package/ee/server/utils/index.js +8 -0
- package/ee/server/utils/test.js +11 -0
- package/ee/server/validation/review-workflows.js +17 -0
- package/package.json +13 -13
- package/server/bootstrap.js +0 -2
- package/server/config/admin-actions.js +0 -64
- package/server/content-types/index.js +0 -2
- package/server/controllers/admin.js +0 -55
- package/server/controllers/api-token.js +5 -4
- package/server/controllers/index.js +0 -1
- package/server/register.js +9 -2
- package/server/routes/admin.js +0 -28
- package/server/routes/index.js +0 -2
- package/server/services/api-token.js +3 -2
- package/server/services/constants.js +0 -6
- package/server/services/index.js +0 -1
- package/server/strategies/api-token.js +2 -4
- package/server/strategies/index.js +0 -1
- package/server/utils/index.d.ts +0 -2
- package/server/validation/api-tokens.js +6 -1
- package/webpack.config.js +0 -3
- package/admin/src/pages/SettingsPage/components/Tokens/FormiTokenContainer/LifeSpanInput.js +0 -96
- package/admin/src/pages/SettingsPage/components/Tokens/LifeSpanInput/index.js +0 -98
- package/admin/src/pages/SettingsPage/components/Tokens/Regenerate/index.js +0 -73
- package/admin/src/pages/SettingsPage/components/Tokens/Table/index.js +0 -135
- package/admin/src/pages/SettingsPage/components/Tokens/TokenDescription/index.js +0 -51
- package/admin/src/pages/SettingsPage/components/Tokens/TokenName/index.js +0 -46
- package/admin/src/pages/SettingsPage/components/Tokens/TokenTypeSelect/index.js +0 -69
- package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/FormTransferTokenContainer/index.js +0 -105
- package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/LoadingView/index.js +0 -50
- package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/index.js +0 -201
- package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/utils/getDateOfExpiration.js +0 -16
- package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/utils/index.js +0 -4
- package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/utils/schema.js +0 -10
- package/admin/src/pages/SettingsPage/pages/TransferTokens/ListView/index.js +0 -182
- package/admin/src/pages/SettingsPage/pages/TransferTokens/ListView/utils/tableHeaders.js +0 -48
- package/admin/src/pages/SettingsPage/pages/TransferTokens/ProtectedCreateView/index.js +0 -14
- package/admin/src/pages/SettingsPage/pages/TransferTokens/ProtectedEditView/index.js +0 -14
- package/admin/src/pages/SettingsPage/pages/TransferTokens/ProtectedListView/index.js +0 -12
- package/build/1683.c8aa7b7c.chunk.js +0 -268
- package/build/2743.6d1632f9.chunk.js +0 -45
- package/build/3075.dc3894fe.chunk.js +0 -108
- package/build/3632.0317b618.chunk.js +0 -138
- package/build/4649.15cc0afe.chunk.js +0 -30
- package/build/7259.aa68d808.chunk.js +0 -1
- package/build/7407.883fb1f5.chunk.js +0 -1
- package/build/9707.7290fd92.chunk.js +0 -96
- package/build/Admin_settingsPage.178dc6e3.chunk.js +0 -178
- package/build/admin-app.77a50e1f.chunk.js +0 -112
- package/build/admin-edit-roles-page.446b69dc.chunk.js +0 -1
- package/build/admin-edit-users.2ed69bfd.chunk.js +0 -10
- package/build/admin-users.fc003b10.chunk.js +0 -11
- package/build/api-tokens-list-page.7387102c.chunk.js +0 -16
- package/build/ar-json.932794f7.chunk.js +0 -1
- package/build/content-manager.42b24d46.chunk.js +0 -1139
- package/build/content-type-builder.855db321.chunk.js +0 -126
- package/build/cs-json.79879fb6.chunk.js +0 -1
- package/build/email-settings-page.d1fcc7a3.chunk.js +0 -10
- package/build/en-json.b0748970.chunk.js +0 -1
- package/build/es-json.e275481d.chunk.js +0 -1
- package/build/main.1022ed01.js +0 -4393
- package/build/ms-json.db87d8d3.chunk.js +0 -1
- package/build/pt-json.62927d1e.chunk.js +0 -1
- package/build/runtime~main.84941a97.js +0 -2
- package/build/transfer-tokens-create-page.16e23791.chunk.js +0 -1
- package/build/transfer-tokens-edit-page.3886c973.chunk.js +0 -1
- package/build/transfer-tokens-list-page.e8010a89.chunk.js +0 -16
- package/build/uk-json.b2fcd567.chunk.js +0 -1
- package/build/upload-settings.ef64bbf9.chunk.js +0 -84
- package/build/upload.c5730dfa.chunk.js +0 -33
- package/build/vi-json.f08d7d03.chunk.js +0 -1
- package/build/webhook-edit-page.73e51e64.chunk.js +0 -75
- package/build/webhook-list-page.1134f130.chunk.js +0 -42
- package/server/content-types/transfer-token-permission.js +0 -36
- package/server/content-types/transfer-token.js +0 -66
- package/server/controllers/transfer/index.js +0 -13
- package/server/controllers/transfer/runner.js +0 -24
- package/server/controllers/transfer/token.js +0 -131
- package/server/routes/transfer.js +0 -95
- package/server/services/transfer/index.js +0 -6
- package/server/services/transfer/permission.js +0 -22
- package/server/services/transfer/token.js +0 -409
- package/server/strategies/data-transfer.js +0 -107
- package/server/validation/transfer/index.js +0 -5
- package/server/validation/transfer/token.js +0 -34
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[3278],{50576:function(n){n.exports=JSON.parse('{"Analytics":"Ph\xE2n T\xEDch","Auth.components.Oops.text":"T\xE0i kho\u1EA3n c\u1EE7a b\u1EA1n \u0111\xE3 b\u1ECB kho\xE1","Auth.components.Oops.text.admin":"N\u1EBFu c\xF3 s\u1EF1 nh\u1EA7m l\u1EABn, h\xE3y li\xEAn h\u1EC7 ng\u01B0\u1EDDi qu\u1EA3n tr\u1ECB","Auth.form.button.forgot-password":"G\u1EEDi Email","Auth.form.button.go-home":"QUAY V\u1EC0 TRANG CH\u1EE6","Auth.form.button.login":"\u0110\u0103ng nh\u1EADp","Auth.form.button.login.providers.error":"Kh\xF4ng th\u1EC3 k\u1EBFt n\u1ED1i b\u1EA1n v\u1EDBi d\u1ECBch v\u1EE5 \u0111\xE3 ch\u1ECDn.","Auth.form.button.login.strapi":"\u0110\u0103ng nh\u1EADp v\u1EDBi Strapi","Auth.form.button.password-recovery":"Kh\xF4i ph\u1EE5c m\u1EADt kh\u1EA9u","Auth.form.button.register":"S\u1EB5n s\xE0ng \u0111\u1EC3 b\u1EAFt \u0111\u1EA7u","Auth.form.confirmPassword.label":"Nh\u1EADp l\u1EA1i m\u1EADt kh\u1EA9u","Auth.form.currentPassword.label":"M\u1EADt kh\u1EA9u hi\u1EC7n t\u1EA1i","Auth.form.email.label":"Email","Auth.form.email.placeholder":"kai@doe.com","Auth.form.error.blocked":"T\xE0i kho\u1EA3n c\u1EE7a b\u1EA1n b\u1ECB kh\xF3a b\u1EDFi ng\u01B0\u1EDDi qu\u1EA3n tr\u1ECB.","Auth.form.error.code.provide":"M\xE3 \u0111\u01B0\u1EE3c cung c\u1EA5p kh\xF4ng ch\xEDnh x\xE1c.","Auth.form.error.confirmed":"T\xE0i kho\u1EA3n Email c\u1EE7a b\u1EA1n ch\u01B0a \u0111\u01B0\u1EE3c x\xE1c nh\u1EADn.","Auth.form.error.email.invalid":"Email sai.","Auth.form.error.email.provide":"Vui l\xF2ng cung c\u1EA5p t\xEAn \u0111\u0103ng nh\u1EADp ho\u1EB7c email.","Auth.form.error.email.taken":"Email \u0111\xE3 t\u1ED3n t\u1EA1i.","Auth.form.error.invalid":"\u0110\u1ECBnh danh ho\u1EB7c m\u1EADt kh\u1EA9u sai.","Auth.form.error.params.provide":"Tham s\u1ED1 \u0111\u01B0\u1EE3c cung c\u1EA5p kh\xF4ng ch\xEDnh x\xE1c.","Auth.form.error.password.format":"M\u1EADt kh\u1EA9u c\u1EE7a b\u1EA1n kh\xF4ng th\u1EC3 ch\u1EE9a k\xFD t\u1EF1 `$` h\u01A1n ba l\u1EA7n","Auth.form.error.password.local":"Ng\u01B0\u1EDDi d\xF9ng n\xE0y ch\u01B0a t\u1EEBng \u0111\u1EB7t m\u1EADt kh\u1EA9u c\u1EE5c b\u1ED9, vui l\xF2ng \u0111\u0103ng nh\u1EADp th\xF4ng qua nh\xE0 cung c\u1EA5p \u0111\xE3 d\xF9ng trong l\xFAc t\u1EA1o t\xE0i kho\u1EA3n ban \u0111\u1EA7u","Auth.form.error.password.matching":"M\u1EADt kh\u1EA9u kh\xF4ng kh\u1EDBp.","Auth.form.error.password.provide":"Vui l\xF2ng cung c\u1EA5p m\u1EADt kh\u1EA9u c\u1EE7a b\u1EA1n.","Auth.form.error.ratelimit":"Th\u1EED qu\xE1 nhi\u1EC1u l\u1EA7n, vui l\xF2ng th\u1EED l\u1EA1i sau m\u1ED9t ph\xFAt","Auth.form.error.user.not-exist":"Email n\xE0y ch\u01B0a t\u1ED3n t\u1EA1i.","Auth.form.error.username.taken":"T\xEAn \u0111\u0103ng nh\u1EADp \u0111\xE3 t\u1ED3n t\u1EA1i.","Auth.form.firstname.label":"H\u1ECD","Auth.form.firstname.placeholder":"v.d. Kai","Auth.form.forgot-password.email.label":"Nh\u1EADp email c\u1EE7a b\u1EA1n","Auth.form.forgot-password.email.label.success":"Email \u0111\xE3 g\u1EEDi th\xE0nh c\xF4ng \u0111\u1EBFn","Auth.form.lastname.label":"T\xEAn","Auth.form.lastname.placeholder":"v.d. Doe","Auth.form.password.hide-password":"\u1EA8n m\u1EADt kh\u1EA9u","Auth.form.password.hint":"M\u1EADt kh\u1EA9u ph\u1EA3i ch\u1EE9a \xEDt nh\u1EA5t 8 k\xFD t\u1EF1, 1 vi\u1EBFt hoa, 1 vi\u1EBFt th\u01B0\u1EDDng v\xE0 1 s\u1ED1","Auth.form.password.show-password":"Hi\u1EC3n th\u1ECB password","Auth.form.register.news.label":"C\u1EADp nh\u1EADt cho t\xF4i v\u1EC1 ch\u1EE9c n\u0103ng m\u1EDBi v\xE0 nh\u1EEFng c\u1EA3i thi\u1EC7n s\u1EAFp t\u1EDBi (th\xF4ng qua vi\u1EC7c n\xE0y b\u1EA1n \u0111\xE3 ch\u1EA5p nh\u1EADn {terms} v\xE0 {policy}).","Auth.form.register.subtitle":"Th\xF4ng tin c\u1EE7a b\u1EA1n ch\u1EC9 \u0111\u01B0\u1EE3c s\u1EED d\u1EE5ng \u0111\u1EC3 \u0111\u0103ng nh\u1EADp v\xE0o trang qu\u1EA3n tr\u1ECB. T\u1EA5t c\u1EA3 c\xE1c d\u1EEF li\u1EC7u \u0111\u01B0\u1EE3c l\u01B0u \u1EDF c\u01A1 s\u1EDF d\u1EEF li\u1EC7u c\u1EE7a b\u1EA1n.","Auth.form.rememberMe.label":"Nh\u1EDB t\xF4i","Auth.form.username.label":"T\xEAn \u0111\u0103ng nh\u1EADp","Auth.form.username.placeholder":"Kai Doe","Auth.form.welcome.subtitle":"\u0110\u0103ng nh\u1EADp v\xE0o t\xE0i kho\u1EA3n Strapi c\u1EE7a b\u1EA1n","Auth.form.welcome.title":"Ch\xE0o m\u1EEBng!","Auth.link.forgot-password":"Qu\xEAn m\u1EADt kh\u1EA9u?","Auth.link.ready":"S\u1EB5n s\xE0ng \u0111\u0103ng nh\u1EADp?","Auth.link.signin":"\u0110\u0103ng nh\u1EADp","Auth.link.signin.account":"\u0110\xE3 c\xF3 t\xE0i kho\u1EA3n?","Auth.login.sso.divider":"Ho\u1EB7c \u0111\u0103ng nh\u1EADp v\u1EDBi","Auth.login.sso.loading":"\u0110ang t\u1EA3i c\xE1c d\u1ECBch v\u1EE5 cung c\u1EA5p...","Auth.login.sso.subtitle":"\u0110\u0103ng nh\u1EADp qua SSO","Auth.privacy-policy-agreement.policy":"ch\xEDnh s\xE1ch b\u1EA3o m\u1EADt","Auth.privacy-policy-agreement.terms":"c\xE1c \u0111i\u1EC1u kho\u1EA3n","Auth.reset-password.title":"\u0110\u1EB7t l\u1EA1i m\u1EADt kh\u1EA9u","Content Manager":"Qu\u1EA3n L\xFD N\u1ED9i Dung","Documentation":"T\xE0i li\u1EC7u","Email":"Email","Files Upload":"T\u1EA3i T\xE2p Tin L\xEAn","HomePage.helmet.title":"Trang ch\u1EE7","HomePage.roadmap":"Xem l\u1ED9 tr\xECnh c\u1EE7a ch\xFAng t\xF4i","HomePage.welcome.congrats":"Ch\xFAc m\u1EEBng!","HomePage.welcome.congrats.content":"B\u1EA1n \u0111\xE3 \u0111\u0103ng nh\u1EADp nh\u01B0 l\xE0 ng\u01B0\u1EDDi qu\u1EA3n tr\u1ECB \u0111\u1EA7u ti\xEAn. \u0110\u1EC3 kh\xE1m ph\xE1 nh\u1EEFng t\xEDnh n\u0103ng m\u1EA1nh m\u1EBD \u0111\u01B0\u1EE3c cung c\u1EA5p b\u1EDFi Strapi.","New entry":"B\u1EA3n ghi m\u1EDBi","Password":"M\u1EADt Kh\u1EA9u","Provider":"Nh\xE0 Cung C\u1EA5p","ResetPasswordToken":"C\xE0i L\u1EA1i Chu\u1ED7i Kh\xF3a M\u1EADt Kh\u1EA9u","Role":"Vai tr\xF2","Username":"T\xEAn \u0111\u0103ng nh\u1EADp","Users":"Ng\u01B0\u1EDDi d\xF9ng","Users & Permissions":"Ng\u01B0\u1EDDi d\xF9ng v\xE0 Ph\xE2n quy\u1EC1n","app.components.BlockLink.code":"Code v\xED d\u1EE5","app.components.Button.cancel":"H\u1EE7y b\u1ECF","app.components.ComingSoonPage.comingSoon":"S\u1EAFp c\xF3","app.components.DownloadInfo.download":"\u0110ang t\u1EA3i v\u1EC1","app.components.DownloadInfo.text":"Vi\u1EC7c n\xE0y c\xF3 th\u1EC3 t\u1ED1n m\u1ED9t ph\xFAt. C\u1EA3m \u01A1n b\u1EA1n v\xEC s\u1EF1 ki\xEAn nh\u1EABn.","app.components.EmptyAttributes.title":"Ch\u01B0a c\xF3 tr\u01B0\u1EDDng nh\u1EADp li\u1EC7u n\xE0o","app.components.HomePage.button.blog":"XEM TH\xCAM TR\xCAN BLOG","app.components.HomePage.community":"T\xECm c\u1ED9ng \u0111\u1ED3ng tr\xEAn web","app.components.HomePage.community.content":"Th\u1EA3o lu\u1EADn v\u1EDBi th\xE0nh vi\xEAn, ng\u01B0\u1EDDi \u0111\xF3ng g\xF3p v\xE0 l\u1EADp tr\xECnh vi\xEAn tr\xEAn nh\u1EEFng k\xEAnh kh\xE1c nhau.","app.components.HomePage.welcome":"Ch\xE0o m\u1EEBng b\u1EA1n \u0111\xE3 tham gia \u{1F44B}","app.components.HomePage.welcome.again":"Ch\xE0o m\u1EEBng \u{1F44B}","app.components.HomePage.welcomeBlock.content":"Ch\xFAng t\xF4i h\u1EA1nh ph\xFAc khi c\xF3 b\u1EA1n l\xE0 m\u1ED9t ph\u1EA7n c\u1EE7a c\u1ED9ng \u0111\u1ED3ng. Ch\xFAng t\xF4i li\xEAn t\u1EE5c t\xECm ki\u1EBFm s\u1EF1 ph\u1EA3n h\u1ED3i, do \u0111\xF3 b\u1EA1n c\xF3 th\u1EC3 Li\xEAn h\u1EC7 tr\u1EF1c ti\u1EBFp v\u1EDBi ch\xFAng t\xF4i tr\xEAn ","app.components.HomePage.welcomeBlock.content.again":"Ch\xFAng t\xF4i hi v\u1ECDng b\u1EA1n c\xF3 ti\u1EBFn tri\u1EC3n tr\xEAn d\u1EF1 \xE1n c\u1EE7a b\u1EA1n... B\u1EA1n t\u1EF1 do \u0111\u1ECDc tin t\u1EE9c m\u1EDBi nh\u1EA5t v\u1EC1 Strapi. Ch\xFAng t\xF4i \u0111ang c\u1ED1 g\u1EAFng h\u1EBFt m\u1EE9c \u0111\u1EC3 c\u1EA3i thi\u1EC7n s\u1EA3n ph\u1EA9m d\u1EF1a tr\xEAn ph\u1EA3n h\u1ED3i c\u1EE7a b\u1EA1n.","app.components.HomePage.welcomeBlock.content.issues":"v\u1EA5n \u0111\u1EC1.","app.components.HomePage.welcomeBlock.content.raise":" ho\u1EB7c n\xEAu l\xEAn ","app.components.ImgPreview.hint":"K\xE9o v\xE0 th\u1EA3 t\u1EADp tin c\u1EE7a b\u1EA1n v\xE0o khu v\u1EF1c n\xE0y ho\u1EB7c {browse} \u0111\u1EC3 t\xECm t\u1EADp tin t\u1EA3i l\xEAn","app.components.ImgPreview.hint.browse":"duy\u1EC7t","app.components.InputFile.newFile":"Th\xEAm t\u1EADp tin m\u1EDBi","app.components.InputFileDetails.open":"M\u1EDF ra \u1EDF th\u1EBB m\u1EDBi","app.components.InputFileDetails.originalName":"T\xEAn g\u1ED1c:","app.components.InputFileDetails.remove":"Xo\xE1 t\u1EADp tin n\xE0y","app.components.InputFileDetails.size":"K\xEDch th\u01B0\u1EDBc:","app.components.InstallPluginPage.Download.description":"N\xF3 s\u1EBD t\u1ED1n m\u1ED9t v\xE0i gi\xE2y \u0111\u1EC3 t\u1EA3i v\u1EC1 v\xE0 c\xE0i \u0111\u1EB7t plugin.","app.components.InstallPluginPage.Download.title":"\u0110ang t\u1EA3i v\u1EC1...","app.components.InstallPluginPage.description":"M\u1EDF r\u1ED9ng \u1EE9ng d\u1EE5ng c\u1EE7a b\u1EA1n d\u1EC5 d\xE0ng","app.components.LeftMenuFooter.help":"Gi\xFAp \u0111\u1EE1","app.components.LeftMenuFooter.poweredBy":"Cung c\u1EA5p b\u1EDFi ","app.components.LeftMenuLinkContainer.configuration":"C\xE1c c\u1EA5u h\xECnh","app.components.LeftMenuLinkContainer.general":"Chung","app.components.LeftMenuLinkContainer.noPluginsInstalled":"Ch\u01B0a c\xF3 plugins n\xE0o \u0111\u01B0\u1EE3c c\xE0i \u0111\u1EB7t","app.components.LeftMenuLinkContainer.plugins":"Plugins","app.components.ListPluginsPage.description":"Danh s\xE1ch plugins \u0111\xE3 c\xE0i trong d\u1EF1 \xE1n.","app.components.ListPluginsPage.helmet.title":"Danh s\xE1ch plugins","app.components.Logout.logout":"\u0110\u0103ng xu\u1EA5t","app.components.Logout.profile":"H\u1ED3 s\u01A1","app.components.NotFoundPage.back":"Tr\u1EDF v\u1EC1 trang ch\u1EE7","app.components.NotFoundPage.description":"Kh\xF4ng T\xECm Th\u1EA5y","app.components.Official":"Ch\xEDnh Th\u1EE9c","app.components.Onboarding.label.completed":"% \u0111\xE3 ho\xE0n th\xE0nh","app.components.Onboarding.title":"Videos B\u1EAFt \u0110\u1EA7u","app.components.PluginCard.Button.label.download":"T\u1EA3i v\u1EC1","app.components.PluginCard.Button.label.install":"\u0110\xE3 \u0111\u01B0\u1EE3c c\xE0i \u0111\u1EB7t","app.components.PluginCard.PopUpWarning.install.impossible.autoReload.needed":"Ch\u1EE9c n\u0103ng autoReload kh\xF4ng ho\u1EA1t \u0111\u1ED9ng. Vui l\xF2ng ch\u1EA1y \u1EE9ng d\u1EE5ng c\u1EE7a b\u1EA1n v\u1EDBi `yarn develop`.","app.components.PluginCard.PopUpWarning.install.impossible.confirm":"T\xF4i hi\u1EC3u!","app.components.PluginCard.PopUpWarning.install.impossible.environment":"V\xEC nh\u1EEFng l\xFD do b\u1EA3o m\u1EADt, ch\u1EC9 m\u1ED9t plugin c\xF3 th\u1EC3 \u0111\u01B0\u1EE3c t\u1EA3i v\u1EC1 trong m\xF4i tr\u01B0\u1EDDng ph\xE1t tri\u1EC3n.","app.components.PluginCard.PopUpWarning.install.impossible.title":"T\u1EA3i v\u1EC1 kh\xF4ng kh\u1EA3 thi","app.components.PluginCard.compatible":"T\u01B0\u01A1ng th\xEDch v\u1EDBi \u1EE9ng d\u1EE5ng c\u1EE7a b\u1EA1n","app.components.PluginCard.compatibleCommunity":"T\u01B0\u01A1ng th\xEDch v\u1EDBi c\u1ED9ng \u0111\u1ED3ng","app.components.PluginCard.more-details":"Th\xEAm chi ti\u1EBFt","app.components.listPlugins.button":"Th\xEAm m\u1EDBi Plugin","app.components.listPlugins.title.none":"Ch\u01B0a c\xF3 plugins n\xE0o \u0111\u01B0\u1EE3c c\xE0i \u0111\u1EB7t","app.components.listPluginsPage.deletePlugin.error":"M\u1ED9t l\u1ED7i x\u1EA3y ra trong khi g\u1EE1 b\u1ECF plugin","app.containers.App.notification.error.init":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi g\u1EEDi y\xEAu c\u1EA7u \u0111\u1EBFn API","app.utils.SelectOption.defaultMessage":" ","app.utils.defaultMessage":" ","app.utils.placeholder.defaultMessage":" ","components.AutoReloadBlocker.description":"Ch\u1EA1y Strapi v\u1EDBi m\u1ED9t trong c\xE1c l\u1EC7nh sau:","components.AutoReloadBlocker.header":"T\xEDnh n\u0103ng T\u1EA3i l\u1EA1i b\u1ECB b\u1EAFt bu\u1ED9c cho plugin n\xE0y.","components.ErrorBoundary.title":"\u0110i\u1EC1u g\xEC \u0111\xF3 kh\xF4ng \u1ED5n...","components.Input.error.attribute.key.taken":"Gi\xE1 tr\u1ECB n\xE0y \u0111\xE3 t\u1ED3n t\u1EA1i","components.Input.error.attribute.sameKeyAndName":"Kh\xF4ng th\u1EC3 b\u1EB1ng nhau","components.Input.error.attribute.taken":"Tr\u01B0\u1EDDng nh\u1EADp li\u1EC7u n\xE0y \u0111\xE3 t\u1ED3n t\u1EA1i","components.Input.error.contentTypeName.taken":"T\xEAn n\xE0y \u0111\xE3 t\u1ED3n t\u1EA1i","components.Input.error.custom-error":"{errorMessage} ","components.Input.error.password.noMatch":"M\u1EADt kh\u1EA9u kh\xF4ng kh\u1EDBp","components.Input.error.validation.email":"Email kh\xF4ng h\u1EE3p l\u1EC7","components.Input.error.validation.json":"\u0110\xE2y kh\xF4ng ph\u1EA3i l\xE0 \u0111\u1ECBnh d\u1EA1ng JSON","components.Input.error.validation.max":"Gi\xE1 tr\u1ECB qu\xE1 cao.","components.Input.error.validation.maxLength":"Gi\xE1 tr\u1ECB qu\xE1 d\xE0i.","components.Input.error.validation.min":"Gi\xE1 tr\u1ECB qu\xE1 th\u1EA5p.","components.Input.error.validation.minLength":"Gi\xE1 tr\u1ECB qu\xE1 ng\u1EAFn.","components.Input.error.validation.minSupMax":"Kh\xF4ng th\u1EC3 l\xE0 tr\xEAn m\u0169","components.Input.error.validation.regex":"Gi\xE1 tr\u1ECB kh\xF4ng kh\u1EDBi v\u1EDBi regex.","components.Input.error.validation.required":"Gi\xE1 tr\u1ECB n\xE0y b\u1EAFt bu\u1ED9c.","components.InputSelect.option.placeholder":"Ch\u1ECDn \u1EDF \u0111\xE2y","components.ListRow.empty":"Kh\xF4ng c\xF3 d\u1EEF li\u1EC7u \u0111\u1EC3 hi\u1EC3n th\u1ECB.","components.OverlayBlocker.description":"B\u1EA1n \u0111ang d\xF9ng m\u1ED9t t\xEDnh n\u0103ng m\xE0 n\xF3 c\u1EA7n ph\u1EA3i kh\u1EDFi \u0111\u1ED9ng l\u1EA1i m\xE1y ch\u1EE7. Vui l\xF2ng ch\u1EDD cho m\xE1y ch\u1EE7 kh\u1EDFi \u0111\u1ED9ng xong.","components.OverlayBlocker.description.serverError":"M\xE1y ch\u1EE7 n\xEAn \u0111\u01B0\u1EE3c kh\u1EDFi \u0111\u1ED9ng l\u1EA1i, vui l\xF2ng ki\u1EC3m tra nh\u1EADt k\xFD c\u1EE7a b\u1EA1n trong c\u1EEDa s\u1ED5 l\u1EC7nh","components.OverlayBlocker.title":"\u0110ang \u0111\u1EE3i kh\u1EDFi \u0111\u1ED9ng l\u1EA1i...","components.OverlayBlocker.title.serverError":"Vi\u1EC7c kh\u1EDFi \u0111\u1ED9ng l\u1EA1i t\u1ED1n nhi\u1EC1u th\u1EDDi gian h\u01A1n mong \u0111\u1EE3i","components.PageFooter.select":"b\u1EA3n ghi tr\xEAn trang","components.ProductionBlocker.description":"V\xEC l\xFD do an to\xE0n ch\xFAng t\xF4i ph\u1EA3i v\xF4 hi\u1EC7u ho\xE1 plugin trong c\xE1c m\xF4i tr\u01B0\u1EDDng kh\xE1c","components.ProductionBlocker.header":"Plugin n\xE0y ch\u1EC9 hi\u1EC7u l\u1EE9c trong m\xF4i tr\u01B0\u1EDDng ph\xE1t tri\u1EC3n","components.Wysiwyg.collapse":"Thu l\u1EA1i","components.Wysiwyg.selectOptions.H1":"Ti\xEAu \u0111\u1EC1 H1","components.Wysiwyg.selectOptions.H2":"Ti\xEAu \u0111\u1EC1 H2","components.Wysiwyg.selectOptions.H3":"Ti\xEAu \u0111\u1EC1 H3","components.Wysiwyg.selectOptions.H4":"Ti\xEAu \u0111\u1EC1 H4","components.Wysiwyg.selectOptions.H5":"Ti\xEAu \u0111\u1EC1 H5","components.Wysiwyg.selectOptions.H6":"Ti\xEAu \u0111\u1EC1 H6","components.Wysiwyg.selectOptions.title":"Th\xEAm m\u1ED9t ti\xEAu \u0111\u1EC1","components.WysiwygBottomControls.charactersIndicators":"k\xFD t\u1EF1","components.WysiwygBottomControls.fullscreen":"M\u1EDF r\u1ED9ng","components.WysiwygBottomControls.uploadFiles":"K\xE9o v\xE0 th\u1EA3 c\xE1c t\u1EADp tin, d\xE1n t\u1EEB b\u1ED9 nh\u1EDB t\u1EA1m hay {browse}.","components.WysiwygBottomControls.uploadFiles.browse":"ch\u1ECDn t\u1EC7p","components.popUpWarning.message":"B\u1EA1n c\xF3 ch\u1EAFc l\xE0 b\u1EA1n mu\u1ED1n xo\xE1 n\xF3?","components.popUpWarning.title":"Vui l\xF2ng x\xE1c nh\u1EADn","content-manager.EditRelations.title":"D\u1EEF Li\u1EC7u Quan H\u1EC7","content-manager.components.AddFilterCTA.add":"L\u1ECDc","content-manager.components.AddFilterCTA.hide":"L\u1ECDc","content-manager.components.DraggableAttr.edit":"Nh\u1EA5n \u0111\u1EC3 ch\u1EC9nh s\u1EEDa","content-manager.components.EmptyAttributesBlock.button":"\u0110\u1EBFn trang c\xE0i \u0111\u1EB7t","content-manager.components.EmptyAttributesBlock.description":"B\u1EA1n c\xF3 th\u1EC3 thay \u0111\u1ED5i c\xE0i \u0111\u1EB7t c\u1EE7a b\u1EA1n","content-manager.components.FilterOptions.button.apply":"\xC1p d\u1EE5ng","content-manager.components.FiltersPickWrapper.PluginHeader.actions.apply":"\xC1p d\u1EE5ng","content-manager.components.FiltersPickWrapper.PluginHeader.actions.clearAll":"X\xF3a t\u1EA5t c\u1EA3","content-manager.components.FiltersPickWrapper.PluginHeader.description":"C\xE0i \u0111\u1EB7t c\xE1c \u0111i\u1EC1u ki\u1EC7n \u0111\u1EC3 \xE1p d\u1EE5ng cho vi\u1EC7c l\u1ECDc c\xE1c b\u1EA3n ghi","content-manager.components.FiltersPickWrapper.PluginHeader.title.filter":"C\xE1c b\u1ED9 l\u1ECDc","content-manager.components.FiltersPickWrapper.hide":"\u1EA8n \u0111i","content-manager.components.LimitSelect.itemsPerPage":"S\u1ED1 l\u01B0\u1EE3ng b\u1EA3n ghi trong trang","content-manager.components.Search.placeholder":"T\xECm m\u1ED9t b\u1EA3n ghi...","content-manager.components.TableDelete.delete":"X\xF3a t\u1EA5t c\u1EA3","content-manager.components.TableDelete.deleteSelected":"X\xF3a \u0111\xE3 ch\u1ECDn","content-manager.components.TableEmpty.withFilters":"Kh\xF4ng c\xF3 {contentType} v\u1EDBi b\u1ED9 l\u1ECDc \u0111\u01B0\u1EE3c d\xF9ng","content-manager.components.TableEmpty.withSearch":"Kh\xF4ng c\xF3 {contentType} t\u01B0\u01A1ng \u1EE9ng v\u1EDBi t\xECm ki\u1EBFm ({search})...","content-manager.components.TableEmpty.withoutFilter":"Kh\xF4ng c\xF3 {contentType}...","content-manager.containers.Edit.Link.Layout":"C\u1EA5u h\xECnh b\u1ED1 c\u1EE5c","content-manager.containers.Edit.addAnItem":"Th\xEAm m\u1ED9t b\u1EA3n ghi...","content-manager.containers.Edit.clickToJump":"Nh\u1EA5n \u0111\u1EC3 nh\u1EA3y v\xE0o b\u1EA3n ghi","content-manager.containers.Edit.delete":"X\xF3a","content-manager.containers.Edit.editing":"\u0110\u0103ng s\u1EEDa...","content-manager.containers.Edit.pluginHeader.title.new":"T\u1EA1o m\u1ED9t B\u1EA3n ghi","content-manager.containers.Edit.reset":"L\xE0m l\u1EA1i","content-manager.containers.Edit.returnList":"Tr\u1EDF v\u1EC1 danh s\xE1ch","content-manager.containers.Edit.seeDetails":"Chi ti\u1EBFt","content-manager.containers.Edit.submit":"L\u01B0u","content-manager.containers.EditView.notification.errors":"B\u1EA3ng nh\u1EADp li\u1EC7u c\xF3 v\xE0i l\u1ED7i","content-manager.containers.Home.introduction":"\u0110\u1EC3 ch\u1EC9nh s\u1EEDa c\xE1c b\u1EA3n ghi c\u1EE7a b\u1EA1n, \u0111i \u0111\u1EBFn li\xEAn k\u1EBFt \u1EDF menu b\xEAn tr\xE1i. Plugin n\xE0y ch\u01B0a c\xF3 c\xE1ch th\xEDch h\u1EE3p \u0111\u1EC3 ch\u1EC9nh s\u1EEDa c\xE1c c\xE0i \u0111\u1EB7t v\xE0 n\xF3 v\u1EABn \u0111ang \u0111\u01B0\u1EE3c ph\xE1t tri\u1EC3n.","content-manager.containers.Home.pluginHeaderDescription":"Qu\u1EA3n l\xFD c\xE1c b\u1EA3n ghi th\xF4ng qua m\u1ED9t giao di\u1EC7n m\u1EA1nh v\xE0 \u0111\u1EB9p.","content-manager.containers.Home.pluginHeaderTitle":"Qu\u1EA3n L\xFD N\u1ED9i Dung","content-manager.containers.List.errorFetchRecords":"L\u1ED7i","content-manager.containers.ListPage.displayedFields":"C\xE1c tr\u01B0\u1EDDng \u0111\xE3 \u0111\u01B0\u1EE3c tr\xECnh b\xE0y","content-manager.containers.SettingPage.attributes":"C\xE1c tr\u01B0\u1EDDng thu\u1ED9c t\xEDnh","content-manager.containers.SettingPage.attributes.description":"\u0110\u1ECBnh ngh\u0129a th\u1EE9 t\u1EF1 c\xE1c thu\u1ED9c t\xEDnh","content-manager.containers.SettingPage.editSettings.description":"K\xE9o & th\u1EA3 c\xE1c tr\u01B0\u1EDDng \u0111\u1EC3 x\xE2y d\u1EF1ng b\u1ED1 c\u1EE5c","content-manager.containers.SettingPage.editSettings.entry.title":"T\xEAn b\u1EA3n ghi","content-manager.containers.SettingPage.editSettings.entry.title.description":"C\xE0i \u0111\u1EB7t tr\u01B0\u1EDDng \u0111\u01B0\u1EE3c tr\xECnh b\xE0y trong b\u1EA3n ghi c\u1EE7a b\u1EA1n","content-manager.containers.SettingPage.editSettings.title":"Ch\u1EC9nh s\u1EEDa hi\u1EC3n th\u1ECB (c\xE1c c\xE0i \u0111\u1EB7t)","content-manager.containers.SettingPage.layout":"B\u1ED1 c\u1EE5c","content-manager.containers.SettingPage.listSettings.title":"Hi\u1EC3n th\u1ECB danh s\xE1ch (c\xE1c c\xE0i \u0111\u1EB7t)","content-manager.containers.SettingPage.settings":"C\xE1c c\xE0i \u0111\u1EB7t","content-manager.containers.SettingViewModel.pluginHeader.title":"Qu\u1EA3n L\xFD N\u1ED9i Dung - {name}","content-manager.containers.SettingsPage.Block.contentType.description":"C\u1EA5u h\xECnh c\xE1c c\xE0i \u0111\u1EB7t ri\xEAng","content-manager.containers.SettingsPage.Block.generalSettings.title":"Chung","content-manager.containers.SettingsView.list.title":"C\xE1c c\u1EA5u h\xECnh v\u1EC1 Tr\xECnh b\xE0y","content-manager.emptyAttributes.title":"Ch\u01B0a c\xF3 tr\u01B0\u1EDDng n\xE0o h\u1EBFt","content-manager.error.attribute.key.taken":"Gi\xE1 tr\u1ECB n\xE0y \u0111\xE3 t\u1ED3n t\u1EA1i","content-manager.error.attribute.sameKeyAndName":"Kh\xF4ng th\u1EC3 b\u1EB1ng nhau","content-manager.error.attribute.taken":"T\xEAn tr\u01B0\u1EDDng n\xE0y \u0111\xE3 t\u1ED3n t\u1EA1i","content-manager.error.contentTypeName.taken":"T\xEAn n\xE0y \u0111\xE3 t\u1ED3n t\u1EA1i","content-manager.error.model.fetch":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi l\u1EA5y v\u1EC1 c\u1EA5u h\xECnh n\u1ED9i dung.","content-manager.error.record.create":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi t\u1EA1o b\u1EA3n ghi.","content-manager.error.record.delete":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi xo\xE1 b\u1EA3n ghi.","content-manager.error.record.fetch":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi l\u1EA5y v\u1EC1 b\u1EA3n ghi.","content-manager.error.record.update":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi c\u1EADp nh\u1EADt b\u1EA3n ghi.","content-manager.error.records.count":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi l\u1EA5y v\u1EC1 s\u1ED1 l\u01B0\u1EE3ng b\u1EA3n ghi.","content-manager.error.records.fetch":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi l\u1EA5y v\u1EC1 c\xE1c b\u1EA3n ghi.","content-manager.error.schema.generation":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi qu\xE1 tr\xECnh t\u1EA1o ra l\u01B0\u1EE3c \u0111\u1ED3.","content-manager.error.validation.json":"\u0110\xE2y kh\xF4ng ph\u1EA3i l\xE0 \u0111\u1ECBnh d\u1EA1ng JSON","content-manager.error.validation.max":"Gi\xE1 tr\u1ECB qu\xE1 cao.","content-manager.error.validation.maxLength":"Gi\xE1 tr\u1ECB qu\xE1 d\xE0i.","content-manager.error.validation.min":"Gi\xE1 tr\u1ECB qu\xE1 th\u1EA5p.","content-manager.error.validation.minLength":"Gi\xE1 tr\u1ECB qu\xE1 ng\u1EAFn.","content-manager.error.validation.minSupMax":"Kh\xF4ng th\u1EC3 l\xE0 tr\xEAn m\u0169","content-manager.error.validation.regex":"Gi\xE1 tr\u1ECB kh\xF4ng kh\u1EDBi v\u1EDBi regex.","content-manager.error.validation.required":"Gi\xE1 tr\u1ECB n\xE0y b\u1EAFt bu\u1ED9c.","content-manager.form.Input.bulkActions":"K\xEDch ho\u1EA1t ho\u1EA1t \u0111\u1ED9ng g\u1ED9p","content-manager.form.Input.defaultSort":"Thu\u1ED9c t\xEDnh s\u1EAFp x\u1EBFp m\u1EB7c \u0111\u1ECBnh","content-manager.form.Input.description":"M\xF4 t\u1EA3","content-manager.form.Input.description.placeholder":"T\xEAn hi\u1EC3n th\u1ECB trong h\u1ED3 s\u01A1","content-manager.form.Input.editable":"Tr\u01B0\u1EDDng ch\u1EC9nh s\u1EEDa \u0111\u01B0\u1EE3c","content-manager.form.Input.filters":"K\xEDch ho\u1EA1t c\xE1c b\u1ED9 l\u1ECDc","content-manager.form.Input.label":"Nh\xE3n","content-manager.form.Input.label.inputDescription":"Gi\xE1 tr\u1ECB n\xE0y ghi \u0111\xE8 l\xEAn nh\xE3n \u0111\u01B0\u1EE3c tr\xECnh b\xE0y trong ph\u1EA7n \u0111\u1EA7u c\u1EE7a b\u1EA3ng","content-manager.form.Input.pageEntries":"B\u1EA3n ghi trong trang","content-manager.form.Input.placeholder":"Ch\u1ED7 ch\u1EDD gi\xE1 tr\u1ECB","content-manager.form.Input.placeholder.placeholder":"Gi\xE1 tr\u1ECB tuy\u1EC7t v\u1EDDi c\u1EE7a t\xF4i","content-manager.form.Input.search":"K\xEDch ho\u1EA1t t\xECm ki\u1EBFm","content-manager.form.Input.search.field":"K\xEDch ho\u1EA1t t\xECm ki\u1EBFm cho tr\u01B0\u1EDDng n\xE0y","content-manager.form.Input.sort.field":"K\xEDch ho\u1EA1t s\u1EAFp x\u1EBFp tr\xEAn tr\u01B0\u1EDDng n\xE0y","content-manager.form.Input.wysiwyg":"Tr\xECnh b\xE0y nh\u01B0 l\xE0 WYSIWYG","content-manager.global.displayedFields":"C\xE1c Tr\u01B0\u1EDDng \u0110\xE3 \u0110\u01B0\u1EE3c Tr\xECnh B\xE0y","content-manager.groups":"Nh\xF3m","content-manager.groups.numbered":"Nh\xF3m ({number})","content-manager.notification.error.displayedFields":"B\u1EA1n c\u1EA7n tr\xECnh b\xE0y \xEDt nh\u1EA5t m\u1ED9t tr\u01B0\u1EDDng","content-manager.notification.error.relationship.fetch":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi l\u1EA5y v\u1EC1 m\u1ED1i quan h\u1EC7.","content-manager.notification.info.SettingPage.disableSort":"B\u1EA1n c\u1EA7n c\xF3 m\u1ED9t thu\u1ED9c t\xEDnh \u0111\u01B0\u1EE3c ph\xE9p s\u1EAFp x\u1EBFp","content-manager.notification.info.minimumFields":"B\u1EA1n c\u1EA7n hi\u1EC3n th\u1ECB \xEDt nh\u1EA5t m\u1ED9t tr\u01B0\u1EDDng","content-manager.notification.upload.error":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi t\u1EA3i l\xEAn c\xE1c t\u1EADp tin c\u1EE7a b\u1EA1n","content-manager.pageNotFound":"Kh\xF4ng T\xECm Th\u1EA5y Trang","content-manager.plugin.description.long":"C\xE1ch nhanh \u0111\u1EC3 xem, s\u1EEDa v\xE0 xo\xE1 d\u1EEF li\u1EC7u trong c\u01A1 s\u1EDF d\u1EEF li\u1EC7u c\u1EE7a b\u1EA1n.","content-manager.plugin.description.short":"C\xE1ch nhanh \u0111\u1EC3 xem, s\u1EEDa v\xE0 xo\xE1 d\u1EEF li\u1EC7u trong c\u01A1 s\u1EDF d\u1EEF li\u1EC7u c\u1EE7a b\u1EA1n.","content-manager.popUpWarning.bodyMessage.contentType.delete":"B\u1EA1n c\xF3 ch\u1EAFc l\xE0 mu\u1ED1n xo\xE1 b\u1EA3n ghi n\xE0y kh\xF4ng?","content-manager.popUpWarning.bodyMessage.contentType.delete.all":"B\u1EA1n c\xF3 ch\u1EAFc l\xE0 mu\u1ED1n xo\xE1 c\xE1c b\u1EA3n ghi n\xE0y kh\xF4ng?","content-manager.popUpWarning.warning.cancelAllSettings":"B\u1EA1n c\xF3 ch\u1EAFc l\xE0 mu\u1ED1n h\u1EE7y b\u1ECF c\xE1c thay \u0111\u1ED5i c\u1EE7a b\u1EA1n?","content-manager.popUpWarning.warning.updateAllSettings":"N\xF3 s\u1EBD thay \u0111\u1ED5i t\u1EA5t c\u1EA3 c\xE0i \u0111\u1EB7t c\u1EE7a b\u1EA1n","content-manager.success.record.delete":"\u0110\xE3 xo\xE1","content-manager.success.record.save":"\u0110\xE3 l\u01B0u","form.button.done":"Ho\xE0n th\xE0nh","notification.error":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra","notification.error.layout":"Kh\xF4ng th\u1EC3 kh\xF4i ph\u1EE5c","notification.form.error.fields":"B\u1EA3ng nh\u1EADp li\u1EC7u c\xF3 v\xE0i l\u1ED7i","request.error.model.unknown":"C\u1EA5u tr\xFAc n\xE0y kh\xF4ng t\u1ED3n t\u1EA1i"}')}}]);
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5162],{41513:function(re,x,t){t.d(x,{Z:function(){return We}});var e=t(32735),n=t(88425),D=t(27649),O=t(84968),S=t(5141),f=t(8888),u=t(60216),i=t.n(u),X=t(29439),m=t(66456),$=t(74512);function Te(a){return(0,$.jsx)("svg",{width:"1em",height:"1em",viewBox:"0 0 8 8",fill:"none",xmlns:"http://www.w3.org/2000/svg",...a,children:(0,$.jsx)("path",{d:"M2 .93c0-.4.45-.63.78-.41l4.6 3.06c.3.2.3.64 0 .84l-4.6 3.06A.5.5 0 012 7.07V.93z",fill:"#212134"})})}var ye=t(28356),Me=t(17e3),le=t(72850),Pe=t(41415),B=t(27677),ue=t(10369),Q=t(15335),U=t(5803),w=t(83281),j=t(5636),xe=t(76437),K=t(49372),Oe=t(83292),Ae=t(44426),G=t(8284),me=t(23940),s=t.n(me);const I=({disabledEvents:a,name:r,events:l,inputValue:o,handleChange:g,handleChangeAll:h})=>{const c=l.filter(M=>!a.includes(M)),p=o.length===c.length,E=o.length>0,v=({target:{name:M}})=>{h({target:{name:M,value:!p}})};return e.createElement("tr",null,e.createElement("td",null,e.createElement(G.X,{indeterminate:E&&!p,"aria-label":"Select all entries",name:r,onChange:v,value:p},s()(r))),l.map(M=>e.createElement("td",{key:M},e.createElement(Ae.C,{disabled:a.includes(M),"aria-label":M,name:M,value:o.includes(M),onValueChange:L=>g({target:{name:M,value:L}})}))))};I.defaultProps={disabledEvents:[],events:[],inputValue:[],handleChange(){},handleChangeAll(){}},I.propTypes={disabledEvents:i().array,events:i().array,inputValue:i().array,handleChange:i().func,handleChangeAll:i().func,name:i().string.isRequired};var k=I,T=a=>a.reduce((r,l)=>{const o=l.split(".")[0];return r[o]||(r[o]=[]),r[o].push(l),r},{});const oe=Oe.default.table`
|
|
2
|
-
td {
|
|
3
|
-
height: ${52/16}rem;
|
|
4
|
-
width: 10%;
|
|
5
|
-
vertical-align: middle;
|
|
6
|
-
text-align: center;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
tbody tr:nth-child(odd) {
|
|
10
|
-
background: ${({theme:a})=>a.colors.neutral100};
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
tbody tr td:first-child {
|
|
14
|
-
padding-left: ${({theme:a})=>a.spaces[7]};
|
|
15
|
-
}
|
|
16
|
-
`,se={headers:{default:[{id:"Settings.webhooks.events.create",defaultMessage:"Create"},{id:"Settings.webhooks.events.update",defaultMessage:"Update"},{id:"app.utils.delete",defaultMessage:"Delete"}],draftAndPublish:[{id:"Settings.webhooks.events.create",defaultMessage:"Create"},{id:"Settings.webhooks.events.update",defaultMessage:"Update"},{id:"app.utils.delete",defaultMessage:"Delete"},{id:"app.utils.publish",defaultMessage:"Publish"},{id:"app.utils.unpublish",defaultMessage:"Unpublish"}]},events:{default:{entry:["entry.create","entry.update","entry.delete"],media:["media.create","media.update","media.delete"]},draftAndPublish:{entry:["entry.create","entry.update","entry.delete","entry.publish","entry.unpublish"],media:["media.create","media.update","media.delete"]}}},ie=({isDraftAndPublish:a})=>{const r=a?se.headers.draftAndPublish:se.headers.default,l=a?se.events.draftAndPublish:se.events.default,{formatMessage:o}=(0,j.useIntl)(),{values:g,handleChange:h}=(0,w.useFormikContext)(),c="events",p=g.events,E=[],v=T(p),M=({target:{name:b,value:ae}})=>{let F=new Set(p);ae?F.add(b):F.delete(b),h({target:{name:c,value:Array.from(F)}})},L=({target:{name:b,value:ae}})=>{let F=new Set(p);ae?l[b].forEach(z=>{E.includes(z)||F.add(z)}):l[b].forEach(z=>F.delete(z)),h({target:{name:c,value:Array.from(F)}})};return e.createElement(B.K,{spacing:1},e.createElement(xe.Q,null,o({id:"Settings.webhooks.form.events",defaultMessage:"Events"})),e.createElement(oe,null,e.createElement("thead",null,e.createElement("tr",null,e.createElement("td",null),r.map(b=>b==="app.utils.publish"||b==="app.utils.unpublish"?e.createElement("td",{key:b.id,title:o({id:"Settings.webhooks.event.publish-tooltip",defaultMessage:"This event only exists for content with draft & publish enabled"})},e.createElement(K.Z,{variant:"sigma",textColor:"neutral600"},o(b))):e.createElement("td",{key:b.id},e.createElement(K.Z,{variant:"sigma",textColor:"neutral600"},o(b)))))),e.createElement("tbody",null,Object.keys(l).map(b=>e.createElement(k,{disabledEvents:E,key:b,name:b,events:l[b],inputValue:v[b],handleChange:M,handleChangeAll:L})))))};ie.propTypes={isDraftAndPublish:i().bool.isRequired};var De=ie,ee=t(19406),J=t(87933),ge=t(7563),ke=t(42623),$e=t(90333),pe=["A-IM","Accept","Accept-Charset","Accept-Encoding","Accept-Language","Accept-Datetime","Access-Control-Request-Method","Access-Control-Request-Headers","Authorization","Cache-Control","Connection","Content-Length","Content-Type","Cookie","Date","Expect","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Max-Forwards","Origin","Pragma","Proxy-Authorization","Range","Referer","TE","User-Agent","Upgrade","Via","Warning"];const fe=({name:a,onChange:r,value:l,...o})=>{const[g,h]=(0,e.useState)(l?[...pe,l]:pe),c=E=>{r({target:{name:a,value:E}})},p=E=>{h(v=>[...v,E]),r({target:{name:a,value:E}})};return e.createElement(ke.X,{...o,onChange:c,onCreateOption:p,placeholder:"",value:l},g.map(E=>e.createElement($e.O,{value:E,key:E},E)))};fe.defaultProps={value:void 0},fe.propTypes={name:i().string.isRequired,onChange:i().func.isRequired,value:i().string};var Se=fe,Ke=()=>{const{formatMessage:a}=(0,j.useIntl)(),{values:r,errors:l}=(0,w.useFormikContext)();return e.createElement(B.K,{spacing:1},e.createElement(xe.Q,null,a({id:"Settings.webhooks.form.headers",defaultMessage:"Headers"})),e.createElement(le.x,{padding:8,background:"neutral100",hasRadius:!0},e.createElement(w.FieldArray,{validateOnChange:!1,name:"headers",render:({push:o,remove:g})=>e.createElement(Q.r,{gap:4},r.headers?.map((h,c)=>e.createElement(e.Fragment,{key:c},e.createElement(U.P,{col:6},e.createElement(w.Field,{as:Se,name:`headers.${c}.key`,"aria-label":`row ${c+1} key`,label:a({id:"Settings.webhooks.key",defaultMessage:"Key"}),error:l.headers?.[c]?.key&&a({id:l.headers[c]?.key,defaultMessage:l.headers[c]?.key})})),e.createElement(U.P,{col:6},e.createElement(J.k,{alignItems:"flex-end"},e.createElement(le.x,{style:{flex:1}},e.createElement(w.Field,{as:ue.o,"aria-label":`row ${c+1} value`,label:a({id:"Settings.webhooks.value",defaultMessage:"Value"}),name:`headers.${c}.value`,error:l.headers?.[c]?.value&&a({id:l.headers[c]?.value,defaultMessage:l.headers[c]?.value})})),e.createElement(J.k,{paddingLeft:2,style:{alignSelf:"center"},paddingTop:l.headers?.[c]?.value?0:5},e.createElement(n.RemoveRoundedButton,{onClick:()=>r.headers.length!==1&&g(c),label:a({id:"Settings.webhooks.headers.remove",defaultMessage:"Remove header row {number}"},{number:c+1})})))))),e.createElement(U.P,{col:12},e.createElement(ge.A,{type:"button",onClick:()=>{o({key:"",value:""})},startIcon:e.createElement(ee.default,null)},a({id:"Settings.webhooks.create.header",defaultMessage:"Create new header"}))))})))},he=t(35331),Z=t(27169);const de=Oe.default.svg(({theme:a,color:r})=>`
|
|
17
|
-
width: ${12/16}rem;
|
|
18
|
-
height: ${12/16}rem;
|
|
19
|
-
|
|
20
|
-
path {
|
|
21
|
-
fill: ${a.colors[r]};
|
|
22
|
-
}
|
|
23
|
-
`),Ee=({isPending:a,statusCode:r})=>{const{formatMessage:l}=(0,j.useIntl)();return a?e.createElement(B.K,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement(de,{as:Z.Z}),e.createElement(K.Z,null,l({id:"Settings.webhooks.trigger.pending",defaultMessage:"pending"}))):r>=200&&r<300?e.createElement(B.K,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement(de,{as:m.Z,color:"success700"}),e.createElement(K.Z,null,l({id:"Settings.webhooks.trigger.success",defaultMessage:"success"}))):r>=300?e.createElement(B.K,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement(de,{as:he.default,color:"danger700"}),e.createElement(K.Z,null,l({id:"Settings.error",defaultMessage:"error"})," ",r)):null};Ee.propTypes={isPending:i().bool.isRequired,statusCode:i().number},Ee.defaultProps={statusCode:void 0};const P=({statusCode:a,message:r})=>{const{formatMessage:l}=(0,j.useIntl)();return a>=200&&a<300?e.createElement(J.k,{justifyContent:"flex-end"},e.createElement(K.Z,{textColor:"neutral600",ellipsis:!0},l({id:"Settings.webhooks.trigger.success.label",defaultMessage:"Trigger succeeded"}))):a>=300?e.createElement(J.k,{justifyContent:"flex-end"},e.createElement(J.k,{maxWidth:(0,n.pxToRem)(250),justifyContent:"flex-end",title:r},e.createElement(K.Z,{ellipsis:!0,textColor:"neutral600"},r))):null};P.propTypes={statusCode:i().number,message:i().string},P.defaultProps={statusCode:void 0,message:void 0};const ve=({onCancel:a})=>{const{formatMessage:r}=(0,j.useIntl)();return e.createElement(J.k,{justifyContent:"flex-end"},e.createElement("button",{onClick:a,type:"button"},e.createElement(B.K,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement(K.Z,{textColor:"neutral400"},r({id:"Settings.webhooks.trigger.cancel",defaultMessage:"cancel"})),e.createElement(de,{as:he.default,color:"neutral400"}))))};ve.propTypes={onCancel:i().func.isRequired};const be=({isPending:a,onCancel:r,response:l})=>{const{statusCode:o,message:g}=l,{formatMessage:h}=(0,j.useIntl)();return e.createElement(le.x,{background:"neutral0",padding:5,shadow:"filterShadow",hasRadius:!0},e.createElement(Q.r,{gap:4,style:{alignItems:"center"}},e.createElement(U.P,{col:3},e.createElement(K.Z,null,h({id:"Settings.webhooks.trigger.test",defaultMessage:"Test-trigger"}))),e.createElement(U.P,{col:3},e.createElement(Ee,{isPending:a,statusCode:o})),e.createElement(U.P,{col:6},a?e.createElement(ve,{onCancel:r}):e.createElement(P,{statusCode:o,message:g}))))};be.defaultProps={isPending:!1,onCancel(){},response:{}},be.propTypes={isPending:i().bool,onCancel:i().func,response:i().object};var Fe=be,y=t(5173);const Ie=/(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/,N=/(^$)|((https?:\/\/.*)(d*)\/?(.*))/;var R=y.Ry().shape({name:y.Z_(n.translatedErrors.string).required(n.translatedErrors.required).matches(Ie,n.translatedErrors.regex),url:y.Z_(n.translatedErrors.string).required(n.translatedErrors.required).matches(N,n.translatedErrors.regex),headers:y.Vo(a=>{let r=y.IX();if(a.length===1){const{key:l,value:o}=a[0];if(!l&&!o)return r}return r.of(y.Ry().shape({key:y.Z_().required(n.translatedErrors.required),value:y.Z_().required(n.translatedErrors.required)}))}),events:y.IX()});const Y=({handleSubmit:a,data:r,triggerWebhook:l,isCreating:o,isTriggering:g,triggerResponse:h,isDraftAndPublishEvents:c})=>{const{formatMessage:p}=(0,j.useIntl)(),[E,v]=(0,e.useState)(!1);return e.createElement(w.Formik,{onSubmit:a,initialValues:{name:r?.name||"",url:r?.url||"",headers:Object.keys(r?.headers||[]).length?Object.entries(r.headers).map(([M,L])=>({key:M,value:L})):[{key:"",value:""}],events:r?.events||[]},validationSchema:R,validateOnChange:!1,validateOnBlur:!1},({handleSubmit:M,errors:L})=>e.createElement(n.Form,{noValidate:!0},e.createElement(ye.T,{primaryAction:e.createElement(B.K,{horizontal:!0,spacing:2},e.createElement(Pe.z,{onClick:()=>{l(),v(!0)},variant:"tertiary",startIcon:e.createElement(Te,null),disabled:o||g,size:"L"},p({id:"Settings.webhooks.trigger",defaultMessage:"Trigger"})),e.createElement(Pe.z,{startIcon:e.createElement(m.Z,null),onClick:M,type:"submit",size:"L"},p({id:"global.save",defaultMessage:"Save"}))),title:o?p({id:"Settings.webhooks.create",defaultMessage:"Create a webhook"}):r?.name,navigationAction:e.createElement(n.Link,{startIcon:e.createElement(X.Z,null),to:"/settings/webhooks"},p({id:"global.back",defaultMessage:"Back"}))}),e.createElement(Me.D,null,e.createElement(B.K,{spacing:4},E&&e.createElement("div",{className:"trigger-wrapper"},e.createElement(Fe,{isPending:g,response:h,onCancel:()=>v(!1)})),e.createElement(le.x,{background:"neutral0",padding:8,shadow:"filterShadow",hasRadius:!0},e.createElement(B.K,{spacing:6},e.createElement(Q.r,{gap:6},e.createElement(U.P,{col:6},e.createElement(w.Field,{as:ue.o,name:"name",error:L.name&&p({id:L.name}),label:p({id:"global.name",defaultMessage:"Name"}),required:!0})),e.createElement(U.P,{col:12},e.createElement(w.Field,{as:ue.o,name:"url",error:L.url&&p({id:L.url}),label:p({id:"Settings.roles.form.input.url",defaultMessage:"Url"}),required:!0}))),e.createElement(Ke,null),e.createElement(De,{isDraftAndPublish:c})))))))};Y.propTypes={data:i().object,handleSubmit:i().func.isRequired,triggerWebhook:i().func.isRequired,isCreating:i().bool.isRequired,isDraftAndPublishEvents:i().bool.isRequired,isTriggering:i().bool.isRequired,triggerResponse:i().object},Y.defaultProps={data:void 0,triggerResponse:void 0};var te=Y,ce=t(92891);const ne=a=>{const r={...a};return(0,ce.set)(r,"headers",Re(a.headers)),r},Re=a=>a.reduce((r,l)=>{const{key:o,value:g}=l;return o!==""?{...r,[o]:g}:r},{});var Le=ne,Ce=t(98399),We=()=>{const{params:{id:a}}=(0,S.useRouteMatch)("/settings/webhooks/:id"),{replace:r}=(0,S.useHistory)(),{lockApp:l,unlockApp:o}=(0,n.useOverlayBlocker)(),g=(0,n.useNotification)(),h=(0,O.useQueryClient)(),{isLoading:c,collectionTypes:p}=(0,f.bP)(),{post:E}=(0,n.useFetchClient)(),v=a==="create",M=(0,e.useCallback)(async V=>{const[H,{data:Ve}]=await(0,n.to)((0,n.request)(`/admin/webhooks/${V}`,{method:"GET"}));return H?(g({type:"warning",message:{id:"notification.error"}}),null):Ve},[g]),{isLoading:L,data:b}=(0,O.useQuery)(["get-webhook",a],()=>M(a),{enabled:!v}),{isLoading:ae,data:F,isIdle:z,mutate:d}=(0,O.useMutation)(()=>E(`/admin/webhooks/${a}/trigger`)),C=()=>d(null,{onError(){g({type:"warning",message:{id:"notification.error"}})}}),W=(0,O.useMutation)(V=>(0,n.request)("/admin/webhooks",{method:"POST",body:V})),q=(0,O.useMutation)(({id:V,body:H})=>(0,n.request)(`/admin/webhooks/${V}`,{method:"PUT",body:H})),Ze=async V=>{v?(l(),W.mutate(Le(V),{onSuccess(H){g({type:"success",message:{id:"Settings.webhooks.created"}}),r(`/settings/webhooks/${H.data.id}`),o()},onError(H){g({type:"warning",message:{id:"notification.error"}}),Ce.log(H),o()}})):(l(),q.mutate({id:a,body:Le(V)},{onSuccess(){h.invalidateQueries(["get-webhook",a]),g({type:"success",message:{id:"notification.form.success.fields"}}),o()},onError(H){g({type:"warning",message:{id:"notification.error"}}),Ce.log(H),o()}}))},ze=(0,e.useMemo)(()=>p.some(V=>V.options.draftAndPublish===!0),[p]);return L||c?e.createElement(n.LoadingIndicatorPage,null):e.createElement(D.o,null,e.createElement(n.SettingsPageTitle,{name:"Webhooks"}),e.createElement(te,{handleSubmit:Ze,data:b,triggerWebhook:C,isCreating:v,isTriggering:ae,isTriggerIdle:z,triggerResponse:F?.data.data,isDraftAndPublishEvents:ze}))}},33238:function(re,x,t){t.r(x);var e=t(32735),n=t(88425),D=t.n(n),O=t(72041),S=t(41513);const f=()=>e.createElement(n.CheckPagePermissions,{permissions:O.Z.settings.webhooks.create},e.createElement(S.Z,null));x.default=f},59021:function(re,x,t){t.r(x);var e=t(32735),n=t(88425),D=t.n(n),O=t(72041),S=t(41513);const f=()=>e.createElement(n.CheckPagePermissions,{permissions:O.Z.settings.webhooks.update},e.createElement(S.Z,null));x.default=f},42623:function(re,x,t){t.d(x,{h:function(){return G},X:function(){return me}});var e=t(32735),n=t(60216),D=t(57269),O=t(66436),S=t(96892),f=t(94486);const u={Close:"Close",CloseSelect:"CloseSelect",First:"First",Last:"Last",Next:"Next",Open:"Open",PageDown:"PageDown",PageUp:"PageUp",Previous:"Previous",Select:"Select",Space:"Space",Type:"Type"},i={Close:"Close",First:"First",Last:"Last",Next:"Next",Open:"Open",Previous:"Previous",Select:"Select",UpLevel:"UpLevel"};function X(s=[],I=null,k=[]){const _=String(I??"").toLowerCase();return _?s.filter(T=>T.props.children.toString().toLowerCase().includes(_)&&k.indexOf(T)<0):s}function m(s,I){if(!I&&s===f.y.DOWN)return u.Open;if(s===f.y.DOWN)return u.Next;if(s===f.y.UP)return u.Previous;if(s===f.y.HOME)return u.First;if(s===f.y.END)return u.Last;if(s===f.y.ESCAPE)return u.Close;if(s===f.y.ENTER)return u.CloseSelect;if(s===f.y.BACKSPACE||s===f.y.CLEAR||s.length===1)return u.Type}function $(s,I,k){switch(k){case u.First:return 0;case u.Last:return I;case u.Previous:return Math.max(0,s-1);case u.Next:return Math.min(I,s+1);default:return s}}function Te(s){S(s,{scrollMode:"if-needed",block:"nearest",inline:"nearest"}).forEach(({el:I,top:k,left:_})=>{I.scrollTop=k,I.scrollLeft=_})}var ye=t(87933),Me=t(93958),le=t(46406),Pe=t(72850),B=t(49372),ue=t(97405),Q=t(91225),U=t(90333),w=t(87107),j=t(76437),xe=t(67014),K=t(47851),Oe=t(27677),Ae=t(3685);const G=({children:s,clearLabel:I,creatable:k,createMessage:_,disabled:T,error:oe,hasMoreItems:se,hint:ie,id:De,label:ee,labelAction:J,loading:ge,loadingMessage:ke,noOptionsMessage:$e,onChange:Be,onClear:pe,onCreateOption:fe,onInputChange:Se,onLoadMore:Ue,placeholder:Ke,required:he,value:Z,...de})=>{const Ee=()=>s.find(d=>d.props?.value.toLowerCase()===Z.toLowerCase()).props?.children,[P,ve]=(0,e.useState)(0),[be,Fe]=(0,e.useState)(null),[y,Ie]=(0,e.useState)(s),[N,we]=(0,e.useState)(!1),[R,Y]=(0,e.useState)(""),te=(0,e.useRef)(),ce=(0,e.useRef)(!1),ne=(0,e.useRef)(),Re=(0,e.useRef)(),Le=(0,e.useRef)(),Ce=(0,e.useRef)(!0),A=(0,O.M)(De),We=`${A}-label`;if(!ee&&!de["aria-label"])throw new Error('The Combobox component needs a "label" or an "aria-label" props');(0,e.useEffect)(()=>{Ie(X(s,R))},[R,s]),(0,e.useEffect)(()=>{N&&te.current&&Te(te.current)},[P,N]),(0,e.useLayoutEffect)(()=>{Ce.current&&(Ce.current=!1)},[Z]);const a=N?`${A}-${P}`:"",r=()=>{Be(null),Y("")},l=d=>{Se&&Se(d);const C=ne.current.value;Ie(X(s,C)),ve(0),Fe(null),R!==C&&Y(C),N||v(!0,!1)},o=d=>{const{key:C}=d,W=k&&R?y.length:y.length-1,q=m(C,N);switch(Z&&!R&&C===f.y.BACKSPACE&&r(),q){case u.Next:{if(P===W){h(0);break}h($(P,W,q));break}case u.Previous:{if(P===0){h(W);break}h($(P,W,q));break}case u.Last:case u.First:{if(P===W){h(0);break}h($(P,W,q));break}case u.CloseSelect:d.preventDefault(),E(P);break;case u.Close:d.preventDefault(),v(!1);break;case u.Open:v(!0);break}},g=d=>{if(d.preventDefault(),Z&&!ce.current&&Y(""),ce.current){ce.current=!1;return}v(!1,!1)},h=d=>{ve(d)},c=d=>{h(d),E(d)},p=()=>{ce.current=!0},E=d=>{const C=y[d];if(Y(""),C){Be(C.props.value),v(!1);return}k&&(fe(R),v(!1))},v=(d,C=!0)=>{we(d),C&&ne.current.focus()},M=e.Children.toArray(y).map((d,C)=>{const W=P===C;return(0,e.cloneElement)(d,{id:`${A}-${C}`,"aria-selected":be===C,"aria-posinset":C+1,"aria-setsize":e.Children.toArray(y).length,ref(q){W&&(te.current=q)},onClick:()=>c(C),onMouseDown:p,isSelected:W})}),L=()=>{ne.current.focus(),pe&&pe(),r()},b=()=>{ne.current.focus(),v(!0)},ae=()=>{const d=y.findIndex(C=>C.props?.children===R);return R&&d===-1},F=d=>{d.preventDefault(),v(d,!0)};let z;return oe?z=`${A}-error`:ie&&(z=`${A}-hint`),e.createElement(w.g,{hint:ie,error:oe,id:A,required:he},e.createElement(Ae.T,{"aria-live":"polite","aria-atomic":"false","aria-relevant":"additions text"},Z),e.createElement(Oe.K,{spacing:ee||ie||oe?1:0},ee&&e.createElement(j.Q,{action:J},ee),e.createElement(Q.d8,{ref:Re,$disabled:T,hasError:oe},e.createElement(Q.fv,{wrap:"wrap"},!R&&Z&&e.createElement(Q.K7,{id:`${A}-selected-value`},e.createElement(B.Z,null,Ee())),e.createElement(Q.II,{"aria-activedescendant":a,"aria-autocomplete":"list","aria-controls":`${A}-listbox`,"aria-disabled":T,"aria-expanded":N,"aria-haspopup":"listbox","aria-describedby":z,autoComplete:"off",autoCorrect:"off",id:A,onBlur:T?void 0:g,onClick:T?void 0:F,onInput:T?void 0:l,onKeyDown:T?void 0:o,placeholder:Z?"":Ke,readOnly:T,ref:ne,required:he,role:"combobox",spellCheck:"off",type:"text",value:R})),e.createElement(ye.k,null,(Z||R)&&e.createElement(Me.zb,{id:`${A}-clear`,"aria-label":I,disabled:T,paddingLeft:3,as:"button",onClick:L,type:"button"},e.createElement(D.Cross,null)),e.createElement(Me.AV,{disabled:T,paddingLeft:3,"aria-hidden":!0,as:"button",onClick:b,tabIndex:-1,type:"button"},e.createElement(D.CarretDown,null)))),e.createElement(xe.J,null),e.createElement(K.c,null)),N&&e.createElement(le.J2,{id:`${A}-popover`,source:Re,spacing:4,fullWidth:!0,intersectionId:`${A}-listbox-popover-intersection`,onReachEnd:se&&!ge?Ue:void 0},e.createElement("div",{role:"listbox",ref:Le,id:`${A}-listbox`,"aria-labelledby":ee?We:void 0},(Boolean(y.length)||k)&&e.createElement(e.Fragment,null,M,ae()&&k&&e.createElement(U.O,{isSelected:P===y.length,ref:d=>{P===y.length&&(te.current=d)},onMouseDown:p,onClick:()=>E(),taindex:0},_(R))),!y.length&&!k&&!ge&&e.createElement(Pe.x,{paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2,ref:te},e.createElement(B.Z,{textColor:"neutral800"},$e(R))),ge&&e.createElement(ye.k,{justifyContent:"center",alignItems:"center",paddingTop:2,paddingBottom:2},e.createElement(ue.a,{small:!0},ke)))))},me=s=>e.createElement(G,{...s,creatable:!0});G.defaultProps={"aria-label":void 0,clearLabel:"clear",creatable:!1,createMessage:s=>`Create "${s}"`,disabled:!1,error:void 0,hasMoreItems:!1,hint:void 0,id:void 0,label:void 0,loading:!1,loadingMessage:"Loading content...",noOptionsMessage:()=>"No results found",onClear:void 0,onCreateOption:void 0,onInputChange:void 0,onLoadMore:void 0,placeholder:"Select or enter a value",value:void 0},me.defaultProps=G.defaultProps,G.propTypes={"aria-label":n.string,children:n.oneOfType([n.arrayOf(n.node),n.node]),clearLabel:n.string,creatable:n.bool,createMessage:n.func,disabled:n.bool,error:n.string,hasMoreItems:n.bool,id:n.string,hint:n.oneOfType([n.string,n.node,n.arrayOf(n.node)]),label:n.string,labelAction:n.element,loading:n.bool,loadingMessage:n.string,noOptionsMessage:n.func,onChange:n.func.isRequired,onClear:n.func,onCreateOption:n.func,onInputChange:n.func,onLoadMore:n.func,placeholder:n.string,value:n.string},me.propTypes={...G.propTypes,onCreateOption:n.func.isRequired}},90333:function(re,x,t){t.d(x,{O:function(){return S}});var e=t(32735),n=t(60216),D=t(49372),O=t(91225);const S=(0,e.forwardRef)(({isSelected:f,children:u,...i},X)=>e.createElement(O.Zq,{hasRadius:!0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2,role:"option",background:"neutral0",isSelected:f,ref:X,...i},e.createElement(D.Z,{textColor:f?"primary600":"neutral800",fontWeight:f?"bold":null},u)));S.defaultProps={isSelected:!1},S.propTypes={children:n.oneOfType([n.string,n.number]).isRequired,isSelected:n.bool},S.displayName="ComboboxOption"},91225:function(re,x,t){t.d(x,{II:function(){return i},K7:function(){return f},Zq:function(){return X},d8:function(){return S},fv:function(){return u}});var e=t(83292),n=t(72850),D=t(87933),O=t(30350);const S=(0,e.default)(D.k)`
|
|
24
|
-
position: relative;
|
|
25
|
-
border: 1px solid ${({theme:m,hasError:$})=>$?m.colors.danger600:m.colors.neutral200};
|
|
26
|
-
padding-right: ${({theme:m})=>m.spaces[3]};
|
|
27
|
-
padding-left: ${({theme:m})=>m.spaces[3]};
|
|
28
|
-
border-radius: ${({theme:m})=>m.borderRadius};
|
|
29
|
-
background: ${({theme:m})=>m.colors.neutral0};
|
|
30
|
-
|
|
31
|
-
${({theme:m,$disabled:$})=>$?`
|
|
32
|
-
color: ${m.colors.neutral600};
|
|
33
|
-
background: ${m.colors.neutral150};
|
|
34
|
-
`:void 0}
|
|
35
|
-
|
|
36
|
-
${(0,O.k3)()}
|
|
37
|
-
`,f=e.default.div`
|
|
38
|
-
padding: 1px 2px;
|
|
39
|
-
grid-area: 1 / 1 / 2 / 3;
|
|
40
|
-
`,u=(0,e.default)(D.k)`
|
|
41
|
-
display: grid;
|
|
42
|
-
flex: 1 1 0%;
|
|
43
|
-
position: relative;
|
|
44
|
-
`,i=e.default.input`
|
|
45
|
-
display: inline-grid;
|
|
46
|
-
grid-area: 1 / 1 / 2 / 3;
|
|
47
|
-
grid-template-columns: 0px min-content;
|
|
48
|
-
background: transparent;
|
|
49
|
-
min-height: ${40/16}rem;
|
|
50
|
-
border: none;
|
|
51
|
-
flex: 1;
|
|
52
|
-
font-size: ${14/16}rem;
|
|
53
|
-
color: ${({theme:m})=>m.colors.neutral800};
|
|
54
|
-
outline: none;
|
|
55
|
-
&:focus-visible {
|
|
56
|
-
outline: none;
|
|
57
|
-
box-shadow: none;
|
|
58
|
-
outline-offset: 0;
|
|
59
|
-
}
|
|
60
|
-
&[aria-disabled='true'] {
|
|
61
|
-
background: inherit;
|
|
62
|
-
color: inherit;
|
|
63
|
-
cursor: not-allowed;
|
|
64
|
-
}
|
|
65
|
-
`,X=(0,e.default)(n.x)`
|
|
66
|
-
width: 100%;
|
|
67
|
-
border: none;
|
|
68
|
-
text-align: left;
|
|
69
|
-
outline-offset: -3px;
|
|
70
|
-
${({isSelected:m,theme:$})=>m&&`background: ${$.colors.primary100};`}
|
|
71
|
-
|
|
72
|
-
&:hover {
|
|
73
|
-
background: ${({theme:m})=>m.colors.primary100};
|
|
74
|
-
}
|
|
75
|
-
`},27169:function(re,x,t){t.d(x,{Z:function(){return n}});var e=t(74512);function n(D){return(0,e.jsx)("svg",{width:"1em",height:"1em",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...D,children:(0,e.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12.057 18c.552 0 1 .451 1 .997v4.006a1 1 0 01-.941.995l-.059.002c-.552 0-1-.451-1-.997v-4.006a1 1 0 01.941-.995l.06-.002zm-3.06-.736l.055.03c.478.276.64.89.367 1.364l-2.002 3.468a1 1 0 01-1.31.394l-.055-.03a1.002 1.002 0 01-.368-1.363l2.003-3.469a1 1 0 011.31-.394zm7.42.394l2.002 3.468a1 1 0 01-.314 1.331l-.053.033a1.002 1.002 0 01-1.365-.363l-2.003-3.469a1 1 0 01.314-1.33l.054-.034a1.002 1.002 0 011.364.364zm-9.548-2.66l.033.054c.276.478.11 1.091-.364 1.364L3.07 18.42a1 1 0 01-1.331-.314l-.033-.053a1.001 1.001 0 01.364-1.365l3.468-2.003a1 1 0 011.33.314zm11.79-.313l3.468 2.002a1 1 0 01.393 1.31l-.03.055c-.276.478-.89.64-1.363.367l-3.469-2.003a1 1 0 01-.394-1.309l.03-.055c.276-.479.89-.64 1.364-.367zm4.344-3.628a1 1 0 01.995.941l.002.06c0 .551-.451 1-.997 1h-4.006a1 1 0 01-.995-.942L18 12.057c0-.552.451-1 .997-1h4.006zm-18 0a1 1 0 01.995.941l.002.06c0 .551-.451 1-.998 1H.998a1 1 0 01-.996-.942L0 12.057c0-.552.451-1 .998-1h4.004zm17.454-5.059l.033.054c.277.478.11 1.091-.363 1.365l-3.469 2.002a1 1 0 01-1.33-.314l-.034-.053a1.002 1.002 0 01.364-1.365l3.468-2.003a1 1 0 011.331.314zM3.07 5.684l3.468 2.003a1 1 0 01.394 1.31l-.03.055c-.276.478-.89.64-1.364.367L2.07 7.417a1 1 0 01-.394-1.31l.03-.055c.276-.479.89-.64 1.364-.368zm14.926-4.008l.056.03c.478.276.64.89.367 1.364l-2.003 3.468a1 1 0 01-1.309.394l-.055-.03a1.002 1.002 0 01-.367-1.364l2.002-3.468a1 1 0 011.31-.394zm-10.58.394L9.42 5.538a1 1 0 01-.314 1.33l-.053.034a1.002 1.002 0 01-1.365-.364L5.684 3.07a1 1 0 01.314-1.331l.054-.033a1.002 1.002 0 011.365.364zM12.058 0c.552 0 1 .451 1 .998v4.004a1 1 0 01-.941.996L12.057 6c-.552 0-1-.451-1-.998V.998a1 1 0 01.941-.996l.06-.002z",fill:"#212134"})})}}}]);
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[4121],{74767:function(We,S,t){t.r(S),t.d(S,{default:function(){return ge}});var e=t(32735),s=t(88425),W=t(72041),B=t(5141),U=t(5636),F=t(96709),X=t(28356),j=t(99223),J=t(17e3),Q=t(9695),M=t(87933),Y=t(27677),A=t(50563),x=t(44426),q=t(94745),_=t(73269),ee=t(76330),$=t(29005),d=t(66735),te=t(3594),g=t(49372),H=t(41415),ne=t(3685),b=t(60216),P=t(83292),K=t(72850);const y=P.default.div`
|
|
2
|
-
background: ${({theme:a})=>a.colors.danger500};
|
|
3
|
-
border: none;
|
|
4
|
-
border-radius: 16px;
|
|
5
|
-
position: relative;
|
|
6
|
-
height: ${24/16}rem;
|
|
7
|
-
width: ${40/16}rem;
|
|
8
|
-
|
|
9
|
-
& span {
|
|
10
|
-
font-size: ${({visibleLabels:a})=>a?"1rem":0};
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
&:before {
|
|
14
|
-
content: '';
|
|
15
|
-
background: ${({theme:a})=>a.colors.neutral0};
|
|
16
|
-
width: 1rem;
|
|
17
|
-
height: 1rem;
|
|
18
|
-
border-radius: 50%;
|
|
19
|
-
position: absolute;
|
|
20
|
-
transition: all 0.5s;
|
|
21
|
-
left: ${({theme:a})=>a.spaces[1]};
|
|
22
|
-
top: ${({theme:a})=>a.spaces[1]};
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
@media (prefers-reduced-motion: reduce) {
|
|
26
|
-
&:before {
|
|
27
|
-
transition: none;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
`,ae=P.default.button`
|
|
31
|
-
background: transparent;
|
|
32
|
-
padding: 0;
|
|
33
|
-
border: none;
|
|
34
|
-
|
|
35
|
-
&[aria-checked='true'] ${y} {
|
|
36
|
-
background: ${({theme:a})=>a.colors.success500};
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
&[aria-checked='true'] ${y}:before {
|
|
40
|
-
transform: translateX(1rem);
|
|
41
|
-
}
|
|
42
|
-
`,T=e.forwardRef(({label:a,onChange:i,onLabel:o,offLabel:r,selected:h,visibleLabels:m,...u},l)=>e.createElement(ae,{ref:l,role:"switch","aria-checked":h,"aria-label":a,onClick:i,visibleLabels:m,type:"button",...u},e.createElement(M.k,null,e.createElement(y,null,e.createElement("span",null,o),e.createElement("span",null,r)),m&&e.createElement(K.x,{as:"span","aria-hidden":!0,paddingLeft:2,color:h?"success600":"danger600"},h?o:r))));T.defaultProps={onLabel:"On",offLabel:"Off",visibleLabels:!1},T.propTypes={label:b.string.isRequired,offLabel:b.string,onChange:b.func.isRequired,onLabel:b.string,selected:b.bool.isRequired,visibleLabels:b.bool},T.displayName="Switch";var le=t(27649),oe=t(94638),C=t(19406),se=t(68625),G=t(4038),ie=t(54725),re=t(97889),de=t(3040),ce=t.n(de);const ue={webhooks:[],webhooksToDelete:[],webhookToDelete:null,loadingWebhooks:!0};var Ee=(a,i)=>(0,re.default)(a,o=>{switch(i.type){case"GET_DATA_SUCCEEDED":{o.webhooks=i.data,o.loadingWebhooks=!1;break}case"TOGGLE_LOADING":{o.loadingWebhooks=!a.loadingWebhooks;break}case"SET_WEBHOOK_ENABLED":{ce()(o,["webhooks",...i.keys],i.value);break}case"SET_WEBHOOK_TO_DELETE":{o.webhookToDelete=i.id;break}case"SET_WEBHOOKS_TO_DELETE":{i.value?o.webhooksToDelete.push(i.id):o.webhooksToDelete=a.webhooksToDelete.filter(r=>r!==i.id);break}case"SET_ALL_WEBHOOKS_TO_DELETE":{a.webhooksToDelete.length===0?o.webhooksToDelete=a.webhooks.map(r=>r.id):o.webhooksToDelete=[];break}case"WEBHOOKS_DELETED":{o.webhooks=a.webhooks.filter(r=>!a.webhooksToDelete.includes(r.id)),o.webhooksToDelete=[];break}case"WEBHOOK_DELETED":{o.webhooks=a.webhooks.filter((r,h)=>h!==i.index),o.webhookToDelete=null;break}default:return o}}),he=t(98399),me=()=>{const{isLoading:a,allowedActions:{canCreate:i,canRead:o,canUpdate:r,canDelete:h}}=(0,s.useRBAC)(W.Z.settings.webhooks),m=(0,s.useNotification)(),u=(0,e.useRef)(!0),{formatMessage:l}=(0,U.useIntl)(),[be,v]=(0,e.useState)(!1),[{webhooks:L,webhooksToDelete:O,webhookToDelete:p,loadingWebhooks:w},E]=(0,e.useReducer)(Ee,ue),{notifyStatus:fe}=(0,oe.G)();(0,s.useFocusWhenNavigate)();const{push:Te}=(0,B.useHistory)(),{pathname:N}=(0,B.useLocation)(),D=L.length,f=O.length,I=n=>L.findIndex(c=>c.id===n);(0,e.useEffect)(()=>(u.current=!0,()=>{u.current=!1}),[]),(0,e.useEffect)(()=>{o&&ve()},[o]);const ve=async()=>{try{const{data:n}=await(0,s.request)("/admin/webhooks",{method:"GET"});u.current&&(E({type:"GET_DATA_SUCCEEDED",data:n}),fe("webhooks have been loaded"))}catch(n){he.log(n),u.current&&(n.code!==20&&m({type:"warning",message:{id:"notification.error"}}),E({type:"TOGGLE_LOADING"}))}},Le=()=>{v(n=>!n)},De=()=>{p?ke():ye()},ke=async()=>{try{await(0,s.request)(`/admin/webhooks/${p}`,{method:"DELETE"}),E({type:"WEBHOOK_DELETED",index:I(p)})}catch(n){n.code!==20&&m({type:"warning",message:{id:"notification.error"}})}v(!1)},ye=async()=>{const n={ids:O};try{await(0,s.request)("/admin/webhooks/batch-delete",{method:"POST",body:n}),u.current&&E({type:"WEBHOOKS_DELETED"})}catch(c){u.current&&c.code!==20&&m({type:"warning",message:{id:"notification.error"}})}v(!1)},R=n=>{v(!0),n!=="all"&&E({type:"SET_WEBHOOK_TO_DELETE",id:n})},Ce=async(n,c)=>{const V=I(c),we=L[V],Z=[V,"isEnabled"],z={...we,isEnabled:n};delete z.id;try{E({type:"SET_WEBHOOK_ENABLED",keys:Z,value:n}),await(0,s.request)(`/admin/webhooks/${c}`,{method:"PUT",body:z})}catch(Se){u.current&&(E({type:"SET_WEBHOOK_ENABLED",keys:Z,value:!n}),Se.code!==20&&m({type:"warning",message:{id:"notification.error"}}))}},Oe=()=>{E({type:"SET_ALL_WEBHOOKS_TO_DELETE"})},pe=(n,c)=>{E({type:"SET_WEBHOOKS_TO_DELETE",value:n,id:c})},k=n=>{Te(`${N}/${n}`)};return e.createElement(F.A,null,e.createElement(s.SettingsPageTitle,{name:"Webhooks"}),e.createElement(le.o,{"aria-busy":a||w},e.createElement(X.T,{title:l({id:"Settings.webhooks.title",defaultMessage:"Webhooks"}),subtitle:l({id:"Settings.webhooks.list.description",defaultMessage:"Get POST changes notifications"}),primaryAction:i&&!w&&e.createElement(s.LinkButton,{startIcon:e.createElement(C.default,null),variant:"default",to:`${N}/create`,size:"S"},l({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))}),f>0&&h&&e.createElement(j.Z,{startActions:e.createElement(e.Fragment,null,e.createElement(g.Z,{variant:"epsilon",textColor:"neutral600"},l({id:"Settings.webhooks.to.delete",defaultMessage:"{webhooksToDeleteLength, plural, one {# asset} other {# assets}} selected"},{webhooksToDeleteLength:f})),e.createElement(H.z,{onClick:()=>R("all"),startIcon:e.createElement(G.default,null),size:"L",variant:"danger-light"},l({id:"global.delete",defaultMessage:"Delete"})))}),e.createElement(J.D,null,a||w?e.createElement(K.x,{background:"neutral0",padding:6,shadow:"filterShadow",hasRadius:!0},e.createElement(s.LoadingIndicatorPage,null)):e.createElement(e.Fragment,null,D>0?e.createElement(q.i,{colCount:5,rowCount:D+1,footer:e.createElement(_.c,{onClick:()=>i?k("create"):{},icon:e.createElement(C.default,null)},l({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))},e.createElement(ee.h,null,e.createElement($.Tr,null,e.createElement(d.Th,null,e.createElement(x.C,{"aria-label":l({id:"global.select-all-entries",defaultMessage:"Select all entries"}),indeterminate:f>0&&f<D,value:f===D,onValueChange:Oe})),e.createElement(d.Th,{width:"20%"},e.createElement(g.Z,{variant:"sigma",textColor:"neutral600"},l({id:"global.name",defaultMessage:"Name"}))),e.createElement(d.Th,{width:"60%"},e.createElement(g.Z,{variant:"sigma",textColor:"neutral600"},l({id:"Settings.webhooks.form.url",defaultMessage:"URL"}))),e.createElement(d.Th,{width:"20%"},e.createElement(g.Z,{variant:"sigma",textColor:"neutral600"},l({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"}))),e.createElement(d.Th,null,e.createElement(ne.T,null,l({id:"Settings.webhooks.list.th.actions",defaultMessage:"Actions"}))))),e.createElement(te.p,null,L.map(n=>e.createElement($.Tr,{key:n.id,...(0,s.onRowClick)({fn:()=>k(n.id),condition:r})},e.createElement(d.Td,{...s.stopPropagation},e.createElement(x.C,{"aria-label":`${l({id:"global.select",defaultMessage:"Select"})} ${n.name}`,value:O?.includes(n.id),onValueChange:c=>pe(c,n.id),id:"select",name:"select"})),e.createElement(d.Td,null,e.createElement(g.Z,{fontWeight:"semiBold",textColor:"neutral800"},n.name)),e.createElement(d.Td,null,e.createElement(g.Z,{textColor:"neutral800"},n.url)),e.createElement(d.Td,null,e.createElement(M.k,{...s.stopPropagation},e.createElement(T,{onLabel:l({id:"global.enabled",defaultMessage:"Enabled"}),offLabel:l({id:"global.disabled",defaultMessage:"Disabled"}),label:`${n.name} ${l({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"})}`,selected:n.isEnabled,onChange:()=>Ce(!n.isEnabled,n.id),visibleLabels:!0}))),e.createElement(d.Td,null,e.createElement(Y.K,{horizontal:!0,spacing:1,...s.stopPropagation},r&&e.createElement(A.h,{onClick:()=>{k(n.id)},label:l({id:"Settings.webhooks.events.update",defaultMessage:"Update"}),icon:e.createElement(se.Z,null),noBorder:!0}),h&&e.createElement(A.h,{onClick:()=>R(n.id),label:l({id:"global.delete",defaultMessage:"Delete"}),icon:e.createElement(G.default,null),noBorder:!0,id:`delete-${n.id}`}))))))):e.createElement(Q.x,{icon:e.createElement(ie.default,{width:"160px"}),content:l({id:"Settings.webhooks.list.empty.description",defaultMessage:"No webhooks found"}),action:e.createElement(H.z,{variant:"secondary",startIcon:e.createElement(C.default,null),onClick:()=>i?k("create"):{}},l({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))})))),e.createElement(s.ConfirmDialog,{isOpen:be,onToggleDialog:Le,onConfirm:De}))},ge=()=>e.createElement(s.CheckPagePermissions,{permissions:W.Z.settings.webhooks.main},e.createElement(me,null))}}]);
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
module.exports = {
|
|
4
|
-
collectionName: 'strapi_transfer_token_permissions',
|
|
5
|
-
info: {
|
|
6
|
-
name: 'Transfer Token Permission',
|
|
7
|
-
description: '',
|
|
8
|
-
singularName: 'transfer-token-permission',
|
|
9
|
-
pluralName: 'transfer-token-permissions',
|
|
10
|
-
displayName: 'Transfer Token Permission',
|
|
11
|
-
},
|
|
12
|
-
options: {},
|
|
13
|
-
pluginOptions: {
|
|
14
|
-
'content-manager': {
|
|
15
|
-
visible: false,
|
|
16
|
-
},
|
|
17
|
-
'content-type-builder': {
|
|
18
|
-
visible: false,
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
attributes: {
|
|
22
|
-
action: {
|
|
23
|
-
type: 'string',
|
|
24
|
-
minLength: 1,
|
|
25
|
-
configurable: false,
|
|
26
|
-
required: true,
|
|
27
|
-
},
|
|
28
|
-
token: {
|
|
29
|
-
configurable: false,
|
|
30
|
-
type: 'relation',
|
|
31
|
-
relation: 'manyToOne',
|
|
32
|
-
inversedBy: 'permissions',
|
|
33
|
-
target: 'admin::transfer-token',
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
};
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
module.exports = {
|
|
4
|
-
collectionName: 'strapi_transfer_tokens',
|
|
5
|
-
info: {
|
|
6
|
-
name: 'Transfer Token',
|
|
7
|
-
singularName: 'transfer-token',
|
|
8
|
-
pluralName: 'transfer-tokens',
|
|
9
|
-
displayName: 'Transfer Token',
|
|
10
|
-
description: '',
|
|
11
|
-
},
|
|
12
|
-
options: {},
|
|
13
|
-
pluginOptions: {
|
|
14
|
-
'content-manager': {
|
|
15
|
-
visible: false,
|
|
16
|
-
},
|
|
17
|
-
'content-type-builder': {
|
|
18
|
-
visible: false,
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
attributes: {
|
|
22
|
-
name: {
|
|
23
|
-
type: 'string',
|
|
24
|
-
minLength: 1,
|
|
25
|
-
configurable: false,
|
|
26
|
-
required: true,
|
|
27
|
-
unique: true,
|
|
28
|
-
},
|
|
29
|
-
description: {
|
|
30
|
-
type: 'string',
|
|
31
|
-
minLength: 1,
|
|
32
|
-
configurable: false,
|
|
33
|
-
required: false,
|
|
34
|
-
default: '',
|
|
35
|
-
},
|
|
36
|
-
accessKey: {
|
|
37
|
-
type: 'string',
|
|
38
|
-
minLength: 1,
|
|
39
|
-
configurable: false,
|
|
40
|
-
required: true,
|
|
41
|
-
},
|
|
42
|
-
lastUsedAt: {
|
|
43
|
-
type: 'datetime',
|
|
44
|
-
configurable: false,
|
|
45
|
-
required: false,
|
|
46
|
-
},
|
|
47
|
-
permissions: {
|
|
48
|
-
type: 'relation',
|
|
49
|
-
target: 'admin::transfer-token-permission',
|
|
50
|
-
relation: 'oneToMany',
|
|
51
|
-
mappedBy: 'token',
|
|
52
|
-
configurable: false,
|
|
53
|
-
required: false,
|
|
54
|
-
},
|
|
55
|
-
expiresAt: {
|
|
56
|
-
type: 'datetime',
|
|
57
|
-
configurable: false,
|
|
58
|
-
required: false,
|
|
59
|
-
},
|
|
60
|
-
lifespan: {
|
|
61
|
-
type: 'biginteger',
|
|
62
|
-
configurable: false,
|
|
63
|
-
required: false,
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { mapKeys } = require('lodash/fp');
|
|
4
|
-
|
|
5
|
-
const runner = require('./runner');
|
|
6
|
-
const token = require('./token');
|
|
7
|
-
|
|
8
|
-
const prefixActionsName = (prefix, dict) => mapKeys((key) => `${prefix}-${key}`, dict);
|
|
9
|
-
|
|
10
|
-
module.exports = {
|
|
11
|
-
...prefixActionsName('runner', runner),
|
|
12
|
-
...prefixActionsName('token', token),
|
|
13
|
-
};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { remote } = require('@strapi/data-transfer/lib/strapi');
|
|
4
|
-
const { UnauthorizedError } = require('@strapi/utils/lib/errors');
|
|
5
|
-
|
|
6
|
-
const dataTransferAuthStrategy = require('../../strategies/data-transfer');
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @param {import('koa').Context} ctx
|
|
10
|
-
* @param {string} [scope]
|
|
11
|
-
*/
|
|
12
|
-
const verify = async (ctx, scope) => {
|
|
13
|
-
const { auth } = ctx.state;
|
|
14
|
-
|
|
15
|
-
if (!auth) {
|
|
16
|
-
throw new UnauthorizedError();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
await dataTransferAuthStrategy.verify(auth, { scope });
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
module.exports = {
|
|
23
|
-
connect: remote.handlers.createTransferHandler({ verify }),
|
|
24
|
-
};
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { trim, has } = require('lodash/fp');
|
|
4
|
-
const {
|
|
5
|
-
errors: { ApplicationError },
|
|
6
|
-
stringEquals,
|
|
7
|
-
} = require('@strapi/utils');
|
|
8
|
-
|
|
9
|
-
const {
|
|
10
|
-
token: { validateTransferTokenCreationInput, validateTransferTokenUpdateInput },
|
|
11
|
-
} = require('../../validation/transfer');
|
|
12
|
-
const { getService } = require('../../utils');
|
|
13
|
-
|
|
14
|
-
module.exports = {
|
|
15
|
-
async list(ctx) {
|
|
16
|
-
const transferService = getService('transfer');
|
|
17
|
-
const transferTokens = await transferService.token.list();
|
|
18
|
-
|
|
19
|
-
ctx.body = { data: transferTokens };
|
|
20
|
-
},
|
|
21
|
-
|
|
22
|
-
async getById(ctx) {
|
|
23
|
-
const { id } = ctx.params;
|
|
24
|
-
const tokenService = getService('transfer').token;
|
|
25
|
-
|
|
26
|
-
const transferToken = await tokenService.getById(id);
|
|
27
|
-
|
|
28
|
-
if (!transferToken) {
|
|
29
|
-
ctx.notFound('Transfer token not found');
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
ctx.body = { data: transferToken };
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
async create(ctx) {
|
|
37
|
-
const { body } = ctx.request;
|
|
38
|
-
const { token: tokenService } = getService('transfer');
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* We trim fields to avoid having issues with either:
|
|
42
|
-
* - having a space at the end or start of the value
|
|
43
|
-
* - having only spaces as value (so that an empty field can be caught in validation)
|
|
44
|
-
*/
|
|
45
|
-
const attributes = {
|
|
46
|
-
name: trim(body.name),
|
|
47
|
-
description: trim(body.description),
|
|
48
|
-
permissions: body.permissions,
|
|
49
|
-
lifespan: body.lifespan,
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
await validateTransferTokenCreationInput(attributes);
|
|
53
|
-
|
|
54
|
-
const alreadyExists = await tokenService.exists({ name: attributes.name });
|
|
55
|
-
if (alreadyExists) {
|
|
56
|
-
throw new ApplicationError('Name already taken');
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const transferTokens = await tokenService.create(attributes);
|
|
60
|
-
|
|
61
|
-
ctx.created({ data: transferTokens });
|
|
62
|
-
},
|
|
63
|
-
|
|
64
|
-
async update(ctx) {
|
|
65
|
-
const { body } = ctx.request;
|
|
66
|
-
const { id } = ctx.params;
|
|
67
|
-
const { token: tokenService } = getService('transfer');
|
|
68
|
-
|
|
69
|
-
const attributes = body;
|
|
70
|
-
/**
|
|
71
|
-
* We trim fields to avoid having issues with either:
|
|
72
|
-
* - having a space at the end or start of the value
|
|
73
|
-
* - having only spaces as value (so that an empty field can be caught in validation)
|
|
74
|
-
*/
|
|
75
|
-
if (has('name', attributes)) {
|
|
76
|
-
attributes.name = trim(body.name);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if (has('description', attributes) || attributes.description === null) {
|
|
80
|
-
attributes.description = trim(body.description);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
await validateTransferTokenUpdateInput(attributes);
|
|
84
|
-
|
|
85
|
-
const apiTokenExists = await tokenService.getById(id);
|
|
86
|
-
if (!apiTokenExists) {
|
|
87
|
-
return ctx.notFound('Transfer token not found');
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (has('name', attributes)) {
|
|
91
|
-
const nameAlreadyTaken = await tokenService.getByName(attributes.name);
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* We cast the ids as string as the one coming from the ctx isn't cast
|
|
95
|
-
* as a Number in case it is supposed to be an integer. It remains
|
|
96
|
-
* as a string. This way we avoid issues with integers in the db.
|
|
97
|
-
*/
|
|
98
|
-
if (!!nameAlreadyTaken && !stringEquals(nameAlreadyTaken.id, id)) {
|
|
99
|
-
throw new ApplicationError('Name already taken');
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
const apiToken = await tokenService.update(id, attributes);
|
|
104
|
-
|
|
105
|
-
ctx.body = { data: apiToken };
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
async revoke(ctx) {
|
|
109
|
-
const { id } = ctx.params;
|
|
110
|
-
const { token: tokenService } = getService('transfer');
|
|
111
|
-
|
|
112
|
-
const transferToken = await tokenService.revoke(id);
|
|
113
|
-
|
|
114
|
-
ctx.deleted({ data: transferToken });
|
|
115
|
-
},
|
|
116
|
-
|
|
117
|
-
async regenerate(ctx) {
|
|
118
|
-
const { id } = ctx.params;
|
|
119
|
-
const { token: tokenService } = getService('transfer');
|
|
120
|
-
|
|
121
|
-
const exists = await tokenService.getById(id);
|
|
122
|
-
if (!exists) {
|
|
123
|
-
ctx.notFound('Transfer token not found');
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
const accessToken = await tokenService.regenerate(id);
|
|
128
|
-
|
|
129
|
-
ctx.created({ data: accessToken });
|
|
130
|
-
},
|
|
131
|
-
};
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const dataTransferAuthStrategy = require('../strategies/data-transfer');
|
|
4
|
-
|
|
5
|
-
module.exports = [
|
|
6
|
-
// Transfer route
|
|
7
|
-
{
|
|
8
|
-
method: 'GET',
|
|
9
|
-
path: '/transfer/runner/connect',
|
|
10
|
-
handler: 'transfer.runner-connect',
|
|
11
|
-
config: {
|
|
12
|
-
middlewares: [
|
|
13
|
-
(ctx, next) => {
|
|
14
|
-
if (process.env.STRAPI_DISABLE_REMOTE_DATA_TRANSFER === 'true') {
|
|
15
|
-
return ctx.notFound();
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
return next();
|
|
19
|
-
},
|
|
20
|
-
],
|
|
21
|
-
// TODO: Allow not passing any scope <> Add a way to prevent assigning one by default
|
|
22
|
-
auth: { strategies: [dataTransferAuthStrategy], scope: ['push'] },
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
// Transfer Tokens
|
|
26
|
-
{
|
|
27
|
-
method: 'POST',
|
|
28
|
-
path: '/transfer/tokens',
|
|
29
|
-
handler: 'transfer.token-create',
|
|
30
|
-
config: {
|
|
31
|
-
policies: [
|
|
32
|
-
'admin::isAuthenticatedAdmin',
|
|
33
|
-
{ name: 'admin::hasPermissions', config: { actions: ['admin::transfer.tokens.create'] } },
|
|
34
|
-
],
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
method: 'GET',
|
|
39
|
-
path: '/transfer/tokens',
|
|
40
|
-
handler: 'transfer.token-list',
|
|
41
|
-
config: {
|
|
42
|
-
policies: [
|
|
43
|
-
'admin::isAuthenticatedAdmin',
|
|
44
|
-
{ name: 'admin::hasPermissions', config: { actions: ['admin::transfer.tokens.read'] } },
|
|
45
|
-
],
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
method: 'DELETE',
|
|
50
|
-
path: '/transfer/tokens/:id',
|
|
51
|
-
handler: 'transfer.token-revoke',
|
|
52
|
-
config: {
|
|
53
|
-
policies: [
|
|
54
|
-
'admin::isAuthenticatedAdmin',
|
|
55
|
-
{ name: 'admin::hasPermissions', config: { actions: ['admin::transfer.tokens.delete'] } },
|
|
56
|
-
],
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
method: 'GET',
|
|
61
|
-
path: '/transfer/tokens/:id',
|
|
62
|
-
handler: 'transfer.token-getById',
|
|
63
|
-
config: {
|
|
64
|
-
policies: [
|
|
65
|
-
'admin::isAuthenticatedAdmin',
|
|
66
|
-
{ name: 'admin::hasPermissions', config: { actions: ['admin::transfer.tokens.read'] } },
|
|
67
|
-
],
|
|
68
|
-
},
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
method: 'PUT',
|
|
72
|
-
path: '/transfer/tokens/:id',
|
|
73
|
-
handler: 'transfer.token-update',
|
|
74
|
-
config: {
|
|
75
|
-
policies: [
|
|
76
|
-
'admin::isAuthenticatedAdmin',
|
|
77
|
-
{ name: 'admin::hasPermissions', config: { actions: ['admin::transfer.tokens.update'] } },
|
|
78
|
-
],
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
method: 'POST',
|
|
83
|
-
path: '/transfer/tokens/:id/regenerate',
|
|
84
|
-
handler: 'transfer.token-regenerate',
|
|
85
|
-
config: {
|
|
86
|
-
policies: [
|
|
87
|
-
'admin::isAuthenticatedAdmin',
|
|
88
|
-
{
|
|
89
|
-
name: 'admin::hasPermissions',
|
|
90
|
-
config: { actions: ['admin::transfer.tokens.regenerate'] },
|
|
91
|
-
},
|
|
92
|
-
],
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
|
-
];
|