@strapi/admin 4.19.0 → 4.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{AdminSeatInfo-qX2sM70P.js → AdminSeatInfo-H-PA6GSR.js} +12 -13
- package/dist/_chunks/{AdminSeatInfo-qX2sM70P.js.map → AdminSeatInfo-H-PA6GSR.js.map} +1 -1
- package/dist/_chunks/{AdminSeatInfo-RawgDWj-.mjs → AdminSeatInfo-i1rd-M1M.mjs} +11 -12
- package/dist/_chunks/{AdminSeatInfo-RawgDWj-.mjs.map → AdminSeatInfo-i1rd-M1M.mjs.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-NOp7zFwi.mjs → AuthenticatedApp-DKV6vPyB.mjs} +21 -21
- package/dist/_chunks/{AuthenticatedApp-NOp7zFwi.mjs.map → AuthenticatedApp-DKV6vPyB.mjs.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-Vz4hNfIH.js → AuthenticatedApp-MdjV7Ts7.js} +21 -21
- package/dist/_chunks/{AuthenticatedApp-Vz4hNfIH.js.map → AuthenticatedApp-MdjV7Ts7.js.map} +1 -1
- package/dist/_chunks/{CreateActionEE-wZ329zt5.mjs → CreateActionEE-HlihxdRg.mjs} +3 -4
- package/dist/_chunks/{CreateActionEE-wZ329zt5.mjs.map → CreateActionEE-HlihxdRg.mjs.map} +1 -1
- package/dist/_chunks/{CreateActionEE-75bc0oef.js → CreateActionEE-i0ieUuZH.js} +4 -5
- package/dist/_chunks/{CreateActionEE-75bc0oef.js.map → CreateActionEE-i0ieUuZH.js.map} +1 -1
- package/dist/_chunks/{CreatePage-XDNrGyIA.mjs → CreatePage-9ewfnebV.mjs} +6 -6
- package/dist/_chunks/{CreatePage-XDNrGyIA.mjs.map → CreatePage-9ewfnebV.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-mkf7nRXj.js → CreatePage-bMJJfB85.js} +6 -6
- package/dist/_chunks/{CreatePage-mkf7nRXj.js.map → CreatePage-bMJJfB85.js.map} +1 -1
- package/dist/_chunks/{CreatePage-QH1DLZW_.mjs → CreatePage-ccn27toh.mjs} +16 -15
- package/dist/_chunks/CreatePage-ccn27toh.mjs.map +1 -0
- package/dist/_chunks/{CreatePage-beMm-uZ-.mjs → CreatePage-fzTcqNI4.mjs} +3 -3
- package/dist/_chunks/{CreatePage-beMm-uZ-.mjs.map → CreatePage-fzTcqNI4.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-v5EbopPP.js → CreatePage-khHUga68.js} +17 -16
- package/dist/_chunks/CreatePage-khHUga68.js.map +1 -0
- package/dist/_chunks/{CreatePage-BgcO3AqI.js → CreatePage-lA4NieHN.js} +3 -3
- package/dist/_chunks/{CreatePage-BgcO3AqI.js.map → CreatePage-lA4NieHN.js.map} +1 -1
- package/dist/_chunks/{CreateView-Ixck31v9.mjs → CreateView-5rpxCdVv.mjs} +6 -6
- package/dist/_chunks/{CreateView-Ixck31v9.mjs.map → CreateView-5rpxCdVv.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-eUzBn2dW.js → CreateView-8jUPMvKo.js} +6 -6
- package/dist/_chunks/{CreateView-eUzBn2dW.js.map → CreateView-8jUPMvKo.js.map} +1 -1
- package/dist/_chunks/{CreateView-Vu-6BJ7s.mjs → CreateView-QVnYlajx.mjs} +6 -6
- package/dist/_chunks/{CreateView-Vu-6BJ7s.mjs.map → CreateView-QVnYlajx.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-zBya6KTw.js → CreateView-_fvOtf_3.js} +6 -6
- package/dist/_chunks/{CreateView-zBya6KTw.js.map → CreateView-_fvOtf_3.js.map} +1 -1
- package/dist/_chunks/{EditPage-J6Rf9oKf.mjs → EditPage--J1dsByF.mjs} +4 -4
- package/dist/_chunks/{EditPage-J6Rf9oKf.mjs.map → EditPage--J1dsByF.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-ZjUUKii7.js → EditPage-DbHeF44w.js} +6 -6
- package/dist/_chunks/{EditPage-ZjUUKii7.js.map → EditPage-DbHeF44w.js.map} +1 -1
- package/dist/_chunks/{EditPage-getxBx6Z.js → EditPage-H0bd-bLV.js} +37 -36
- package/dist/_chunks/EditPage-H0bd-bLV.js.map +1 -0
- package/dist/_chunks/{EditPage-HXrULs9d.mjs → EditPage-RIOdcpEj.mjs} +12 -8
- package/dist/_chunks/EditPage-RIOdcpEj.mjs.map +1 -0
- package/dist/_chunks/{EditPage-lWoNefEi.mjs → EditPage-dvT_6puE.mjs} +6 -6
- package/dist/_chunks/{EditPage-lWoNefEi.mjs.map → EditPage-dvT_6puE.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-GDphIluA.js → EditPage-hzNbluF9.js} +4 -4
- package/dist/_chunks/{EditPage-GDphIluA.js.map → EditPage-hzNbluF9.js.map} +1 -1
- package/dist/_chunks/{EditPage-ztZL8xrI.mjs → EditPage-wizrdxWV.mjs} +36 -35
- package/dist/_chunks/EditPage-wizrdxWV.mjs.map +1 -0
- package/dist/_chunks/{EditPage-buPVDS8T.js → EditPage-zl5z376F.js} +12 -9
- package/dist/_chunks/EditPage-zl5z376F.js.map +1 -0
- package/dist/_chunks/{EditView-GLiFYAUa.js → EditView-502rB20x.js} +4 -4
- package/dist/_chunks/{EditView-GLiFYAUa.js.map → EditView-502rB20x.js.map} +1 -1
- package/dist/_chunks/{EditView-gst3Q76D.mjs → EditView-C5CfkXdo.mjs} +4 -4
- package/dist/_chunks/{EditView-gst3Q76D.mjs.map → EditView-C5CfkXdo.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-fv2kuIzu.mjs → EditViewPage-7PPdoPu1.mjs} +4 -4
- package/dist/_chunks/{EditViewPage-fv2kuIzu.mjs.map → EditViewPage-7PPdoPu1.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-MPKkl8pj.js → EditViewPage-fk4NgJzL.js} +4 -4
- package/dist/_chunks/{EditViewPage-MPKkl8pj.js.map → EditViewPage-fk4NgJzL.js.map} +1 -1
- package/dist/_chunks/{EventsTable-vZK_CTQU.mjs → EventsTable-aTOj5Iwg.mjs} +6 -6
- package/dist/_chunks/{EventsTable-vZK_CTQU.mjs.map → EventsTable-aTOj5Iwg.mjs.map} +1 -1
- package/dist/_chunks/{EventsTable-CV7xm5zl.js → EventsTable-ya4-snYx.js} +6 -6
- package/dist/_chunks/{EventsTable-CV7xm5zl.js.map → EventsTable-ya4-snYx.js.map} +1 -1
- package/dist/_chunks/{HomePage-J8ZfepOZ.mjs → HomePage-Dk4AIcd3.mjs} +5 -5
- package/dist/_chunks/{HomePage-J8ZfepOZ.mjs.map → HomePage-Dk4AIcd3.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-18iuexeb.js → HomePage-R3dDw217.js} +6 -7
- package/dist/_chunks/{HomePage-18iuexeb.js.map → HomePage-R3dDw217.js.map} +1 -1
- package/dist/_chunks/{HomePage-xgawLbxm.mjs → HomePage-XaLoeZiA.mjs} +6 -7
- package/dist/_chunks/{HomePage-xgawLbxm.mjs.map → HomePage-XaLoeZiA.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-xJWXSyMe.js → HomePage-fdjaJVMD.js} +5 -5
- package/dist/_chunks/{HomePage-xJWXSyMe.js.map → HomePage-fdjaJVMD.js.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-rU-_LUTN.mjs → InformationBoxEE-SBgONjAA.mjs} +3 -4
- package/dist/_chunks/{InformationBoxEE-rU-_LUTN.mjs.map → InformationBoxEE-SBgONjAA.mjs.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-J_ms6Ox-.js → InformationBoxEE-b6YVRmro.js} +4 -5
- package/dist/_chunks/{InformationBoxEE-J_ms6Ox-.js.map → InformationBoxEE-b6YVRmro.js.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-x83hq0Ar.js → InstalledPluginsPage-9nZMI2Qn.js} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-x83hq0Ar.js.map → InstalledPluginsPage-9nZMI2Qn.js.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-7WqMzI5n.mjs → InstalledPluginsPage-zCIdi0Uy.mjs} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-7WqMzI5n.mjs.map → InstalledPluginsPage-zCIdi0Uy.mjs.map} +1 -1
- package/dist/_chunks/{Layout-zWj_kIbj.js → Layout-FxM9OGbY.js} +2 -2
- package/dist/_chunks/{Layout-zWj_kIbj.js.map → Layout-FxM9OGbY.js.map} +1 -1
- package/dist/_chunks/{Layout-PTbeYyQq.mjs → Layout-vOoP2x6r.mjs} +2 -2
- package/dist/_chunks/{Layout-PTbeYyQq.mjs.map → Layout-vOoP2x6r.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-5APd7aTc.js → ListPage-8U_BR3wy.js} +7 -8
- package/dist/_chunks/{ListPage-5APd7aTc.js.map → ListPage-8U_BR3wy.js.map} +1 -1
- package/dist/_chunks/{ListPage-_R5YJkq6.mjs → ListPage-CxkXuNHa.mjs} +2 -2
- package/dist/_chunks/{ListPage-_R5YJkq6.mjs.map → ListPage-CxkXuNHa.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-tVXsHAt1.mjs → ListPage-Uce7hZa2.mjs} +7 -8
- package/dist/_chunks/{ListPage-tVXsHAt1.mjs.map → ListPage-Uce7hZa2.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-rQztZoE3.mjs → ListPage-aEm1evEt.mjs} +3 -3
- package/dist/_chunks/{ListPage-rQztZoE3.mjs.map → ListPage-aEm1evEt.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-x3LRX4sC.js → ListPage-aLr1BW3o.js} +8 -8
- package/dist/_chunks/{ListPage-x3LRX4sC.js.map → ListPage-aLr1BW3o.js.map} +1 -1
- package/dist/_chunks/{ListPage-yZj3Yt5r.js → ListPage-aRr9SKZt.js} +7 -8
- package/dist/_chunks/{ListPage-yZj3Yt5r.js.map → ListPage-aRr9SKZt.js.map} +1 -1
- package/dist/_chunks/{ListPage-Ykm_JxVX.mjs → ListPage-fEoCz13v.mjs} +8 -8
- package/dist/_chunks/{ListPage-Ykm_JxVX.mjs.map → ListPage-fEoCz13v.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-NSFhbGAZ.mjs → ListPage-h7pSwLwn.mjs} +6 -7
- package/dist/_chunks/{ListPage-NSFhbGAZ.mjs.map → ListPage-h7pSwLwn.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-WQ27QMWQ.js → ListPage-hD4Bhhn0.js} +3 -3
- package/dist/_chunks/{ListPage-WQ27QMWQ.js.map → ListPage-hD4Bhhn0.js.map} +1 -1
- package/dist/_chunks/{ListPage-imJlOUis.mjs → ListPage-oQRoZt1p.mjs} +4 -4
- package/dist/_chunks/{ListPage-imJlOUis.mjs.map → ListPage-oQRoZt1p.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-lG6n0cR5.js → ListPage-xkElwKJ3.js} +2 -2
- package/dist/_chunks/{ListPage-lG6n0cR5.js.map → ListPage-xkElwKJ3.js.map} +1 -1
- package/dist/_chunks/{ListPage-E1x-qrkF.js → ListPage-yCO88Fhj.js} +4 -4
- package/dist/_chunks/{ListPage-E1x-qrkF.js.map → ListPage-yCO88Fhj.js.map} +1 -1
- package/dist/_chunks/{ListView-C4_qI4I-.mjs → ListView-2uBQgcn1.mjs} +3 -3
- package/dist/_chunks/{ListView-C4_qI4I-.mjs.map → ListView-2uBQgcn1.mjs.map} +1 -1
- package/dist/_chunks/{ListView-2m4WvFKV.mjs → ListView-BiPc2Nc1.mjs} +3 -3
- package/dist/_chunks/{ListView-2m4WvFKV.mjs.map → ListView-BiPc2Nc1.mjs.map} +1 -1
- package/dist/_chunks/{ListView-3J54TIVz.js → ListView-f-iZxI3O.js} +3 -3
- package/dist/_chunks/{ListView-3J54TIVz.js.map → ListView-f-iZxI3O.js.map} +1 -1
- package/dist/_chunks/{ListView-X-jykpTn.js → ListView-zpxUYNEB.js} +3 -3
- package/dist/_chunks/{ListView-X-jykpTn.js.map → ListView-zpxUYNEB.js.map} +1 -1
- package/dist/_chunks/{Login-j7BE_1eG.mjs → Login-72rL2XBD.mjs} +2 -2
- package/dist/_chunks/{Login-j7BE_1eG.mjs.map → Login-72rL2XBD.mjs.map} +1 -1
- package/dist/_chunks/{Login-_3hyJ-yA.js → Login-GuAgUKyi.js} +2 -2
- package/dist/_chunks/{Login-_3hyJ-yA.js.map → Login-GuAgUKyi.js.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-Mw3_4xMD.mjs → MagicLinkEE-N2zwtkqY.mjs} +4 -4
- package/dist/_chunks/{MagicLinkEE-Mw3_4xMD.mjs.map → MagicLinkEE-N2zwtkqY.mjs.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-RBmakdh1.js → MagicLinkEE-swRqjFLM.js} +4 -4
- package/dist/_chunks/{MagicLinkEE-RBmakdh1.js.map → MagicLinkEE-swRqjFLM.js.map} +1 -1
- package/dist/_chunks/{MarketplacePage-d_pQoh5h.mjs → MarketplacePage-1GNjM--m.mjs} +3 -3
- package/dist/_chunks/{MarketplacePage-d_pQoh5h.mjs.map → MarketplacePage-1GNjM--m.mjs.map} +1 -1
- package/dist/_chunks/{MarketplacePage--qZW1C_M.js → MarketplacePage-Ie2Wpbov.js} +3 -3
- package/dist/_chunks/{MarketplacePage--qZW1C_M.js.map → MarketplacePage-Ie2Wpbov.js.map} +1 -1
- package/dist/_chunks/{Permissions-YjqLnqwc.mjs → Permissions-o4NR8n4u.mjs} +2 -2
- package/dist/_chunks/{Permissions-YjqLnqwc.mjs.map → Permissions-o4NR8n4u.mjs.map} +1 -1
- package/dist/_chunks/{Permissions-5Idi1hGl.js → Permissions-wGVKNPCK.js} +2 -2
- package/dist/_chunks/{Permissions-5Idi1hGl.js.map → Permissions-wGVKNPCK.js.map} +1 -1
- package/dist/_chunks/{ProfilePage-Sv3HPL8I.js → ProfilePage-JW3-kFIA.js} +3 -3
- package/dist/_chunks/{ProfilePage-Sv3HPL8I.js.map → ProfilePage-JW3-kFIA.js.map} +1 -1
- package/dist/_chunks/{ProfilePage-HEWNqKF6.mjs → ProfilePage-SsdeVqyx.mjs} +3 -3
- package/dist/_chunks/{ProfilePage-HEWNqKF6.mjs.map → ProfilePage-SsdeVqyx.mjs.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-nO_l9SSd.mjs → ReviewWorkflowsColumn-UM9eh2AB.mjs} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-nO_l9SSd.mjs.map → ReviewWorkflowsColumn-UM9eh2AB.mjs.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-Rs6ZsFMn.js → ReviewWorkflowsColumn-wZiAM18-.js} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-Rs6ZsFMn.js.map → ReviewWorkflowsColumn-wZiAM18-.js.map} +1 -1
- package/dist/_chunks/{SelectRoles-kY2cQn9t.mjs → SelectRoles-L0wvwsmn.mjs} +3 -3
- package/dist/_chunks/{SelectRoles-kY2cQn9t.mjs.map → SelectRoles-L0wvwsmn.mjs.map} +1 -1
- package/dist/_chunks/{SelectRoles-KatT_FIg.js → SelectRoles-Y4Dy5Ruk.js} +3 -3
- package/dist/_chunks/{SelectRoles-KatT_FIg.js.map → SelectRoles-Y4Dy5Ruk.js.map} +1 -1
- package/dist/_chunks/{SettingsPage-p9I4yN8G.mjs → SettingsPage-OF4cOZEX.mjs} +21 -21
- package/dist/_chunks/{SettingsPage-p9I4yN8G.mjs.map → SettingsPage-OF4cOZEX.mjs.map} +1 -1
- package/dist/_chunks/{SettingsPage-ZgiejZbl.js → SettingsPage-pN2zNJja.js} +21 -21
- package/dist/_chunks/{SettingsPage-ZgiejZbl.js.map → SettingsPage-pN2zNJja.js.map} +1 -1
- package/dist/_chunks/{SingleSignOnPage-hPJ-ktE8.mjs → SingleSignOnPage-CP90POdb.mjs} +3 -3
- package/dist/_chunks/{SingleSignOnPage-hPJ-ktE8.mjs.map → SingleSignOnPage-CP90POdb.mjs.map} +1 -1
- package/dist/_chunks/{SingleSignOnPage-uwvm37vG.js → SingleSignOnPage-fGCF236F.js} +3 -3
- package/dist/_chunks/{SingleSignOnPage-uwvm37vG.js.map → SingleSignOnPage-fGCF236F.js.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect-g1CejzJb.js → TokenTypeSelect-E1lcj1HQ.js} +2 -2
- package/dist/_chunks/{TokenTypeSelect-g1CejzJb.js.map → TokenTypeSelect-E1lcj1HQ.js.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect-Zug5LBS9.mjs → TokenTypeSelect-Gf6YWKV8.mjs} +2 -2
- package/dist/_chunks/{TokenTypeSelect-Zug5LBS9.mjs.map → TokenTypeSelect-Gf6YWKV8.mjs.map} +1 -1
- package/dist/_chunks/{apiTokens-3JqiL0FP.mjs → apiTokens-6eq7TOjP.mjs} +2 -2
- package/dist/_chunks/{apiTokens-3JqiL0FP.mjs.map → apiTokens-6eq7TOjP.mjs.map} +1 -1
- package/dist/_chunks/{apiTokens-mO11QotK.js → apiTokens-WHkSHzkL.js} +2 -2
- package/dist/_chunks/{apiTokens-mO11QotK.js.map → apiTokens-WHkSHzkL.js.map} +1 -1
- package/dist/_chunks/{constants-oJsAomZe.js → constants-6P0B98vR.js} +2 -2
- package/dist/_chunks/{constants-oJsAomZe.js.map → constants-6P0B98vR.js.map} +1 -1
- package/dist/_chunks/{constants-cgzxEZpW.js → constants-6_Ji9v3C.js} +6 -6
- package/dist/_chunks/{constants-cgzxEZpW.js.map → constants-6_Ji9v3C.js.map} +1 -1
- package/dist/_chunks/{constants-SQ2dZAhr.js → constants-7l193VJl.js} +2 -2
- package/dist/_chunks/{constants-SQ2dZAhr.js.map → constants-7l193VJl.js.map} +1 -1
- package/dist/_chunks/{constants-EWIwy2Lb.mjs → constants-QcAGYy1f.mjs} +2 -2
- package/dist/_chunks/{constants-EWIwy2Lb.mjs.map → constants-QcAGYy1f.mjs.map} +1 -1
- package/dist/_chunks/{constants-oLogFPZi.mjs → constants-V6ogbA_Q.mjs} +4 -4
- package/dist/_chunks/{constants-oLogFPZi.mjs.map → constants-V6ogbA_Q.mjs.map} +1 -1
- package/dist/_chunks/{constants-GJB9U_2a.js → constants-m2b3phv4.js} +4 -4
- package/dist/_chunks/{constants-GJB9U_2a.js.map → constants-m2b3phv4.js.map} +1 -1
- package/dist/_chunks/{constants-ZQGaS2zq.mjs → constants-rHR3EQdj.mjs} +2 -2
- package/dist/_chunks/{constants-ZQGaS2zq.mjs.map → constants-rHR3EQdj.mjs.map} +1 -1
- package/dist/_chunks/{constants-HNN5YvZM.mjs → constants-sJFx6aQR.mjs} +6 -6
- package/dist/_chunks/{constants-HNN5YvZM.mjs.map → constants-sJFx6aQR.mjs.map} +1 -1
- package/dist/_chunks/{en-NIBEogzH.mjs → en-ZBAy2GQ0.mjs} +7 -1
- package/dist/_chunks/{en-NIBEogzH.mjs.map → en-ZBAy2GQ0.mjs.map} +1 -1
- package/dist/_chunks/{en-JwrMNR-h.js → en-l5S8Gv-y.js} +7 -1
- package/dist/_chunks/{en-JwrMNR-h.js.map → en-l5S8Gv-y.js.map} +1 -1
- package/dist/_chunks/{index-LblG7sy4.mjs → index-KLPMzfLn.mjs} +416 -187
- package/dist/_chunks/index-KLPMzfLn.mjs.map +1 -0
- package/dist/_chunks/{index-3OoQJD2O.js → index-vftGzD-K.js} +413 -184
- package/dist/_chunks/index-vftGzD-K.js.map +1 -0
- package/dist/_chunks/{reviewWorkflows-VsENEtCZ.mjs → reviewWorkflows-2vhxGG5r.mjs} +12 -12
- package/dist/_chunks/reviewWorkflows-2vhxGG5r.mjs.map +1 -0
- package/dist/_chunks/{reviewWorkflows-Q34tLlgw.js → reviewWorkflows-Tj9WSo1x.js} +12 -12
- package/dist/_chunks/reviewWorkflows-Tj9WSo1x.js.map +1 -0
- package/dist/_chunks/{transferTokens-cNXBS34Y.js → transferTokens-EK2ohR1y.js} +2 -2
- package/dist/_chunks/{transferTokens-cNXBS34Y.js.map → transferTokens-EK2ohR1y.js.map} +1 -1
- package/dist/_chunks/{transferTokens-liO4cxgc.mjs → transferTokens-WwK-ykRw.mjs} +2 -2
- package/dist/_chunks/{transferTokens-liO4cxgc.mjs.map → transferTokens-WwK-ykRw.mjs.map} +1 -1
- package/dist/_chunks/{useAdminRoles-3IgPJu3y.js → useAdminRoles-NvHHOpQ2.js} +2 -2
- package/dist/_chunks/{useAdminRoles-3IgPJu3y.js.map → useAdminRoles-NvHHOpQ2.js.map} +1 -1
- package/dist/_chunks/{useAdminRoles-vkrNCJ0G.mjs → useAdminRoles-UhbPCKxf.mjs} +2 -2
- package/dist/_chunks/{useAdminRoles-vkrNCJ0G.mjs.map → useAdminRoles-UhbPCKxf.mjs.map} +1 -1
- package/dist/_chunks/{useContentTypes-yBTP01dT.js → useContentTypes-P2Cw5O0Q.js} +2 -2
- package/dist/_chunks/{useContentTypes-yBTP01dT.js.map → useContentTypes-P2Cw5O0Q.js.map} +1 -1
- package/dist/_chunks/{useContentTypes-hyaDV7vW.mjs → useContentTypes-xc06YDmc.mjs} +2 -2
- package/dist/_chunks/{useContentTypes-hyaDV7vW.mjs.map → useContentTypes-xc06YDmc.mjs.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-IGSEKF_A.mjs → useLicenseLimitNotification-EQiK5CGO.mjs} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-IGSEKF_A.mjs.map → useLicenseLimitNotification-EQiK5CGO.mjs.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-V_EIX5NN.js → useLicenseLimitNotification-g9A_uMdX.js} +3 -3
- package/dist/_chunks/{useLicenseLimitNotification-V_EIX5NN.js.map → useLicenseLimitNotification-g9A_uMdX.js.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-8dwtECQ8.js → useReviewWorkflows-0KWVUWjY.js} +2 -2
- package/dist/_chunks/{useReviewWorkflows-8dwtECQ8.js.map → useReviewWorkflows-0KWVUWjY.js.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-_5iMJ_bQ.mjs → useReviewWorkflows-MQTwtA8V.mjs} +2 -2
- package/dist/_chunks/{useReviewWorkflows-_5iMJ_bQ.mjs.map → useReviewWorkflows-MQTwtA8V.mjs.map} +1 -1
- package/dist/_chunks/{useWebhooks-1cD-Wjh6.mjs → useWebhooks-0S-LOa28.mjs} +2 -2
- package/dist/_chunks/{useWebhooks-1cD-Wjh6.mjs.map → useWebhooks-0S-LOa28.mjs.map} +1 -1
- package/dist/_chunks/{useWebhooks-WLn3OtSg.js → useWebhooks-H34bjR-D.js} +2 -2
- package/dist/_chunks/{useWebhooks-WLn3OtSg.js.map → useWebhooks-H34bjR-D.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-_OqTLm6C.js → validateWorkflow-9Lwvkrq0.js} +2 -2
- package/dist/_chunks/{validateWorkflow-_OqTLm6C.js.map → validateWorkflow-9Lwvkrq0.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-aPtygwAZ.mjs → validateWorkflow-rJbqicXR.mjs} +2 -2
- package/dist/_chunks/{validateWorkflow-aPtygwAZ.mjs.map → validateWorkflow-rJbqicXR.mjs.map} +1 -1
- package/dist/admin/index.js +2 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +3 -2
- package/dist/admin/src/content-manager/components/BlocksInput/BlocksContent.d.ts +4 -3
- package/dist/admin/src/content-manager/components/BlocksInput/BlocksEditor.d.ts +3 -2
- package/dist/admin/src/content-manager/components/BlocksInput/BlocksInput.d.ts +2 -1
- package/dist/admin/src/content-manager/pages/ListView/components/AutoCloneFailureModal.d.ts +12 -0
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +2 -2
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflows.d.ts +6 -2
- package/dist/ee/admin/src/services/reviewWorkflows.d.ts +5 -1
- package/dist/shared/contracts/admin.d.ts +7 -1
- package/dist/shared/contracts/admin.d.ts.map +1 -1
- package/dist/shared/contracts/review-workflows.d.ts +6 -2
- package/dist/shared/contracts/review-workflows.d.ts.map +1 -1
- package/package.json +13 -13
- package/dist/_chunks/CreatePage-QH1DLZW_.mjs.map +0 -1
- package/dist/_chunks/CreatePage-v5EbopPP.js.map +0 -1
- package/dist/_chunks/EditPage-HXrULs9d.mjs.map +0 -1
- package/dist/_chunks/EditPage-buPVDS8T.js.map +0 -1
- package/dist/_chunks/EditPage-getxBx6Z.js.map +0 -1
- package/dist/_chunks/EditPage-ztZL8xrI.mjs.map +0 -1
- package/dist/_chunks/index-3OoQJD2O.js.map +0 -1
- package/dist/_chunks/index-LblG7sy4.mjs.map +0 -1
- package/dist/_chunks/reviewWorkflows-Q34tLlgw.js.map +0 -1
- package/dist/_chunks/reviewWorkflows-VsENEtCZ.mjs.map +0 -1
- package/dist/_chunks/useLicenseLimits-Du8knwsR.js +0 -41
- package/dist/_chunks/useLicenseLimits-Du8knwsR.js.map +0 -1
- package/dist/_chunks/useLicenseLimits-gAX0JFIu.mjs +0 -23
- package/dist/_chunks/useLicenseLimits-gAX0JFIu.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditViewPage-MPKkl8pj.js","sources":["../../admin/src/services/contentApi.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/LoadingView.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollabsableContentType.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/constants.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.tsx"],"sourcesContent":["import { adminApi } from './api';\n\nimport type { List as ListContentApiPermissions } from '../../../shared/contracts/content-api/permissions';\nimport type { List as ListContentApiRoutes } from '../../../shared/contracts/content-api/routes';\n\nconst contentApiService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getPermissions: builder.query<ListContentApiPermissions.Response['data'], void>({\n query: () => '/admin/content-api/permissions',\n transformResponse: (response: ListContentApiPermissions.Response) => response.data,\n }),\n getRoutes: builder.query<ListContentApiRoutes.Response['data'], void>({\n query: () => '/admin/content-api/routes',\n transformResponse: (response: ListContentApiRoutes.Response) => response.data,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetPermissionsQuery, useGetRoutesQuery } = contentApiService;\n\nexport { useGetPermissionsQuery, useGetRoutesQuery };\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { List as ListContentApiPermissions } from '../../../../../../../shared/contracts/content-api/permissions';\nimport { List as ListContentApiRoutes } from '../../../../../../../shared/contracts/content-api/routes';\n\nexport interface PseudoEvent {\n target: { value: string };\n}\n\ninterface ApiTokenPermissionsContextValue {\n value: {\n selectedAction: string | null;\n routes: ListContentApiRoutes.Response['data'];\n selectedActions: string[];\n data: {\n allActionsIds: string[];\n permissions: ListContentApiPermissions.Response['data'][];\n };\n onChange: ({ target: { value } }: PseudoEvent) => void;\n onChangeSelectAll: ({\n target: { value },\n }: {\n target: { value: { action: string; actionId: string }[] };\n }) => void;\n setSelectedAction: ({ target: { value } }: PseudoEvent) => void;\n };\n}\n\ninterface ApiTokenPermissionsContextProviderProps extends ApiTokenPermissionsContextValue {\n children: React.ReactNode | React.ReactNode[];\n}\n\nconst [ApiTokenPermissionsContextProvider, useApiTokenPermissionsContext] =\n createContext<ApiTokenPermissionsContextValue>('ApiTokenPermissionsContext');\n\nconst ApiTokenPermissionsProvider = ({\n children,\n ...rest\n}: ApiTokenPermissionsContextProviderProps) => {\n return (\n <ApiTokenPermissionsContextProvider {...rest}>{children}</ApiTokenPermissionsContextProvider>\n );\n};\n\nconst useApiTokenPermissions = () => useApiTokenPermissionsContext('useApiTokenPermissions');\n\nexport { ApiTokenPermissionsProvider, useApiTokenPermissions };\nexport type { ApiTokenPermissionsContextValue, ApiTokenPermissionsContextProviderProps };\n","import * as React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { LifeSpanInput } from '../../../../components/Tokens/LifeSpanInput';\nimport { TokenDescription } from '../../../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../../../components/Tokens/TokenTypeSelect';\n\nimport type { ApiToken } from '../../../../../../../../shared/contracts/api-token';\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n onDispatch: React.Dispatch<any>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\n\nexport const FormApiTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values = {},\n apiToken = {},\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem key=\"name\" col={6} xs={12}>\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </GridItem>\n\n <GridItem key=\"type\" col={6} xs={12}>\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n handleChangeSelectApiTokenType({ target: { value } });\n\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n onChange({ target: { name: 'type', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n","import { Button, ContentLayout, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFocusWhenNavigate,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface LoadingViewProps {\n apiTokenName?: string | null;\n}\n\nexport const LoadingView = ({ apiTokenName = null }: LoadingViewProps) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"API Tokens\" />\n <HeaderLayout\n primaryAction={\n <Button disabled startIcon={<Check />} type=\"button\" size=\"L\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={\n apiTokenName ||\n formatMessage({\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n","import React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport { useIntl } from 'react-intl';\nimport styled, { DefaultTheme } from 'styled-components';\n\ntype HttpVerb = 'POST' | 'GET' | 'PUT' | 'DELETE';\n\ntype MethodColor = {\n text: keyof DefaultTheme['colors'];\n border: keyof DefaultTheme['colors'];\n background: keyof DefaultTheme['colors'];\n};\n\nconst getMethodColor = (verb: HttpVerb): MethodColor => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nconst MethodBox = styled(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\ninterface BoundRouteProps {\n route: {\n handler: string;\n method: HttpVerb;\n path: string;\n };\n}\n\nexport const BoundRoute = ({\n route = {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n}: BoundRouteProps) => {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n \n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n};\n","import { Flex, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { BoundRoute } from './BoundRoute';\n\nexport const ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <GridItem\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {actionSection &&\n actionSection in routes &&\n routes[actionSection].map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </GridItem>\n );\n};\n","import * as React from 'react';\n\nimport {\n Accordion,\n AccordionContent,\n AccordionToggle,\n Box,\n Checkbox,\n Flex,\n Grid,\n GridItem,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport styled, { css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n svg {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled(Box)<{ isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n svg {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n onExpanded?: (orderNumber: number) => void;\n indexExpandendCollapsedContent: number | null;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n onExpanded = () => null,\n indexExpandendCollapsedContent = null,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const [expanded, setExpanded] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const handleExpandedAccordion = () => {\n setExpanded((s) => !s);\n onExpanded(orderNumber);\n };\n\n React.useEffect(() => {\n if (\n indexExpandendCollapsedContent !== null &&\n indexExpandendCollapsedContent !== orderNumber &&\n expanded\n ) {\n setExpanded(false);\n }\n }, [indexExpandendCollapsedContent, orderNumber, expanded]);\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion\n expanded={expanded}\n onToggle={handleExpandedAccordion}\n variant={orderNumber % 2 ? 'primary' : 'secondary'}\n >\n <AccordionToggle title={capitalize(label)} />\n <AccordionContent>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n value={allActionsSelected}\n indeterminate={!allActionsSelected && someActionsSelected}\n onValueChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <GridItem col={6} key={action.actionId}>\n <CheckboxWrapper\n isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n value={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onValueChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n {action.action}\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog />\n </button>\n </CheckboxWrapper>\n </GridItem>\n );\n })}\n </Grid>\n </Box>\n );\n })}\n </AccordionContent>\n </Accordion>\n );\n};\n","import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\nimport { CollapsableContentType } from './CollabsableContentType';\n\ninterface ContentTypesSectionProps {\n section: ContentApiPermission[] | null;\n}\n\nexport const ContentTypesSection = ({ section = null, ...props }: ContentTypesSectionProps) => {\n const [indexExpandedCollpsedContent, setIndexExpandedCollpsedContent] = React.useState<\n null | number\n >(null);\n const handleExpandedCollpsedContentIndex = (index: number) =>\n setIndexExpandedCollpsedContent(index);\n\n return (\n <Box padding={4} background=\"neutral0\">\n {section &&\n section.map((api, index) => (\n <CollapsableContentType\n key={api.apiId}\n label={api.label}\n controllers={api.controllers}\n orderNumber={index}\n indexExpandendCollapsedContent={indexExpandedCollpsedContent}\n onExpanded={handleExpandedCollpsedContentIndex}\n {...props}\n />\n ))}\n </Box>\n );\n};\n","import { Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { ActionBoundRoutes } from './ActionBoundRoutes';\nimport { ContentTypesSection } from './ContentTypesSection';\n\nexport const Permissions = ({ ...props }) => {\n const {\n value: { data },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n return (\n <Grid gap={0} shadow=\"filterShadow\" hasRadius background=\"neutral0\">\n <GridItem col={7} paddingTop={6} paddingBottom={6} paddingLeft={7} paddingRight={7}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.title',\n defaultMessage: 'Permissions',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.description',\n defaultMessage: 'Only actions bound by a route are listed below.',\n })}\n </Typography>\n </Flex>\n {data?.permissions && <ContentTypesSection section={data?.permissions} {...props} />}\n </GridItem>\n <ActionBoundRoutes />\n </Grid>\n );\n};\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nexport const schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required),\n type: yup\n .string()\n .oneOf(['read-only', 'full-access', 'custom'])\n .required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n});\n","import { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\ninterface Layout {\n allActionsIds: string[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { action: string; actionId: string }[] }[];\n }[];\n}\n\nexport const transformPermissionsData = (data: ContentApiPermission) => {\n const layout: Layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.entries(data).map(([apiId, permission]) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(permission.controllers)\n .map((controller) => ({\n controller,\n actions:\n controller in permission.controllers\n ? permission.controllers[controller]\n .map((action: ContentApiPermission['controllers']) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n })\n .flat()\n : [],\n }))\n .flat(),\n }));\n\n return layout;\n};\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\nimport pull from 'lodash/pull';\n\nimport { ContentApiPermission } from '../../../../../../../shared/contracts/content-api/permissions';\n\nimport { ApiTokenPermissionsContextValue } from './apiTokenPermissions';\nimport { transformPermissionsData } from './utils/transformPermissionsData';\n\ntype InitialState = Pick<\n ApiTokenPermissionsContextValue['value'],\n 'data' | 'routes' | 'selectedAction' | 'selectedActions'\n>;\n\ninterface ActionOnChange {\n type: 'ON_CHANGE';\n value: string;\n}\n\ninterface ActionSelectAllInPermission {\n type: 'SELECT_ALL_IN_PERMISSION';\n value: { action: string; actionId: string }[];\n}\n\ninterface ActionSelectAllActions {\n type: 'SELECT_ALL_ACTIONS';\n}\n\ninterface ActionOnChangeReadOnly {\n type: 'ON_CHANGE_READ_ONLY';\n}\n\ninterface ActionUpdatePermissionsLayout {\n type: 'UPDATE_PERMISSIONS_LAYOUT';\n value: ContentApiPermission;\n}\n\ninterface ActionUpdateRoutes {\n type: 'UPDATE_ROUTES';\n value: ApiTokenPermissionsContextValue['value']['routes'] | undefined;\n}\n\ninterface ActionUpdatePermissions {\n type: 'UPDATE_PERMISSIONS';\n value: any[];\n}\n\ninterface ActionSetSelectedAction {\n type: 'SET_SELECTED_ACTION';\n value: string;\n}\n\ntype Action =\n | ActionOnChange\n | ActionSelectAllInPermission\n | ActionSelectAllActions\n | ActionOnChangeReadOnly\n | ActionUpdatePermissionsLayout\n | ActionUpdateRoutes\n | ActionUpdatePermissions\n | ActionSetSelectedAction;\n\nexport const initialState: InitialState = {\n data: {\n allActionsIds: [],\n permissions: [],\n },\n routes: {},\n selectedAction: '',\n selectedActions: [],\n};\n\nexport const reducer = (state: InitialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE': {\n if (draftState.selectedActions.includes(action.value)) {\n pull(draftState.selectedActions, action.value);\n } else {\n draftState.selectedActions.push(action.value);\n }\n break;\n }\n case 'SELECT_ALL_IN_PERMISSION': {\n const areAllSelected = action.value.every((item) =>\n draftState.selectedActions.includes(item.actionId)\n );\n\n if (areAllSelected) {\n action.value.forEach((item) => {\n pull(draftState.selectedActions, item.actionId);\n });\n } else {\n action.value.forEach((item) => {\n draftState.selectedActions.push(item.actionId);\n });\n }\n break;\n }\n\n case 'SELECT_ALL_ACTIONS': {\n draftState.selectedActions = [...draftState.data.allActionsIds];\n\n break;\n }\n case 'ON_CHANGE_READ_ONLY': {\n const onlyReadOnlyActions = draftState.data.allActionsIds.filter(\n (actionId) => actionId.includes('find') || actionId.includes('findOne')\n );\n draftState.selectedActions = [...onlyReadOnlyActions];\n break;\n }\n case 'UPDATE_PERMISSIONS_LAYOUT': {\n draftState.data = transformPermissionsData(action.value);\n break;\n }\n case 'UPDATE_ROUTES': {\n draftState.routes = { ...action.value };\n break;\n }\n case 'UPDATE_PERMISSIONS': {\n draftState.selectedActions = [...action.value];\n break;\n }\n case 'SET_SELECTED_ACTION': {\n draftState.selectedAction = action.value;\n break;\n }\n default:\n return draftState;\n }\n });\n","import * as React from 'react';\n\nimport { ContentLayout, Flex, Main } from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useTypedSelector } from '../../../../../core/store/hooks';\nimport {\n useCreateAPITokenMutation,\n useGetAPITokenQuery,\n useUpdateAPITokenMutation,\n} from '../../../../../services/apiTokens';\nimport { useGetPermissionsQuery, useGetRoutesQuery } from '../../../../../services/contentApi';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { API_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport { FormHead } from '../../../components/Tokens/FormHead';\nimport { TokenBox } from '../../../components/Tokens/TokenBox';\n\nimport {\n ApiTokenPermissionsContextValue,\n ApiTokenPermissionsProvider,\n} from './apiTokenPermissions';\nimport { FormApiTokenContainer } from './components/FormApiTokenContainer';\nimport { LoadingView } from './components/LoadingView';\nimport { Permissions } from './components/Permissions';\nimport { schema } from './constants';\nimport { initialState, reducer } from './reducer';\n\nimport type { Get, ApiToken } from '../../../../../../../shared/contracts/api-token';\n\n/**\n * TODO: this could definitely be refactored to avoid using redux and instead just use the\n * server response as the source of the truth for the data.\n */\nexport const EditView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { state: locationState } = useLocation<{ apiToken: ApiToken }>();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [apiToken, setApiToken] = React.useState<ApiToken | null>(\n locationState?.apiToken?.accessKey\n ? {\n ...locationState.apiToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const { setCurrentStep } = useGuidedTour();\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings?.['api-tokens']);\n const [state, dispatch] = React.useReducer(reducer, initialState);\n const match = useRouteMatch<{ id: string }>('/settings/api-tokens/:id');\n const id = match?.params?.id;\n const isCreating = id === 'create';\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidtionErrors,\n } = useAPIErrorHandler();\n\n const history = useHistory();\n\n const contentAPIPermissionsQuery = useGetPermissionsQuery();\n const contentAPIRoutesQuery = useGetRoutesQuery();\n\n /**\n * Separate effects otherwise we could end\n * up duplicating the same notification.\n */\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(contentAPIPermissionsQuery.error),\n });\n }\n }, [contentAPIPermissionsQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(contentAPIRoutesQuery.error),\n });\n }\n }, [contentAPIRoutesQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.data) {\n dispatch({\n type: 'UPDATE_PERMISSIONS_LAYOUT',\n value: contentAPIPermissionsQuery.data,\n });\n }\n }, [contentAPIPermissionsQuery.data]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.data) {\n dispatch({\n type: 'UPDATE_ROUTES',\n value: contentAPIRoutesQuery.data,\n });\n }\n }, [contentAPIRoutesQuery.data]);\n\n React.useEffect(() => {\n if (apiToken) {\n if (apiToken.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (apiToken.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (apiToken.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: apiToken?.permissions,\n });\n }\n }\n }, [apiToken]);\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error, isLoading } = useGetAPITokenQuery(id!, {\n skip: !id || isCreating || !!apiToken,\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (data) {\n setApiToken(data);\n\n if (data.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (data.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (data.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: data?.permissions,\n });\n }\n }\n }, [data]);\n\n const [createToken] = useCreateAPITokenMutation();\n const [updateToken] = useUpdateAPITokenMutation();\n\n interface FormValues extends Pick<Get.Response['data'], 'name' | 'description'> {\n lifespan: Get.Response['data']['lifespan'] | undefined;\n type: Get.Response['data']['type'] | undefined;\n }\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: API_TOKEN_TYPE,\n });\n\n // @ts-expect-error context assertation\n lockApp();\n\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // in case a token has a lifespan of \"unlimited\" the API only accepts zero as a number\n lifespan: body.lifespan === '0' ? parseInt(body.lifespan) : null,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokencreated',\n defaultMessage: 'API Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n\n history.replace(`/settings/api-tokens/${res.data.id}`, { apiToken: res.data });\n setCurrentStep('apiTokens.success');\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n type: body.type,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokenedited',\n defaultMessage: 'API Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n }\n } catch {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n },\n });\n } finally {\n // @ts-expect-error context assertation\n unlockApp();\n }\n };\n\n const [hasChangedPermissions, setHasChangedPermissions] = React.useState(false);\n\n const handleChangeCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChange']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'ON_CHANGE',\n value,\n });\n };\n\n const handleChangeSelectAllCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChangeSelectAll']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'SELECT_ALL_IN_PERMISSION',\n value,\n });\n };\n\n const setSelectedAction = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['setSelectedAction']>[0]) => {\n dispatch({\n type: 'SET_SELECTED_ACTION',\n value,\n });\n };\n\n const providerValue = {\n ...state,\n onChange: handleChangeCheckbox,\n onChangeSelectAll: handleChangeSelectAllCheckbox,\n setSelectedAction,\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n\n if (isLoading) {\n return <LoadingView apiTokenName={apiToken?.name} />;\n }\n\n return (\n <ApiTokenPermissionsProvider value={providerValue}>\n <Main>\n <SettingsPageTitle name=\"API Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: apiToken?.name || '',\n description: apiToken?.description || '',\n type: apiToken?.type,\n lifespan: apiToken?.lifespan ? apiToken.lifespan.toString() : apiToken?.lifespan,\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values, setFieldValue }) => {\n if (hasChangedPermissions && values?.type !== 'custom') {\n setFieldValue('type', 'custom');\n }\n\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/api-tokens\"\n title={{\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n }}\n token={apiToken}\n setToken={setApiToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/api-tokens/\"\n />\n\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(apiToken?.name) && (\n <TokenBox token={apiToken?.accessKey} tokenType={API_TOKEN_TYPE} />\n )}\n <FormApiTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n apiToken={apiToken}\n onDispatch={dispatch}\n setHasChangedPermissions={setHasChangedPermissions}\n />\n <Permissions\n disabled={\n !canEditInputs ||\n values?.type === 'read-only' ||\n values?.type === 'full-access'\n }\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n </ApiTokenPermissionsProvider>\n );\n};\n\nexport const ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens'].read\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n"],"names":["adminApi","createContext","jsx","useIntl","Box","Flex","Typography","jsxs","Grid","GridItem","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","useFocusWhenNavigate","Main","SettingsPageTitle","HeaderLayout","Button","Check","ContentLayout","LoadingIndicatorPage","styled","tail","css","React","Accordion","AccordionToggle","capitalize","AccordionContent","Checkbox","Cog","index","yup","translatedErrors","produce","pull","useNotification","useOverlayBlocker","useLocation","useTypedSelector","state","useTracking","useGuidedTour","useRBAC","useRouteMatch","useAPIErrorHandler","useHistory","API_TOKEN_TYPE","useGetAPITokenQuery","useCreateAPITokenMutation","useUpdateAPITokenMutation","formik","isBaseQueryError","Formik","Form","FormHead","TokenBox","CheckPagePermissions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditViewPage-fk4NgJzL.js","sources":["../../admin/src/services/contentApi.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/LoadingView.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollabsableContentType.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/constants.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.tsx"],"sourcesContent":["import { adminApi } from './api';\n\nimport type { List as ListContentApiPermissions } from '../../../shared/contracts/content-api/permissions';\nimport type { List as ListContentApiRoutes } from '../../../shared/contracts/content-api/routes';\n\nconst contentApiService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getPermissions: builder.query<ListContentApiPermissions.Response['data'], void>({\n query: () => '/admin/content-api/permissions',\n transformResponse: (response: ListContentApiPermissions.Response) => response.data,\n }),\n getRoutes: builder.query<ListContentApiRoutes.Response['data'], void>({\n query: () => '/admin/content-api/routes',\n transformResponse: (response: ListContentApiRoutes.Response) => response.data,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetPermissionsQuery, useGetRoutesQuery } = contentApiService;\n\nexport { useGetPermissionsQuery, useGetRoutesQuery };\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { List as ListContentApiPermissions } from '../../../../../../../shared/contracts/content-api/permissions';\nimport { List as ListContentApiRoutes } from '../../../../../../../shared/contracts/content-api/routes';\n\nexport interface PseudoEvent {\n target: { value: string };\n}\n\ninterface ApiTokenPermissionsContextValue {\n value: {\n selectedAction: string | null;\n routes: ListContentApiRoutes.Response['data'];\n selectedActions: string[];\n data: {\n allActionsIds: string[];\n permissions: ListContentApiPermissions.Response['data'][];\n };\n onChange: ({ target: { value } }: PseudoEvent) => void;\n onChangeSelectAll: ({\n target: { value },\n }: {\n target: { value: { action: string; actionId: string }[] };\n }) => void;\n setSelectedAction: ({ target: { value } }: PseudoEvent) => void;\n };\n}\n\ninterface ApiTokenPermissionsContextProviderProps extends ApiTokenPermissionsContextValue {\n children: React.ReactNode | React.ReactNode[];\n}\n\nconst [ApiTokenPermissionsContextProvider, useApiTokenPermissionsContext] =\n createContext<ApiTokenPermissionsContextValue>('ApiTokenPermissionsContext');\n\nconst ApiTokenPermissionsProvider = ({\n children,\n ...rest\n}: ApiTokenPermissionsContextProviderProps) => {\n return (\n <ApiTokenPermissionsContextProvider {...rest}>{children}</ApiTokenPermissionsContextProvider>\n );\n};\n\nconst useApiTokenPermissions = () => useApiTokenPermissionsContext('useApiTokenPermissions');\n\nexport { ApiTokenPermissionsProvider, useApiTokenPermissions };\nexport type { ApiTokenPermissionsContextValue, ApiTokenPermissionsContextProviderProps };\n","import * as React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { LifeSpanInput } from '../../../../components/Tokens/LifeSpanInput';\nimport { TokenDescription } from '../../../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../../../components/Tokens/TokenTypeSelect';\n\nimport type { ApiToken } from '../../../../../../../../shared/contracts/api-token';\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n onDispatch: React.Dispatch<any>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\n\nexport const FormApiTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values = {},\n apiToken = {},\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem key=\"name\" col={6} xs={12}>\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </GridItem>\n\n <GridItem key=\"type\" col={6} xs={12}>\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n handleChangeSelectApiTokenType({ target: { value } });\n\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n onChange({ target: { name: 'type', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n","import { Button, ContentLayout, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFocusWhenNavigate,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface LoadingViewProps {\n apiTokenName?: string | null;\n}\n\nexport const LoadingView = ({ apiTokenName = null }: LoadingViewProps) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"API Tokens\" />\n <HeaderLayout\n primaryAction={\n <Button disabled startIcon={<Check />} type=\"button\" size=\"L\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={\n apiTokenName ||\n formatMessage({\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n","import React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport { useIntl } from 'react-intl';\nimport styled, { DefaultTheme } from 'styled-components';\n\ntype HttpVerb = 'POST' | 'GET' | 'PUT' | 'DELETE';\n\ntype MethodColor = {\n text: keyof DefaultTheme['colors'];\n border: keyof DefaultTheme['colors'];\n background: keyof DefaultTheme['colors'];\n};\n\nconst getMethodColor = (verb: HttpVerb): MethodColor => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nconst MethodBox = styled(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\ninterface BoundRouteProps {\n route: {\n handler: string;\n method: HttpVerb;\n path: string;\n };\n}\n\nexport const BoundRoute = ({\n route = {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n}: BoundRouteProps) => {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n \n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n};\n","import { Flex, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { BoundRoute } from './BoundRoute';\n\nexport const ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <GridItem\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {actionSection &&\n actionSection in routes &&\n routes[actionSection].map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </GridItem>\n );\n};\n","import * as React from 'react';\n\nimport {\n Accordion,\n AccordionContent,\n AccordionToggle,\n Box,\n Checkbox,\n Flex,\n Grid,\n GridItem,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport styled, { css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n svg {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled(Box)<{ isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n svg {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n onExpanded?: (orderNumber: number) => void;\n indexExpandendCollapsedContent: number | null;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n onExpanded = () => null,\n indexExpandendCollapsedContent = null,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const [expanded, setExpanded] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const handleExpandedAccordion = () => {\n setExpanded((s) => !s);\n onExpanded(orderNumber);\n };\n\n React.useEffect(() => {\n if (\n indexExpandendCollapsedContent !== null &&\n indexExpandendCollapsedContent !== orderNumber &&\n expanded\n ) {\n setExpanded(false);\n }\n }, [indexExpandendCollapsedContent, orderNumber, expanded]);\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion\n expanded={expanded}\n onToggle={handleExpandedAccordion}\n variant={orderNumber % 2 ? 'primary' : 'secondary'}\n >\n <AccordionToggle title={capitalize(label)} />\n <AccordionContent>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n value={allActionsSelected}\n indeterminate={!allActionsSelected && someActionsSelected}\n onValueChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <GridItem col={6} key={action.actionId}>\n <CheckboxWrapper\n isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n value={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onValueChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n {action.action}\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog />\n </button>\n </CheckboxWrapper>\n </GridItem>\n );\n })}\n </Grid>\n </Box>\n );\n })}\n </AccordionContent>\n </Accordion>\n );\n};\n","import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\nimport { CollapsableContentType } from './CollabsableContentType';\n\ninterface ContentTypesSectionProps {\n section: ContentApiPermission[] | null;\n}\n\nexport const ContentTypesSection = ({ section = null, ...props }: ContentTypesSectionProps) => {\n const [indexExpandedCollpsedContent, setIndexExpandedCollpsedContent] = React.useState<\n null | number\n >(null);\n const handleExpandedCollpsedContentIndex = (index: number) =>\n setIndexExpandedCollpsedContent(index);\n\n return (\n <Box padding={4} background=\"neutral0\">\n {section &&\n section.map((api, index) => (\n <CollapsableContentType\n key={api.apiId}\n label={api.label}\n controllers={api.controllers}\n orderNumber={index}\n indexExpandendCollapsedContent={indexExpandedCollpsedContent}\n onExpanded={handleExpandedCollpsedContentIndex}\n {...props}\n />\n ))}\n </Box>\n );\n};\n","import { Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { ActionBoundRoutes } from './ActionBoundRoutes';\nimport { ContentTypesSection } from './ContentTypesSection';\n\nexport const Permissions = ({ ...props }) => {\n const {\n value: { data },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n return (\n <Grid gap={0} shadow=\"filterShadow\" hasRadius background=\"neutral0\">\n <GridItem col={7} paddingTop={6} paddingBottom={6} paddingLeft={7} paddingRight={7}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.title',\n defaultMessage: 'Permissions',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.description',\n defaultMessage: 'Only actions bound by a route are listed below.',\n })}\n </Typography>\n </Flex>\n {data?.permissions && <ContentTypesSection section={data?.permissions} {...props} />}\n </GridItem>\n <ActionBoundRoutes />\n </Grid>\n );\n};\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nexport const schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required),\n type: yup\n .string()\n .oneOf(['read-only', 'full-access', 'custom'])\n .required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n});\n","import { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\ninterface Layout {\n allActionsIds: string[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { action: string; actionId: string }[] }[];\n }[];\n}\n\nexport const transformPermissionsData = (data: ContentApiPermission) => {\n const layout: Layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.entries(data).map(([apiId, permission]) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(permission.controllers)\n .map((controller) => ({\n controller,\n actions:\n controller in permission.controllers\n ? permission.controllers[controller]\n .map((action: ContentApiPermission['controllers']) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n })\n .flat()\n : [],\n }))\n .flat(),\n }));\n\n return layout;\n};\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\nimport pull from 'lodash/pull';\n\nimport { ContentApiPermission } from '../../../../../../../shared/contracts/content-api/permissions';\n\nimport { ApiTokenPermissionsContextValue } from './apiTokenPermissions';\nimport { transformPermissionsData } from './utils/transformPermissionsData';\n\ntype InitialState = Pick<\n ApiTokenPermissionsContextValue['value'],\n 'data' | 'routes' | 'selectedAction' | 'selectedActions'\n>;\n\ninterface ActionOnChange {\n type: 'ON_CHANGE';\n value: string;\n}\n\ninterface ActionSelectAllInPermission {\n type: 'SELECT_ALL_IN_PERMISSION';\n value: { action: string; actionId: string }[];\n}\n\ninterface ActionSelectAllActions {\n type: 'SELECT_ALL_ACTIONS';\n}\n\ninterface ActionOnChangeReadOnly {\n type: 'ON_CHANGE_READ_ONLY';\n}\n\ninterface ActionUpdatePermissionsLayout {\n type: 'UPDATE_PERMISSIONS_LAYOUT';\n value: ContentApiPermission;\n}\n\ninterface ActionUpdateRoutes {\n type: 'UPDATE_ROUTES';\n value: ApiTokenPermissionsContextValue['value']['routes'] | undefined;\n}\n\ninterface ActionUpdatePermissions {\n type: 'UPDATE_PERMISSIONS';\n value: any[];\n}\n\ninterface ActionSetSelectedAction {\n type: 'SET_SELECTED_ACTION';\n value: string;\n}\n\ntype Action =\n | ActionOnChange\n | ActionSelectAllInPermission\n | ActionSelectAllActions\n | ActionOnChangeReadOnly\n | ActionUpdatePermissionsLayout\n | ActionUpdateRoutes\n | ActionUpdatePermissions\n | ActionSetSelectedAction;\n\nexport const initialState: InitialState = {\n data: {\n allActionsIds: [],\n permissions: [],\n },\n routes: {},\n selectedAction: '',\n selectedActions: [],\n};\n\nexport const reducer = (state: InitialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE': {\n if (draftState.selectedActions.includes(action.value)) {\n pull(draftState.selectedActions, action.value);\n } else {\n draftState.selectedActions.push(action.value);\n }\n break;\n }\n case 'SELECT_ALL_IN_PERMISSION': {\n const areAllSelected = action.value.every((item) =>\n draftState.selectedActions.includes(item.actionId)\n );\n\n if (areAllSelected) {\n action.value.forEach((item) => {\n pull(draftState.selectedActions, item.actionId);\n });\n } else {\n action.value.forEach((item) => {\n draftState.selectedActions.push(item.actionId);\n });\n }\n break;\n }\n\n case 'SELECT_ALL_ACTIONS': {\n draftState.selectedActions = [...draftState.data.allActionsIds];\n\n break;\n }\n case 'ON_CHANGE_READ_ONLY': {\n const onlyReadOnlyActions = draftState.data.allActionsIds.filter(\n (actionId) => actionId.includes('find') || actionId.includes('findOne')\n );\n draftState.selectedActions = [...onlyReadOnlyActions];\n break;\n }\n case 'UPDATE_PERMISSIONS_LAYOUT': {\n draftState.data = transformPermissionsData(action.value);\n break;\n }\n case 'UPDATE_ROUTES': {\n draftState.routes = { ...action.value };\n break;\n }\n case 'UPDATE_PERMISSIONS': {\n draftState.selectedActions = [...action.value];\n break;\n }\n case 'SET_SELECTED_ACTION': {\n draftState.selectedAction = action.value;\n break;\n }\n default:\n return draftState;\n }\n });\n","import * as React from 'react';\n\nimport { ContentLayout, Flex, Main } from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useTypedSelector } from '../../../../../core/store/hooks';\nimport {\n useCreateAPITokenMutation,\n useGetAPITokenQuery,\n useUpdateAPITokenMutation,\n} from '../../../../../services/apiTokens';\nimport { useGetPermissionsQuery, useGetRoutesQuery } from '../../../../../services/contentApi';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { API_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport { FormHead } from '../../../components/Tokens/FormHead';\nimport { TokenBox } from '../../../components/Tokens/TokenBox';\n\nimport {\n ApiTokenPermissionsContextValue,\n ApiTokenPermissionsProvider,\n} from './apiTokenPermissions';\nimport { FormApiTokenContainer } from './components/FormApiTokenContainer';\nimport { LoadingView } from './components/LoadingView';\nimport { Permissions } from './components/Permissions';\nimport { schema } from './constants';\nimport { initialState, reducer } from './reducer';\n\nimport type { Get, ApiToken } from '../../../../../../../shared/contracts/api-token';\n\n/**\n * TODO: this could definitely be refactored to avoid using redux and instead just use the\n * server response as the source of the truth for the data.\n */\nexport const EditView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { state: locationState } = useLocation<{ apiToken: ApiToken }>();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [apiToken, setApiToken] = React.useState<ApiToken | null>(\n locationState?.apiToken?.accessKey\n ? {\n ...locationState.apiToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const { setCurrentStep } = useGuidedTour();\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings?.['api-tokens']);\n const [state, dispatch] = React.useReducer(reducer, initialState);\n const match = useRouteMatch<{ id: string }>('/settings/api-tokens/:id');\n const id = match?.params?.id;\n const isCreating = id === 'create';\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidtionErrors,\n } = useAPIErrorHandler();\n\n const history = useHistory();\n\n const contentAPIPermissionsQuery = useGetPermissionsQuery();\n const contentAPIRoutesQuery = useGetRoutesQuery();\n\n /**\n * Separate effects otherwise we could end\n * up duplicating the same notification.\n */\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(contentAPIPermissionsQuery.error),\n });\n }\n }, [contentAPIPermissionsQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(contentAPIRoutesQuery.error),\n });\n }\n }, [contentAPIRoutesQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.data) {\n dispatch({\n type: 'UPDATE_PERMISSIONS_LAYOUT',\n value: contentAPIPermissionsQuery.data,\n });\n }\n }, [contentAPIPermissionsQuery.data]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.data) {\n dispatch({\n type: 'UPDATE_ROUTES',\n value: contentAPIRoutesQuery.data,\n });\n }\n }, [contentAPIRoutesQuery.data]);\n\n React.useEffect(() => {\n if (apiToken) {\n if (apiToken.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (apiToken.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (apiToken.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: apiToken?.permissions,\n });\n }\n }\n }, [apiToken]);\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error, isLoading } = useGetAPITokenQuery(id!, {\n skip: !id || isCreating || !!apiToken,\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (data) {\n setApiToken(data);\n\n if (data.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (data.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (data.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: data?.permissions,\n });\n }\n }\n }, [data]);\n\n const [createToken] = useCreateAPITokenMutation();\n const [updateToken] = useUpdateAPITokenMutation();\n\n interface FormValues extends Pick<Get.Response['data'], 'name' | 'description'> {\n lifespan: Get.Response['data']['lifespan'] | undefined;\n type: Get.Response['data']['type'] | undefined;\n }\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: API_TOKEN_TYPE,\n });\n\n // @ts-expect-error context assertation\n lockApp();\n\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // in case a token has a lifespan of \"unlimited\" the API only accepts zero as a number\n lifespan: body.lifespan === '0' ? parseInt(body.lifespan) : null,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokencreated',\n defaultMessage: 'API Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n\n history.replace(`/settings/api-tokens/${res.data.id}`, { apiToken: res.data });\n setCurrentStep('apiTokens.success');\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n type: body.type,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokenedited',\n defaultMessage: 'API Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n }\n } catch {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n },\n });\n } finally {\n // @ts-expect-error context assertation\n unlockApp();\n }\n };\n\n const [hasChangedPermissions, setHasChangedPermissions] = React.useState(false);\n\n const handleChangeCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChange']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'ON_CHANGE',\n value,\n });\n };\n\n const handleChangeSelectAllCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChangeSelectAll']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'SELECT_ALL_IN_PERMISSION',\n value,\n });\n };\n\n const setSelectedAction = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['setSelectedAction']>[0]) => {\n dispatch({\n type: 'SET_SELECTED_ACTION',\n value,\n });\n };\n\n const providerValue = {\n ...state,\n onChange: handleChangeCheckbox,\n onChangeSelectAll: handleChangeSelectAllCheckbox,\n setSelectedAction,\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n\n if (isLoading) {\n return <LoadingView apiTokenName={apiToken?.name} />;\n }\n\n return (\n <ApiTokenPermissionsProvider value={providerValue}>\n <Main>\n <SettingsPageTitle name=\"API Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: apiToken?.name || '',\n description: apiToken?.description || '',\n type: apiToken?.type,\n lifespan: apiToken?.lifespan ? apiToken.lifespan.toString() : apiToken?.lifespan,\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values, setFieldValue }) => {\n if (hasChangedPermissions && values?.type !== 'custom') {\n setFieldValue('type', 'custom');\n }\n\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/api-tokens\"\n title={{\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n }}\n token={apiToken}\n setToken={setApiToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/api-tokens/\"\n />\n\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(apiToken?.name) && (\n <TokenBox token={apiToken?.accessKey} tokenType={API_TOKEN_TYPE} />\n )}\n <FormApiTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n apiToken={apiToken}\n onDispatch={dispatch}\n setHasChangedPermissions={setHasChangedPermissions}\n />\n <Permissions\n disabled={\n !canEditInputs ||\n values?.type === 'read-only' ||\n values?.type === 'full-access'\n }\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n </ApiTokenPermissionsProvider>\n );\n};\n\nexport const ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens'].read\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n"],"names":["adminApi","createContext","jsx","useIntl","Box","Flex","Typography","jsxs","Grid","GridItem","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","useFocusWhenNavigate","Main","SettingsPageTitle","HeaderLayout","Button","Check","ContentLayout","LoadingIndicatorPage","styled","tail","css","React","Accordion","AccordionToggle","capitalize","AccordionContent","Checkbox","Cog","index","yup","translatedErrors","produce","pull","useNotification","useOverlayBlocker","useLocation","useTypedSelector","state","useTracking","useGuidedTour","useRBAC","useRouteMatch","useAPIErrorHandler","useHistory","API_TOKEN_TYPE","useGetAPITokenQuery","useCreateAPITokenMutation","useUpdateAPITokenMutation","formik","isBaseQueryError","Formik","Form","FormHead","TokenBox","CheckPagePermissions"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
import { a as Events } from "./EditPage-
|
|
2
|
+
import { a as Events } from "./EditPage-dvT_6puE.mjs";
|
|
3
3
|
import "react";
|
|
4
4
|
import "@strapi/design-system";
|
|
5
5
|
import "@strapi/helper-plugin";
|
|
6
6
|
import "react-router-dom";
|
|
7
|
-
import "./index-
|
|
7
|
+
import "./index-KLPMzfLn.mjs";
|
|
8
8
|
import "react-dom/client";
|
|
9
9
|
import "invariant";
|
|
10
10
|
import "lodash/isFunction";
|
|
@@ -70,11 +70,11 @@ import "lodash/uniqBy";
|
|
|
70
70
|
import "lodash/unset";
|
|
71
71
|
import "lodash/isArray";
|
|
72
72
|
import "date-fns/parseISO";
|
|
73
|
-
import "./useContentTypes-
|
|
74
|
-
import "./AuthenticatedApp-
|
|
73
|
+
import "./useContentTypes-xc06YDmc.mjs";
|
|
74
|
+
import "./AuthenticatedApp-DKV6vPyB.mjs";
|
|
75
75
|
import "semver/functions/lt";
|
|
76
76
|
import "semver/functions/valid";
|
|
77
|
-
import "./useWebhooks-
|
|
77
|
+
import "./useWebhooks-0S-LOa28.mjs";
|
|
78
78
|
const events = {
|
|
79
79
|
"review-workflows": ["review-workflows.updateEntryStage"]
|
|
80
80
|
};
|
|
@@ -92,4 +92,4 @@ const EventsTableEE = () => {
|
|
|
92
92
|
export {
|
|
93
93
|
EventsTableEE
|
|
94
94
|
};
|
|
95
|
-
//# sourceMappingURL=EventsTable-
|
|
95
|
+
//# sourceMappingURL=EventsTable-aTOj5Iwg.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventsTable-
|
|
1
|
+
{"version":3,"file":"EventsTable-aTOj5Iwg.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable.tsx"],"sourcesContent":["import { Events } from '../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/Events';\n\nconst events = {\n 'review-workflows': ['review-workflows.updateEntryStage'],\n};\n\nconst getHeaders = () => {\n return [{ id: 'review-workflows.updateEntryStage', defaultMessage: 'Stage Change' }];\n};\n\nconst EventsTableEE = () => {\n return (\n <Events.Root>\n <Events.Headers />\n <Events.Body />\n <Events.Headers getHeaders={getHeaders} />\n <Events.Body providedEvents={events} />\n </Events.Root>\n );\n};\n\nexport { EventsTableEE };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAAM,SAAS;AAAA,EACb,oBAAoB,CAAC,mCAAmC;AAC1D;AAEA,MAAM,aAAa,MAAM;AACvB,SAAO,CAAC,EAAE,IAAI,qCAAqC,gBAAgB,eAAgB,CAAA;AACrF;AAEA,MAAM,gBAAgB,MAAM;AAExB,SAAA,qBAAC,OAAO,MAAP,EACC,UAAA;AAAA,IAAC,oBAAA,OAAO,SAAP,EAAe;AAAA,IAChB,oBAAC,OAAO,MAAP,EAAY;AAAA,IACZ,oBAAA,OAAO,SAAP,EAAe,WAAwB,CAAA;AAAA,IACvC,oBAAA,OAAO,MAAP,EAAY,gBAAgB,OAAQ,CAAA;AAAA,EACvC,EAAA,CAAA;AAEJ;"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
-
const EditPage = require("./EditPage-
|
|
4
|
+
const EditPage = require("./EditPage-DbHeF44w.js");
|
|
5
5
|
require("react");
|
|
6
6
|
require("@strapi/design-system");
|
|
7
7
|
require("@strapi/helper-plugin");
|
|
8
8
|
require("react-router-dom");
|
|
9
|
-
require("./index-
|
|
9
|
+
require("./index-vftGzD-K.js");
|
|
10
10
|
require("react-dom/client");
|
|
11
11
|
require("invariant");
|
|
12
12
|
require("lodash/isFunction");
|
|
@@ -72,11 +72,11 @@ require("lodash/uniqBy");
|
|
|
72
72
|
require("lodash/unset");
|
|
73
73
|
require("lodash/isArray");
|
|
74
74
|
require("date-fns/parseISO");
|
|
75
|
-
require("./useContentTypes-
|
|
76
|
-
require("./AuthenticatedApp-
|
|
75
|
+
require("./useContentTypes-P2Cw5O0Q.js");
|
|
76
|
+
require("./AuthenticatedApp-MdjV7Ts7.js");
|
|
77
77
|
require("semver/functions/lt");
|
|
78
78
|
require("semver/functions/valid");
|
|
79
|
-
require("./useWebhooks-
|
|
79
|
+
require("./useWebhooks-H34bjR-D.js");
|
|
80
80
|
const events = {
|
|
81
81
|
"review-workflows": ["review-workflows.updateEntryStage"]
|
|
82
82
|
};
|
|
@@ -92,4 +92,4 @@ const EventsTableEE = () => {
|
|
|
92
92
|
] });
|
|
93
93
|
};
|
|
94
94
|
exports.EventsTableEE = EventsTableEE;
|
|
95
|
-
//# sourceMappingURL=EventsTable-
|
|
95
|
+
//# sourceMappingURL=EventsTable-ya4-snYx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventsTable-
|
|
1
|
+
{"version":3,"file":"EventsTable-ya4-snYx.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable.tsx"],"sourcesContent":["import { Events } from '../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/Events';\n\nconst events = {\n 'review-workflows': ['review-workflows.updateEntryStage'],\n};\n\nconst getHeaders = () => {\n return [{ id: 'review-workflows.updateEntryStage', defaultMessage: 'Stage Change' }];\n};\n\nconst EventsTableEE = () => {\n return (\n <Events.Root>\n <Events.Headers />\n <Events.Body />\n <Events.Headers getHeaders={getHeaders} />\n <Events.Body providedEvents={events} />\n </Events.Root>\n );\n};\n\nexport { EventsTableEE };\n"],"names":["jsxs","Events","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAAM,SAAS;AAAA,EACb,oBAAoB,CAAC,mCAAmC;AAC1D;AAEA,MAAM,aAAa,MAAM;AACvB,SAAO,CAAC,EAAE,IAAI,qCAAqC,gBAAgB,eAAgB,CAAA;AACrF;AAEA,MAAM,gBAAgB,MAAM;AAExB,SAAAA,gCAACC,SAAAA,OAAO,MAAP,EACC,UAAA;AAAA,IAACC,+BAAAD,SAAAA,OAAO,SAAP,EAAe;AAAA,IAChBC,+BAACD,SAAAA,OAAO,MAAP,EAAY;AAAA,IACZC,2BAAAA,IAAAD,SAAA,OAAO,SAAP,EAAe,WAAwB,CAAA;AAAA,IACvCC,2BAAAA,IAAAD,SAAAA,OAAO,MAAP,EAAY,gBAAgB,OAAQ,CAAA;AAAA,EACvC,EAAA,CAAA;AAEJ;;"}
|
|
@@ -8,9 +8,9 @@ import { Helmet } from "react-helmet";
|
|
|
8
8
|
import { useIntl } from "react-intl";
|
|
9
9
|
import { NavLink, useHistory } from "react-router-dom";
|
|
10
10
|
import styled from "styled-components";
|
|
11
|
-
import { L as LAYOUT_DATA, N as Number, V as VerticalDivider, S as STATES } from "./AuthenticatedApp-
|
|
12
|
-
import { u as useContentTypes } from "./useContentTypes-
|
|
13
|
-
import { p as useEnterprise } from "./index-
|
|
11
|
+
import { L as LAYOUT_DATA, N as Number, V as VerticalDivider, S as STATES } from "./AuthenticatedApp-DKV6vPyB.mjs";
|
|
12
|
+
import { u as useContentTypes } from "./useContentTypes-xc06YDmc.mjs";
|
|
13
|
+
import { p as useEnterprise } from "./index-KLPMzfLn.mjs";
|
|
14
14
|
import "semver/functions/lt";
|
|
15
15
|
import "semver/functions/valid";
|
|
16
16
|
import "immer";
|
|
@@ -565,7 +565,7 @@ const HomePage = () => {
|
|
|
565
565
|
const Page = useEnterprise(
|
|
566
566
|
HomePageCE,
|
|
567
567
|
// eslint-disable-next-line import/no-cycle
|
|
568
|
-
async () => (await import("./HomePage-
|
|
568
|
+
async () => (await import("./HomePage-XaLoeZiA.mjs")).HomePageEE
|
|
569
569
|
);
|
|
570
570
|
if (!Page) {
|
|
571
571
|
return null;
|
|
@@ -576,4 +576,4 @@ export {
|
|
|
576
576
|
HomePage,
|
|
577
577
|
HomePageCE
|
|
578
578
|
};
|
|
579
|
-
//# sourceMappingURL=HomePage-
|
|
579
|
+
//# sourceMappingURL=HomePage-Dk4AIcd3.mjs.map
|