@strapi/admin 4.4.0-beta.3 → 4.4.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/admin/src/content-manager/components/DynamicTable/index.js +2 -2
  2. package/admin/src/contexts/ApiTokenPermissions/index.js +24 -0
  3. package/admin/src/hooks/index.js +1 -0
  4. package/admin/src/hooks/useRegenerate/index.js +34 -0
  5. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/ActionBoundRoutes/index.js +56 -0
  6. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/BoundRoute/getMethodColor.js +41 -0
  7. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/BoundRoute/index.js +72 -0
  8. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/CollapsableContentType/CheckBoxWrapper.js +30 -0
  9. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/CollapsableContentType/index.js +150 -0
  10. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/ContenTypesSection/index.js +37 -0
  11. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/Permissions/index.js +40 -0
  12. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/Regenerate/index.js +68 -0
  13. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +450 -180
  14. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/init.js +13 -0
  15. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/reducer.js +72 -0
  16. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/utils/getDateOfExpiration.js +16 -0
  17. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/utils/index.js +5 -0
  18. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/utils/schema.js +2 -1
  19. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/utils/transformPermissionsData.js +36 -0
  20. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/DefaultButton/index.js +63 -0
  21. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/DeleteButton/index.js +1 -0
  22. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/ReadButton/index.js +19 -0
  23. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/UpdateButton/index.js +3 -36
  24. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js +13 -11
  25. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/index.js +3 -2
  26. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/utils/tableHeaders.js +8 -8
  27. package/admin/src/pages/SettingsPage/pages/ApiTokens/ProtectedEditView/index.js +1 -1
  28. package/admin/src/permissions/defaultPermissions.js +2 -6
  29. package/admin/src/translations/en.json +17 -0
  30. package/build/4235.c44d8565.chunk.js +30 -0
  31. package/build/7379.d246dd38.chunk.js +1 -0
  32. package/build/{Admin-authenticatedApp.50e41ff2.chunk.js → Admin-authenticatedApp.6ad28580.chunk.js} +1 -1
  33. package/build/{Admin_homePage.118926e0.chunk.js → Admin_homePage.6d5e3236.chunk.js} +1 -1
  34. package/build/{Admin_profilePage.9d50ac44.chunk.js → Admin_profilePage.da32abbc.chunk.js} +1 -1
  35. package/build/{Admin_settingsPage.98a711e5.chunk.js → Admin_settingsPage.fc9c607a.chunk.js} +16 -16
  36. package/build/admin-app.7b7f9463.chunk.js +112 -0
  37. package/build/admin-edit-roles-page.4dd6bcb9.chunk.js +1 -0
  38. package/build/api-tokens-create-page.29cc87b6.chunk.js +1 -0
  39. package/build/api-tokens-edit-page.c294a88f.chunk.js +1 -0
  40. package/build/api-tokens-list-page.bb36535f.chunk.js +16 -0
  41. package/build/{content-manager.2a6f876d.chunk.js → content-manager.5ac9916a.chunk.js} +1 -1
  42. package/build/en-json.a9918c93.chunk.js +1 -0
  43. package/build/index.html +1 -1
  44. package/build/{main.fdc482f3.js → main.c04d580d.js} +1 -1
  45. package/build/{runtime~main.29105d25.js → runtime~main.3bd4f055.js} +2 -2
  46. package/build/sso-settings-page.9ceb0140.chunk.js +1 -0
  47. package/build/{webhook-edit-page.d2ea3351.chunk.js → webhook-edit-page.9e46fc3f.chunk.js} +1 -1
  48. package/package.json +8 -7
  49. package/server/bootstrap.js +19 -1
  50. package/server/config/admin-actions.js +20 -0
  51. package/server/content-types/api-token-permission.js +36 -0
  52. package/server/content-types/api-token.js +25 -1
  53. package/server/content-types/index.js +1 -0
  54. package/server/controllers/api-token.js +24 -1
  55. package/server/controllers/content-api.js +15 -0
  56. package/server/controllers/index.js +1 -0
  57. package/server/routes/api-tokens.js +11 -0
  58. package/server/routes/content-api.js +20 -0
  59. package/server/routes/index.js +2 -0
  60. package/server/services/api-token.js +310 -29
  61. package/server/services/constants.js +10 -0
  62. package/server/services/permission/engine.js +36 -226
  63. package/server/services/permission.js +4 -1
  64. package/server/strategies/admin.js +7 -1
  65. package/server/strategies/api-token.js +71 -11
  66. package/server/validation/api-tokens.js +12 -2
  67. package/build/admin-app.8bc3e80f.chunk.js +0 -112
  68. package/build/admin-edit-roles-page.554ba3fa.chunk.js +0 -1
  69. package/build/api-tokens-create-page.4c262d6e.chunk.js +0 -1
  70. package/build/api-tokens-edit-page.10a9d368.chunk.js +0 -1
  71. package/build/api-tokens-list-page.442c9f3c.chunk.js +0 -15
  72. package/build/en-json.12bc5a14.chunk.js +0 -1
  73. package/build/sso-settings-page.445184e0.chunk.js +0 -1
  74. package/server/services/permission/engine-hooks.js +0 -82
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[302],{49851:(w,c,t)=>{t.r(c),t.d(c,{SingleSignOn:()=>E,default:()=>K});var a=t(32735),l=t(88425),P=t(88677),y=t.n(P),i=t(11856),C=t(44526),M=t(16540),b=t(90662),I=t(95602),L=t(63865),f=t(25716),d=t(78330),D=t(5636),T=t(89793),B=t.n(T),G=t(7602),m=t(73869),h=t(83983),g=t(5173);const j=g.Ry().shape({autoRegister:g.Xg().required(l.translatedErrors.required),defaultRole:g.nK().when("autoRegister",(e,s)=>e?s.required(l.translatedErrors.required):s.nullable())});var A=Object.defineProperty,F=Object.defineProperties,x=Object.getOwnPropertyDescriptors,p=Object.getOwnPropertySymbols,H=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable,v=(e,s,n)=>s in e?A(e,s,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[s]=n,Z=(e,s)=>{for(var n in s||(s={}))H.call(s,n)&&v(e,n,s[n]);if(p)for(var n of p(s))N.call(s,n)&&v(e,n,s[n]);return e},z=(e,s)=>F(e,x(s));const S=z(Z({},h.Z.settings.sso),{readRoles:h.Z.settings.roles.read}),E=()=>{const{formatMessage:e}=(0,D.useIntl)(),{isLoading:s,allowedActions:{canUpdate:n,canReadRoles:U}}=(0,l.useRBAC)(S),[{formErrors:r,initialData:V,isLoading:W,modifiedData:u,showHeaderButtonLoader:X},_,{handleChange:R,handleSubmit:J}]=(0,m.G4)((0,G.IF)("providers/options"),j,()=>{},["autoRegister","defaultRole"]),{roles:Q}=(0,m.bF)(U);(0,l.useFocusWhenNavigate)();const Y=s||W;(0,a.useEffect)(()=>{if(r.defaultRole){const o='[name="defaultRole"]';document.querySelector(o).focus()}},[r]);const O=B()(V,u);return a.createElement(i.Layout,null,a.createElement(l.SettingsPageTitle,{name:"SSO"}),a.createElement(M.Main,{tabIndex:-1},a.createElement("form",{onSubmit:o=>{if(O){o.preventDefault();return}J(o)}},a.createElement(i.HeaderLayout,{primaryAction:a.createElement(C.Button,{"data-testid":"save-button",disabled:O,loading:X,startIcon:a.createElement(y(),null),type:"submit",size:"L"},e({id:"global.save",defaultMessage:"Save"})),title:e({id:"Settings.sso.title",defaultMessage:"Single Sign-On"}),subtitle:e({id:"Settings.sso.description",defaultMessage:"Configure the settings for the Single Sign-On feature."})}),a.createElement(i.ContentLayout,null,Y?a.createElement(l.LoadingIndicatorPage,null):a.createElement(b.Stack,{spacing:4,background:"neutral0",padding:6,shadow:"filterShadow",hasRadius:!0},a.createElement(I.Typography,{variant:"delta",as:"h2"},e({id:"global.settings",defaultMessage:"Settings"})),a.createElement(d.Grid,{gap:4},a.createElement(d.GridItem,{col:6,m:6,s:12},a.createElement(L.ToggleInput,{"aria-label":"autoRegister","data-testid":"autoRegister",disabled:!n,checked:u.autoRegister,hint:e({id:"Settings.sso.form.registration.description",defaultMessage:"Create new user on SSO login if no account exists"}),label:e({id:"Settings.sso.form.registration.label",defaultMessage:"Auto-registration"}),name:"autoRegister",offLabel:e({id:"app.components.ToggleCheckbox.off-label",defaultMessage:"Off"}),onLabel:e({id:"app.components.ToggleCheckbox.on-label",defaultMessage:"On"}),onChange:o=>{R({target:{name:"autoRegister",value:o.target.checked}})}})),a.createElement(d.GridItem,{col:6,m:6,s:12},a.createElement(f.Select,{disabled:!n,hint:e({id:"Settings.sso.form.defaultRole.description",defaultMessage:"It will attach the new authenticated user to the selected role"}),error:r.defaultRole?e({id:r.defaultRole.id,defaultMessage:r.defaultRole.id}):"",label:e({id:"Settings.sso.form.defaultRole.label",defaultMessage:"Default role"}),name:"defaultRole",onChange:o=>{R({target:{name:"defaultRole",value:o}})},placeholder:e({id:"components.InputSelect.option.placeholder",defaultMessage:"Choose here"}),value:u.defaultRole},Q.map(({id:o,name:$})=>a.createElement(f.Option,{key:o,value:o.toString()},$))))))))))},K=()=>a.createElement(l.CheckPagePermissions,{permissions:S.main},a.createElement(E,null))}}]);
@@ -1,82 +0,0 @@
1
- 'use strict';
2
-
3
- const { cloneDeep, has } = require('lodash/fp');
4
- const { hooks } = require('@strapi/utils');
5
-
6
- const permissionDomain = require('../../domain/permission');
7
-
8
- /**
9
- * Create a hook map used by the permission Engine
10
- */
11
- const createEngineHooks = () => ({
12
- willEvaluatePermission: hooks.createAsyncSeriesHook(),
13
- willRegisterPermission: hooks.createAsyncSeriesHook(),
14
- });
15
-
16
- /**
17
- * Create a context from a domain {@link Permission} used by the WillEvaluate hook
18
- * @param {Permission} permission
19
- * @return {{readonly permission: Permission, addCondition(string): this}}
20
- */
21
- const createWillEvaluateContext = (permission) => ({
22
- get permission() {
23
- return cloneDeep(permission);
24
- },
25
-
26
- addCondition(condition) {
27
- Object.assign(permission, permissionDomain.addCondition(condition, permission));
28
-
29
- return this;
30
- },
31
- });
32
-
33
- /**
34
- * Create a context from a casl Permission & some options
35
- * @param caslPermission
36
- * @param {object} options
37
- * @param {Permission} options.permission
38
- * @param {object} options.user
39
- */
40
- const createWillRegisterContext = (caslPermission, { permission, user }) => ({
41
- get permission() {
42
- return cloneDeep(permission);
43
- },
44
-
45
- get user() {
46
- return cloneDeep(user);
47
- },
48
-
49
- condition: {
50
- and(rawConditionObject) {
51
- if (!caslPermission.condition) {
52
- Object.assign(caslPermission, { condition: { $and: [] } });
53
- }
54
-
55
- caslPermission.condition.$and.push(rawConditionObject);
56
-
57
- return this;
58
- },
59
-
60
- or(rawConditionObject) {
61
- if (!caslPermission.condition) {
62
- Object.assign(caslPermission, { condition: { $and: [] } });
63
- }
64
-
65
- const orClause = caslPermission.condition.$and.find(has('$or'));
66
-
67
- if (orClause) {
68
- orClause.$or.push(rawConditionObject);
69
- } else {
70
- caslPermission.condition.$and.push({ $or: [rawConditionObject] });
71
- }
72
-
73
- return this;
74
- },
75
- },
76
- });
77
-
78
- module.exports = {
79
- createEngineHooks,
80
- createWillEvaluateContext,
81
- createWillRegisterContext,
82
- };