@strapi/admin 4.25.7 → 4.25.9
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-N7j-dsK0.mjs → AdminSeatInfo-3GfqBEX5.mjs} +3 -3
- package/dist/_chunks/{AdminSeatInfo-N7j-dsK0.mjs.map → AdminSeatInfo-3GfqBEX5.mjs.map} +1 -1
- package/dist/_chunks/{AdminSeatInfo-KE0G5-Ru.js → AdminSeatInfo-yYbSyMs9.js} +3 -3
- package/dist/_chunks/{AdminSeatInfo-KE0G5-Ru.js.map → AdminSeatInfo-yYbSyMs9.js.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-Ek4n2GZE.js → AuthenticatedApp-bc9-HQO8.js} +21 -21
- package/dist/_chunks/{AuthenticatedApp-Ek4n2GZE.js.map → AuthenticatedApp-bc9-HQO8.js.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-kAhxEgkA.mjs → AuthenticatedApp-wBdWPiYL.mjs} +21 -21
- package/dist/_chunks/{AuthenticatedApp-kAhxEgkA.mjs.map → AuthenticatedApp-wBdWPiYL.mjs.map} +1 -1
- package/dist/_chunks/{CreateActionEE-R1N1KLs7.mjs → CreateActionEE-TamR87VF.mjs} +2 -2
- package/dist/_chunks/{CreateActionEE-R1N1KLs7.mjs.map → CreateActionEE-TamR87VF.mjs.map} +1 -1
- package/dist/_chunks/{CreateActionEE-YkaUQYQG.js → CreateActionEE-nSikgJy3.js} +2 -2
- package/dist/_chunks/{CreateActionEE-YkaUQYQG.js.map → CreateActionEE-nSikgJy3.js.map} +1 -1
- package/dist/_chunks/{CreatePage-Fi0WAzbi.js → CreatePage--TgBBbSy.js} +8 -8
- package/dist/_chunks/{CreatePage-Fi0WAzbi.js.map → CreatePage--TgBBbSy.js.map} +1 -1
- package/dist/_chunks/{CreatePage-A6QCU3vb.js → CreatePage-5kZ_EYqF.js} +3 -3
- package/dist/_chunks/{CreatePage-A6QCU3vb.js.map → CreatePage-5kZ_EYqF.js.map} +1 -1
- package/dist/_chunks/{CreatePage-dLzgtTJS.mjs → CreatePage-MFyrPEp9.mjs} +8 -8
- package/dist/_chunks/{CreatePage-dLzgtTJS.mjs.map → CreatePage-MFyrPEp9.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-0iVZ2Ajy.mjs → CreatePage-NAoT31eI.mjs} +3 -3
- package/dist/_chunks/{CreatePage-0iVZ2Ajy.mjs.map → CreatePage-NAoT31eI.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-62PvEC6Y.mjs → CreatePage-cfeYPP0h.mjs} +6 -6
- package/dist/_chunks/{CreatePage-62PvEC6Y.mjs.map → CreatePage-cfeYPP0h.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-cgcm45iM.js → CreatePage-k4wWuSrN.js} +6 -6
- package/dist/_chunks/{CreatePage-cgcm45iM.js.map → CreatePage-k4wWuSrN.js.map} +1 -1
- package/dist/_chunks/{CreateView-rmpStRRK.js → CreateView-07p0aZHe.js} +6 -6
- package/dist/_chunks/{CreateView-rmpStRRK.js.map → CreateView-07p0aZHe.js.map} +1 -1
- package/dist/_chunks/{CreateView-s7_JxMep.mjs → CreateView-Acqhkauv.mjs} +6 -6
- package/dist/_chunks/{CreateView-s7_JxMep.mjs.map → CreateView-Acqhkauv.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-DlbSEi58.mjs → CreateView-EHpWsYyT.mjs} +6 -6
- package/dist/_chunks/{CreateView-DlbSEi58.mjs.map → CreateView-EHpWsYyT.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-gwJXNM1o.js → CreateView-wp29y-la.js} +6 -6
- package/dist/_chunks/{CreateView-gwJXNM1o.js.map → CreateView-wp29y-la.js.map} +1 -1
- package/dist/_chunks/{EditPage-07EI6Y5p.js → EditPage-2ocx9QeX.js} +9 -9
- package/dist/_chunks/{EditPage-07EI6Y5p.js.map → EditPage-2ocx9QeX.js.map} +1 -1
- package/dist/_chunks/{EditPage-tG1WV_2y.js → EditPage-3eZgssZ8.js} +4 -4
- package/dist/_chunks/{EditPage-tG1WV_2y.js.map → EditPage-3eZgssZ8.js.map} +1 -1
- package/dist/_chunks/{EditPage-SV_lM0ZT.mjs → EditPage-5RSkr3ll.mjs} +6 -6
- package/dist/_chunks/{EditPage-SV_lM0ZT.mjs.map → EditPage-5RSkr3ll.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-sJbhyHgA.js → EditPage-7TjaOKuE.js} +6 -6
- package/dist/_chunks/{EditPage-sJbhyHgA.js.map → EditPage-7TjaOKuE.js.map} +1 -1
- package/dist/_chunks/{EditPage-ULG7HPtX.mjs → EditPage-Dng643LK.mjs} +6 -6
- package/dist/_chunks/{EditPage-ULG7HPtX.mjs.map → EditPage-Dng643LK.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-JgoQZlij.js → EditPage-Lul5NZ54.js} +6 -6
- package/dist/_chunks/{EditPage-JgoQZlij.js.map → EditPage-Lul5NZ54.js.map} +1 -1
- package/dist/_chunks/{EditPage-zshfqCtV.mjs → EditPage-WLTJm3So.mjs} +9 -9
- package/dist/_chunks/{EditPage-zshfqCtV.mjs.map → EditPage-WLTJm3So.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-k5rPdUaJ.mjs → EditPage-wQfQGs4Q.mjs} +4 -4
- package/dist/_chunks/{EditPage-k5rPdUaJ.mjs.map → EditPage-wQfQGs4Q.mjs.map} +1 -1
- package/dist/_chunks/{EditView-FLjup8Cb.mjs → EditView-_2tho-Tr.mjs} +4 -4
- package/dist/_chunks/{EditView-FLjup8Cb.mjs.map → EditView-_2tho-Tr.mjs.map} +1 -1
- package/dist/_chunks/{EditView-4madk_eP.js → EditView-pfnQfvBy.js} +4 -4
- package/dist/_chunks/{EditView-4madk_eP.js.map → EditView-pfnQfvBy.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-oGEPieoH.js → EditViewPage-BfWiwClO.js} +4 -4
- package/dist/_chunks/{EditViewPage-oGEPieoH.js.map → EditViewPage-BfWiwClO.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-e7qshNeP.mjs → EditViewPage-TNVR9vdN.mjs} +4 -4
- package/dist/_chunks/{EditViewPage-e7qshNeP.mjs.map → EditViewPage-TNVR9vdN.mjs.map} +1 -1
- package/dist/_chunks/{EventsTable-Zr-6uGLD.mjs → EventsTable-MGBOczq0.mjs} +6 -6
- package/dist/_chunks/{EventsTable-Zr-6uGLD.mjs.map → EventsTable-MGBOczq0.mjs.map} +1 -1
- package/dist/_chunks/{EventsTable-vtc-bJWD.js → EventsTable-OZJRKU3p.js} +6 -6
- package/dist/_chunks/{EventsTable-vtc-bJWD.js.map → EventsTable-OZJRKU3p.js.map} +1 -1
- package/dist/_chunks/{HomePage-JJrRdJyb.js → HomePage-AAvKa3Fz.js} +5 -5
- package/dist/_chunks/{HomePage-JJrRdJyb.js.map → HomePage-AAvKa3Fz.js.map} +1 -1
- package/dist/_chunks/{HomePage-gARXjdsf.mjs → HomePage-VFpIo81z.mjs} +6 -6
- package/dist/_chunks/{HomePage-gARXjdsf.mjs.map → HomePage-VFpIo81z.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-l7Y0qJ9Z.js → HomePage-WjcbKR4i.js} +6 -6
- package/dist/_chunks/{HomePage-l7Y0qJ9Z.js.map → HomePage-WjcbKR4i.js.map} +1 -1
- package/dist/_chunks/{HomePage-_xfILIZG.mjs → HomePage-kzT-z_z2.mjs} +5 -5
- package/dist/_chunks/{HomePage-_xfILIZG.mjs.map → HomePage-kzT-z_z2.mjs.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-f4E8V7If.js → InformationBoxEE-Jsc__Rzc.js} +3 -3
- package/dist/_chunks/{InformationBoxEE-f4E8V7If.js.map → InformationBoxEE-Jsc__Rzc.js.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-zBAz6igJ.mjs → InformationBoxEE-foEvzmQl.mjs} +3 -3
- package/dist/_chunks/{InformationBoxEE-zBAz6igJ.mjs.map → InformationBoxEE-foEvzmQl.mjs.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-AJjGgqip.mjs → InstalledPluginsPage-5OjTfgya.mjs} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-AJjGgqip.mjs.map → InstalledPluginsPage-5OjTfgya.mjs.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-Sn0pMNmx.js → InstalledPluginsPage-9C4YBsD9.js} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-Sn0pMNmx.js.map → InstalledPluginsPage-9C4YBsD9.js.map} +1 -1
- package/dist/_chunks/{Layout-GMs9jU0O.js → Layout-5K99sU9h.js} +2 -2
- package/dist/_chunks/{Layout-GMs9jU0O.js.map → Layout-5K99sU9h.js.map} +1 -1
- package/dist/_chunks/{Layout-I6NmdXKn.mjs → Layout-Z-urt_kx.mjs} +2 -2
- package/dist/_chunks/{Layout-I6NmdXKn.mjs.map → Layout-Z-urt_kx.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-Ge1wdI2d.mjs → ListPage-0E1_ywoi.mjs} +7 -7
- package/dist/_chunks/{ListPage-Ge1wdI2d.mjs.map → ListPage-0E1_ywoi.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-CxIaaFhi.mjs → ListPage-BL0LT7i6.mjs} +2 -2
- package/dist/_chunks/{ListPage-CxIaaFhi.mjs.map → ListPage-BL0LT7i6.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-DKx3BPuC.js → ListPage-HdrykW_7.js} +7 -7
- package/dist/_chunks/{ListPage-DKx3BPuC.js.map → ListPage-HdrykW_7.js.map} +1 -1
- package/dist/_chunks/{ListPage-6uDzzn9r.mjs → ListPage-WmnFJtHH.mjs} +8 -8
- package/dist/_chunks/{ListPage-6uDzzn9r.mjs.map → ListPage-WmnFJtHH.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-Kak1mhAc.mjs → ListPage-gkEAKVdY.mjs} +3 -3
- package/dist/_chunks/{ListPage-Kak1mhAc.mjs.map → ListPage-gkEAKVdY.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-EaPGkY67.mjs → ListPage-hBslfn6M.mjs} +4 -4
- package/dist/_chunks/{ListPage-EaPGkY67.mjs.map → ListPage-hBslfn6M.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-uyvk4CCQ.mjs → ListPage-hwrz5KAa.mjs} +6 -6
- package/dist/_chunks/{ListPage-uyvk4CCQ.mjs.map → ListPage-hwrz5KAa.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-WNm7UImg.js → ListPage-jSmDqE2s.js} +2 -2
- package/dist/_chunks/{ListPage-WNm7UImg.js.map → ListPage-jSmDqE2s.js.map} +1 -1
- package/dist/_chunks/{ListPage-2mnXSwzK.js → ListPage-okarWykf.js} +4 -4
- package/dist/_chunks/{ListPage-2mnXSwzK.js.map → ListPage-okarWykf.js.map} +1 -1
- package/dist/_chunks/{ListPage-UHUQ0zAc.js → ListPage-t4jc6yN3.js} +6 -6
- package/dist/_chunks/{ListPage-UHUQ0zAc.js.map → ListPage-t4jc6yN3.js.map} +1 -1
- package/dist/_chunks/{ListPage-GUQBSQPe.js → ListPage-toVxh15N.js} +8 -8
- package/dist/_chunks/{ListPage-GUQBSQPe.js.map → ListPage-toVxh15N.js.map} +1 -1
- package/dist/_chunks/{ListPage-YfvvuhJj.js → ListPage-uWnb_9rT.js} +3 -3
- package/dist/_chunks/{ListPage-YfvvuhJj.js.map → ListPage-uWnb_9rT.js.map} +1 -1
- package/dist/_chunks/{ListView-alL7oo8f.mjs → ListView-3aUJLnlK.mjs} +3 -3
- package/dist/_chunks/{ListView-alL7oo8f.mjs.map → ListView-3aUJLnlK.mjs.map} +1 -1
- package/dist/_chunks/{ListView-1_x6nn5A.js → ListView-HyTuUH1u.js} +3 -3
- package/dist/_chunks/{ListView-1_x6nn5A.js.map → ListView-HyTuUH1u.js.map} +1 -1
- package/dist/_chunks/{ListView-jv3OCxRf.js → ListView-mbVYmcKT.js} +3 -3
- package/dist/_chunks/{ListView-jv3OCxRf.js.map → ListView-mbVYmcKT.js.map} +1 -1
- package/dist/_chunks/{ListView-WYg1sgfe.mjs → ListView-zC05ZJ0c.mjs} +3 -3
- package/dist/_chunks/{ListView-WYg1sgfe.mjs.map → ListView-zC05ZJ0c.mjs.map} +1 -1
- package/dist/_chunks/{Login-O6gIrfUw.js → Login-2G6vbP3H.js} +2 -2
- package/dist/_chunks/{Login-O6gIrfUw.js.map → Login-2G6vbP3H.js.map} +1 -1
- package/dist/_chunks/{Login-2xORQjAa.mjs → Login-QX9pTxtr.mjs} +2 -2
- package/dist/_chunks/{Login-2xORQjAa.mjs.map → Login-QX9pTxtr.mjs.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-6HAAkst6.js → MagicLinkEE-MjS8G_k1.js} +4 -4
- package/dist/_chunks/{MagicLinkEE-6HAAkst6.js.map → MagicLinkEE-MjS8G_k1.js.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-tQDHzP4x.mjs → MagicLinkEE-XT6HaZov.mjs} +4 -4
- package/dist/_chunks/{MagicLinkEE-tQDHzP4x.mjs.map → MagicLinkEE-XT6HaZov.mjs.map} +1 -1
- package/dist/_chunks/{MarketplacePage-bhNgbfze.mjs → MarketplacePage-O-ban3bj.mjs} +3 -3
- package/dist/_chunks/{MarketplacePage-bhNgbfze.mjs.map → MarketplacePage-O-ban3bj.mjs.map} +1 -1
- package/dist/_chunks/{MarketplacePage-R4b9LMf0.js → MarketplacePage-nnVMJutS.js} +3 -3
- package/dist/_chunks/{MarketplacePage-R4b9LMf0.js.map → MarketplacePage-nnVMJutS.js.map} +1 -1
- package/dist/_chunks/{Permissions-bE2WglcH.js → Permissions-BIDC2Rtu.js} +2 -2
- package/dist/_chunks/{Permissions-bE2WglcH.js.map → Permissions-BIDC2Rtu.js.map} +1 -1
- package/dist/_chunks/{Permissions-ZKk539gx.mjs → Permissions-dKBWf-gv.mjs} +2 -2
- package/dist/_chunks/{Permissions-ZKk539gx.mjs.map → Permissions-dKBWf-gv.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-qaRsuojL.mjs → ProfilePage-42VRY5QD.mjs} +3 -3
- package/dist/_chunks/{ProfilePage-qaRsuojL.mjs.map → ProfilePage-42VRY5QD.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-7rCnvQEA.js → ProfilePage-jQVQYnFV.js} +3 -3
- package/dist/_chunks/{ProfilePage-7rCnvQEA.js.map → ProfilePage-jQVQYnFV.js.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-B5WOnmtS.js → ReviewWorkflowsColumn-iVc7lS21.js} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-B5WOnmtS.js.map → ReviewWorkflowsColumn-iVc7lS21.js.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-HzmMBvyI.mjs → ReviewWorkflowsColumn-zmIo6Eqe.mjs} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-HzmMBvyI.mjs.map → ReviewWorkflowsColumn-zmIo6Eqe.mjs.map} +1 -1
- package/dist/_chunks/{SelectRoles-9U3IlVTV.js → SelectRoles-GcBMWWkS.js} +3 -3
- package/dist/_chunks/{SelectRoles-9U3IlVTV.js.map → SelectRoles-GcBMWWkS.js.map} +1 -1
- package/dist/_chunks/{SelectRoles-n0p_uamx.mjs → SelectRoles-ueVFT7so.mjs} +3 -3
- package/dist/_chunks/{SelectRoles-n0p_uamx.mjs.map → SelectRoles-ueVFT7so.mjs.map} +1 -1
- package/dist/_chunks/{SettingsPage-Qg5BgAgp.js → SettingsPage-VueL9qM2.js} +21 -21
- package/dist/_chunks/{SettingsPage-Qg5BgAgp.js.map → SettingsPage-VueL9qM2.js.map} +1 -1
- package/dist/_chunks/{SettingsPage-CiNyrWLO.mjs → SettingsPage-a-lqVH27.mjs} +21 -21
- package/dist/_chunks/{SettingsPage-CiNyrWLO.mjs.map → SettingsPage-a-lqVH27.mjs.map} +1 -1
- package/dist/_chunks/{SingleSignOnPage-jUu4HQYe.js → SingleSignOnPage-WhYzJPGi.js} +3 -3
- package/dist/_chunks/{SingleSignOnPage-jUu4HQYe.js.map → SingleSignOnPage-WhYzJPGi.js.map} +1 -1
- package/dist/_chunks/{SingleSignOnPage-SXrSNbsP.mjs → SingleSignOnPage-eFfnXmwf.mjs} +3 -3
- package/dist/_chunks/{SingleSignOnPage-SXrSNbsP.mjs.map → SingleSignOnPage-eFfnXmwf.mjs.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect--AE6zwtR.js → TokenTypeSelect-HBXQPhQa.js} +2 -2
- package/dist/_chunks/{TokenTypeSelect--AE6zwtR.js.map → TokenTypeSelect-HBXQPhQa.js.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect-0ezEjxgp.mjs → TokenTypeSelect-vEm-whNF.mjs} +2 -2
- package/dist/_chunks/{TokenTypeSelect-0ezEjxgp.mjs.map → TokenTypeSelect-vEm-whNF.mjs.map} +1 -1
- package/dist/_chunks/{apiTokens-w-CCA2jL.mjs → apiTokens-8rx7-RAr.mjs} +2 -2
- package/dist/_chunks/{apiTokens-w-CCA2jL.mjs.map → apiTokens-8rx7-RAr.mjs.map} +1 -1
- package/dist/_chunks/{apiTokens-tc7khkOa.js → apiTokens-T80qIyG1.js} +2 -2
- package/dist/_chunks/{apiTokens-tc7khkOa.js.map → apiTokens-T80qIyG1.js.map} +1 -1
- package/dist/_chunks/{constants-eWw3uGrp.js → constants-1qadOc_4.js} +2 -2
- package/dist/_chunks/{constants-eWw3uGrp.js.map → constants-1qadOc_4.js.map} +1 -1
- package/dist/_chunks/{constants-L3Rh7cmd.mjs → constants-2EUb5O1L.mjs} +2 -2
- package/dist/_chunks/{constants-L3Rh7cmd.mjs.map → constants-2EUb5O1L.mjs.map} +1 -1
- package/dist/_chunks/{constants-xVUq3t1o.js → constants-6yK_M-vr.js} +2 -2
- package/dist/_chunks/{constants-xVUq3t1o.js.map → constants-6yK_M-vr.js.map} +1 -1
- package/dist/_chunks/{constants-VGaiIMFu.mjs → constants-AAR7LY4e.mjs} +6 -6
- package/dist/_chunks/{constants-VGaiIMFu.mjs.map → constants-AAR7LY4e.mjs.map} +1 -1
- package/dist/_chunks/{constants-_7yfGGVt.js → constants-OZ4rXp9w.js} +4 -4
- package/dist/_chunks/{constants-_7yfGGVt.js.map → constants-OZ4rXp9w.js.map} +1 -1
- package/dist/_chunks/{constants-RBF-o1zb.mjs → constants-V3Y8woPN.mjs} +2 -2
- package/dist/_chunks/{constants-RBF-o1zb.mjs.map → constants-V3Y8woPN.mjs.map} +1 -1
- package/dist/_chunks/{constants-VDwiORwH.js → constants-gy7Nbny7.js} +6 -6
- package/dist/_chunks/{constants-VDwiORwH.js.map → constants-gy7Nbny7.js.map} +1 -1
- package/dist/_chunks/{constants-KWaELiUE.mjs → constants-u7ai3QEb.mjs} +4 -4
- package/dist/_chunks/{constants-KWaELiUE.mjs.map → constants-u7ai3QEb.mjs.map} +1 -1
- package/dist/_chunks/{index-fKNXOM6C.mjs → index-Jcwh4RvB.mjs} +10 -10
- package/dist/_chunks/{index-fKNXOM6C.mjs.map → index-Jcwh4RvB.mjs.map} +1 -1
- package/dist/_chunks/{index-QYQBSwzx.js → index-vgUniZbN.js} +10 -10
- package/dist/_chunks/{index-QYQBSwzx.js.map → index-vgUniZbN.js.map} +1 -1
- package/dist/_chunks/{reviewWorkflows-0zP_MvSk.mjs → reviewWorkflows-26Oswjk0.mjs} +2 -2
- package/dist/_chunks/{reviewWorkflows-0zP_MvSk.mjs.map → reviewWorkflows-26Oswjk0.mjs.map} +1 -1
- package/dist/_chunks/{reviewWorkflows-pFOlJJnm.js → reviewWorkflows-XDARcERz.js} +2 -2
- package/dist/_chunks/{reviewWorkflows-pFOlJJnm.js.map → reviewWorkflows-XDARcERz.js.map} +1 -1
- package/dist/_chunks/{transferTokens-eVUQt-6V.js → transferTokens-06uZXA76.js} +2 -2
- package/dist/_chunks/{transferTokens-eVUQt-6V.js.map → transferTokens-06uZXA76.js.map} +1 -1
- package/dist/_chunks/{transferTokens-nd0A6yht.mjs → transferTokens-omlsuaLU.mjs} +2 -2
- package/dist/_chunks/{transferTokens-nd0A6yht.mjs.map → transferTokens-omlsuaLU.mjs.map} +1 -1
- package/dist/_chunks/{useAdminRoles-hCUAmRl1.mjs → useAdminRoles-U2jY3xfB.mjs} +2 -2
- package/dist/_chunks/{useAdminRoles-hCUAmRl1.mjs.map → useAdminRoles-U2jY3xfB.mjs.map} +1 -1
- package/dist/_chunks/{useAdminRoles-INqAIOz8.js → useAdminRoles-tEnMbteL.js} +2 -2
- package/dist/_chunks/{useAdminRoles-INqAIOz8.js.map → useAdminRoles-tEnMbteL.js.map} +1 -1
- package/dist/_chunks/{useContentTypes-aMNZQmV4.mjs → useContentTypes-b05NVLoI.mjs} +2 -2
- package/dist/_chunks/{useContentTypes-aMNZQmV4.mjs.map → useContentTypes-b05NVLoI.mjs.map} +1 -1
- package/dist/_chunks/{useContentTypes-wk6vqDZJ.js → useContentTypes-t6wxjqem.js} +2 -2
- package/dist/_chunks/{useContentTypes-wk6vqDZJ.js.map → useContentTypes-t6wxjqem.js.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-hzTBQmfW.mjs → useLicenseLimitNotification-Nts5AVyT.mjs} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-hzTBQmfW.mjs.map → useLicenseLimitNotification-Nts5AVyT.mjs.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-W3DL8JsX.js → useLicenseLimitNotification-ydKWZu7V.js} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-W3DL8JsX.js.map → useLicenseLimitNotification-ydKWZu7V.js.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-UWmfnvzf.mjs → useReviewWorkflows-J-mfAJuA.mjs} +2 -2
- package/dist/_chunks/{useReviewWorkflows-UWmfnvzf.mjs.map → useReviewWorkflows-J-mfAJuA.mjs.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-2QShg2rk.js → useReviewWorkflows-cU-BZPxX.js} +2 -2
- package/dist/_chunks/{useReviewWorkflows-2QShg2rk.js.map → useReviewWorkflows-cU-BZPxX.js.map} +1 -1
- package/dist/_chunks/{useWebhooks-6fIt2Avf.mjs → useWebhooks-hJU8vvFU.mjs} +2 -2
- package/dist/_chunks/{useWebhooks-6fIt2Avf.mjs.map → useWebhooks-hJU8vvFU.mjs.map} +1 -1
- package/dist/_chunks/{useWebhooks-vZ20gZ1a.js → useWebhooks-yGHWSYOs.js} +2 -2
- package/dist/_chunks/{useWebhooks-vZ20gZ1a.js.map → useWebhooks-yGHWSYOs.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-arSK2orP.js → validateWorkflow--ANoIg57.js} +2 -2
- package/dist/_chunks/{validateWorkflow-arSK2orP.js.map → validateWorkflow--ANoIg57.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-MTnbv-RM.mjs → validateWorkflow--qNZXiPN.mjs} +2 -2
- package/dist/_chunks/{validateWorkflow-MTnbv-RM.mjs.map → validateWorkflow--qNZXiPN.mjs.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/ee/server/index.js +17 -4
- package/dist/ee/server/index.js.map +1 -1
- package/dist/ee/server/index.mjs +17 -4
- package/dist/ee/server/index.mjs.map +1 -1
- package/dist/server/index.js +47 -5
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +47 -5
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/config/admin-actions.d.ts +26 -0
- package/dist/server/src/config/admin-actions.d.ts.map +1 -1
- package/dist/server/src/domain/action/index.d.ts +51 -1
- package/dist/server/src/domain/action/index.d.ts.map +1 -1
- package/dist/server/src/domain/action/provider.d.ts +10 -13
- package/dist/server/src/domain/action/provider.d.ts.map +1 -1
- package/dist/server/src/domain/condition/provider.d.ts +9 -6
- package/dist/server/src/domain/condition/provider.d.ts.map +1 -1
- package/dist/server/src/domain/permission/index.d.ts +2 -2
- package/dist/server/src/domain/permission/index.d.ts.map +1 -1
- package/dist/server/src/services/action.d.ts +1 -3
- package/dist/server/src/services/action.d.ts.map +1 -1
- package/dist/server/src/services/permission.d.ts +15 -18
- package/dist/server/src/services/permission.d.ts.map +1 -1
- package/dist/server/src/services/transfer/permission.d.ts +6 -2
- package/dist/server/src/services/transfer/permission.d.ts.map +1 -1
- package/dist/server/src/validation/action-provider.d.ts.map +1 -1
- package/package.json +13 -13
|
@@ -8,9 +8,9 @@ import { Formik } from "formik";
|
|
|
8
8
|
import { useIntl } from "react-intl";
|
|
9
9
|
import { Redirect, useRouteMatch, NavLink } from "react-router-dom";
|
|
10
10
|
import * as yup from "yup";
|
|
11
|
-
import { j as useTypedSelector, A as useGetRolePermissionLayoutQuery, B as useGetRolePermissionsQuery, G as useUpdateRoleMutation, E as useUpdateRolePermissionsMutation, x as isBaseQueryError } from "./index-
|
|
12
|
-
import { u as useAdminRoles } from "./useAdminRoles-
|
|
13
|
-
import { P as Permissions } from "./Permissions-
|
|
11
|
+
import { j as useTypedSelector, A as useGetRolePermissionLayoutQuery, B as useGetRolePermissionsQuery, G as useUpdateRoleMutation, E as useUpdateRolePermissionsMutation, x as isBaseQueryError } from "./index-Jcwh4RvB.mjs";
|
|
12
|
+
import { u as useAdminRoles } from "./useAdminRoles-U2jY3xfB.mjs";
|
|
13
|
+
import { P as Permissions } from "./Permissions-dKBWf-gv.mjs";
|
|
14
14
|
import "react-dom/client";
|
|
15
15
|
import "invariant";
|
|
16
16
|
import "lodash/isFunction";
|
|
@@ -325,4 +325,4 @@ export {
|
|
|
325
325
|
EditPage,
|
|
326
326
|
ProtectedEditPage
|
|
327
327
|
};
|
|
328
|
-
//# sourceMappingURL=EditPage-
|
|
328
|
+
//# sourceMappingURL=EditPage-wQfQGs4Q.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditPage-k5rPdUaJ.mjs","sources":["../../admin/src/pages/Settings/pages/Roles/components/RoleForm.tsx","../../admin/src/pages/Settings/pages/Roles/EditPage.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Flex,\n Grid,\n GridItem,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { FormikProps } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\nimport type { EditRoleFormValues } from '../EditPage';\n\ninterface RoleFormProps extends Pick<FormikProps<EditRoleFormValues>, 'values' | 'errors'> {\n onBlur: FormikProps<EditRoleFormValues>['handleBlur'];\n onChange: FormikProps<EditRoleFormValues>['handleChange'];\n disabled?: boolean;\n role: AdminRole;\n}\n\nconst RoleForm = ({ disabled, role, values, errors, onChange, onBlur }: RoleFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {role\n ? role.name\n : formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {role\n ? role.description\n : formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <Button disabled variant=\"secondary\">\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: role.usersCount }\n )}\n </Button>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n disabled={disabled}\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n onBlur={onBlur}\n required\n value={values.name || ''}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n disabled={disabled}\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.name && formatMessage({ id: errors.name })}\n onChange={onChange}\n onBlur={onBlur}\n >\n {values.description || ''}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nexport { RoleForm };\nexport type { RoleFormProps };\n","import * as React from 'react';\n\nimport { Box, Button, ContentLayout, Flex, HeaderLayout, Main } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useNotification,\n useOverlayBlocker,\n useTracking,\n translatedErrors,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Redirect, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useAdminRoles } from '../../../../hooks/useAdminRoles';\nimport {\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRoleMutation,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\nimport { RoleForm } from './components/RoleForm';\n\nconst EDIT_ROLE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n description: yup.string().optional(),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface EditRoleFormValues {\n name: string;\n description: string;\n}\n\nconst EditPage = () => {\n const toggleNotification = useNotification();\n const { formatMessage } = useIntl();\n const match = useRouteMatch<{ id: string }>('/settings/roles/:id');\n const id = match?.params.id;\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n const {\n roles,\n isLoading: isRoleLoading,\n refetch: refetchRole,\n } = useAdminRoles(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const role = roles[0] ?? {};\n\n const { data: permissions, isLoading: isLoadingPermissions } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [updateRole] = useUpdateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n if (!id) {\n return <Redirect to=\"/settings/roles\" />;\n }\n\n const handleEditRoleSubmit = async (\n data: EditRoleFormValues,\n formik: FormikHelpers<EditRoleFormValues>\n ) => {\n try {\n // @ts-expect-error – This will be fixed in V5\n lockApp();\n\n const { permissionsToSend, didUpdateConditions } =\n permissionsRef.current?.getPermissions() ?? {};\n\n const res = await updateRole({\n id,\n ...data,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n if (role.code !== 'strapi-super-admin' && permissionsToSend) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n\n if (didUpdateConditions) {\n trackUsage('didUpdateConditions');\n }\n }\n\n permissionsRef.current?.setFormAfterSubmit();\n\n await refetchRole();\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved' },\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n } finally {\n // @ts-expect-error – This will be fixed in V5\n unlockApp();\n }\n };\n\n const isFormDisabled = !isRoleLoading && role.code === 'strapi-super-admin';\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n enableReinitialize\n initialValues={\n {\n name: role.name ?? '',\n description: role.description ?? '',\n } satisfies EditRoleFormValues\n }\n onSubmit={handleEditRoleSubmit}\n validationSchema={EDIT_ROLE_SCHEMA}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleChange, handleBlur, isSubmitting }) => (\n <form onSubmit={handleSubmit}>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n type=\"submit\"\n disabled={role.code === 'strapi-super-admin'}\n loading={isSubmitting}\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.edit.title',\n defaultMessage: 'Edit a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // @ts-expect-error – the props from the component passed as `as` are not correctly inferred.\n <Link as={NavLink} startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <RoleForm\n disabled={isFormDisabled}\n errors={errors}\n values={values}\n onChange={handleChange}\n onBlur={handleBlur}\n role={role}\n />\n {!isLoadingPermissionsLayout &&\n !isRoleLoading &&\n !isLoadingPermissions &&\n permissionsLayout ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={isFormDisabled}\n permissions={permissions}\n ref={permissionsRef}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles);\n\n const {\n isLoading,\n allowedActions: { canRead, canUpdate },\n } = useRBAC(permissions);\n\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n if (!canRead && !canUpdate) {\n return <Redirect to=\"/\" />;\n }\n\n return <EditPage />;\n};\n\nexport { EditPage, ProtectedEditPage };\nexport type { EditRoleFormValues };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditPage-wQfQGs4Q.mjs","sources":["../../admin/src/pages/Settings/pages/Roles/components/RoleForm.tsx","../../admin/src/pages/Settings/pages/Roles/EditPage.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Flex,\n Grid,\n GridItem,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { FormikProps } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\nimport type { EditRoleFormValues } from '../EditPage';\n\ninterface RoleFormProps extends Pick<FormikProps<EditRoleFormValues>, 'values' | 'errors'> {\n onBlur: FormikProps<EditRoleFormValues>['handleBlur'];\n onChange: FormikProps<EditRoleFormValues>['handleChange'];\n disabled?: boolean;\n role: AdminRole;\n}\n\nconst RoleForm = ({ disabled, role, values, errors, onChange, onBlur }: RoleFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {role\n ? role.name\n : formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {role\n ? role.description\n : formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <Button disabled variant=\"secondary\">\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: role.usersCount }\n )}\n </Button>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n disabled={disabled}\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n onBlur={onBlur}\n required\n value={values.name || ''}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n disabled={disabled}\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.name && formatMessage({ id: errors.name })}\n onChange={onChange}\n onBlur={onBlur}\n >\n {values.description || ''}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nexport { RoleForm };\nexport type { RoleFormProps };\n","import * as React from 'react';\n\nimport { Box, Button, ContentLayout, Flex, HeaderLayout, Main } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useNotification,\n useOverlayBlocker,\n useTracking,\n translatedErrors,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Redirect, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useAdminRoles } from '../../../../hooks/useAdminRoles';\nimport {\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRoleMutation,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\nimport { RoleForm } from './components/RoleForm';\n\nconst EDIT_ROLE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n description: yup.string().optional(),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface EditRoleFormValues {\n name: string;\n description: string;\n}\n\nconst EditPage = () => {\n const toggleNotification = useNotification();\n const { formatMessage } = useIntl();\n const match = useRouteMatch<{ id: string }>('/settings/roles/:id');\n const id = match?.params.id;\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n const {\n roles,\n isLoading: isRoleLoading,\n refetch: refetchRole,\n } = useAdminRoles(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const role = roles[0] ?? {};\n\n const { data: permissions, isLoading: isLoadingPermissions } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [updateRole] = useUpdateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n if (!id) {\n return <Redirect to=\"/settings/roles\" />;\n }\n\n const handleEditRoleSubmit = async (\n data: EditRoleFormValues,\n formik: FormikHelpers<EditRoleFormValues>\n ) => {\n try {\n // @ts-expect-error – This will be fixed in V5\n lockApp();\n\n const { permissionsToSend, didUpdateConditions } =\n permissionsRef.current?.getPermissions() ?? {};\n\n const res = await updateRole({\n id,\n ...data,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n if (role.code !== 'strapi-super-admin' && permissionsToSend) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n\n if (didUpdateConditions) {\n trackUsage('didUpdateConditions');\n }\n }\n\n permissionsRef.current?.setFormAfterSubmit();\n\n await refetchRole();\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved' },\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n } finally {\n // @ts-expect-error – This will be fixed in V5\n unlockApp();\n }\n };\n\n const isFormDisabled = !isRoleLoading && role.code === 'strapi-super-admin';\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n enableReinitialize\n initialValues={\n {\n name: role.name ?? '',\n description: role.description ?? '',\n } satisfies EditRoleFormValues\n }\n onSubmit={handleEditRoleSubmit}\n validationSchema={EDIT_ROLE_SCHEMA}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleChange, handleBlur, isSubmitting }) => (\n <form onSubmit={handleSubmit}>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n type=\"submit\"\n disabled={role.code === 'strapi-super-admin'}\n loading={isSubmitting}\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.edit.title',\n defaultMessage: 'Edit a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // @ts-expect-error – the props from the component passed as `as` are not correctly inferred.\n <Link as={NavLink} startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <RoleForm\n disabled={isFormDisabled}\n errors={errors}\n values={values}\n onChange={handleChange}\n onBlur={handleBlur}\n role={role}\n />\n {!isLoadingPermissionsLayout &&\n !isRoleLoading &&\n !isLoadingPermissions &&\n permissionsLayout ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={isFormDisabled}\n permissions={permissions}\n ref={permissionsRef}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles);\n\n const {\n isLoading,\n allowedActions: { canRead, canUpdate },\n } = useRBAC(permissions);\n\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n if (!canRead && !canUpdate) {\n return <Redirect to=\"/\" />;\n }\n\n return <EditPage />;\n};\n\nexport { EditPage, ProtectedEditPage };\nexport type { EditRoleFormValues };\n"],"names":[],"mappings":"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"}
|
|
@@ -7,10 +7,10 @@ import { Formik } from "formik";
|
|
|
7
7
|
import { useIntl } from "react-intl";
|
|
8
8
|
import { useHistory, useLocation, useRouteMatch } from "react-router-dom";
|
|
9
9
|
import * as yup from "yup";
|
|
10
|
-
import { j as useTypedSelector, x as isBaseQueryError } from "./index-
|
|
11
|
-
import { u as useGetTransferTokenQuery, a as useCreateTransferTokenMutation, b as useUpdateTransferTokenMutation } from "./transferTokens-
|
|
10
|
+
import { j as useTypedSelector, x as isBaseQueryError } from "./index-Jcwh4RvB.mjs";
|
|
11
|
+
import { u as useGetTransferTokenQuery, a as useCreateTransferTokenMutation, b as useUpdateTransferTokenMutation } from "./transferTokens-omlsuaLU.mjs";
|
|
12
12
|
import { T as TRANSFER_TOKEN_TYPE } from "./constants-fJt30IoY.mjs";
|
|
13
|
-
import { F as FormHead, c as TokenBox, T as TokenName, a as TokenDescription, L as LifeSpanInput, b as TokenTypeSelect } from "./TokenTypeSelect-
|
|
13
|
+
import { F as FormHead, c as TokenBox, T as TokenName, a as TokenDescription, L as LifeSpanInput, b as TokenTypeSelect } from "./TokenTypeSelect-vEm-whNF.mjs";
|
|
14
14
|
import "react-dom/client";
|
|
15
15
|
import "invariant";
|
|
16
16
|
import "lodash/isFunction";
|
|
@@ -410,4 +410,4 @@ export {
|
|
|
410
410
|
LoadingView,
|
|
411
411
|
ProtectedEditView
|
|
412
412
|
};
|
|
413
|
-
//# sourceMappingURL=EditView-
|
|
413
|
+
//# sourceMappingURL=EditView-_2tho-Tr.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditView-FLjup8Cb.mjs","sources":["../../admin/src/pages/Settings/pages/TransferTokens/EditView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n translatedErrors,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikErrors, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useHistory, useLocation, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport {\n useCreateTransferTokenMutation,\n useGetTransferTokenQuery,\n useUpdateTransferTokenMutation,\n} from '../../../../services/transferTokens';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { FormHead } from '../../components/Tokens/FormHead';\nimport { LifeSpanInput } from '../../components/Tokens/LifeSpanInput';\nimport { TokenBox } from '../../components/Tokens/TokenBox';\nimport { TokenDescription } from '../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../components/Tokens/TokenTypeSelect';\n\nimport type {\n TransferToken,\n SanitizedTransferToken,\n} from '../../../../../../shared/contracts/transfer';\n\nconst schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n permissions: yup.string().required(translatedErrors.required),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const history = useHistory();\n const { state: locationState } = useLocation<{ transferToken: TransferToken }>();\n const [transferToken, setTransferToken] = React.useState<\n TransferToken | SanitizedTransferToken | null\n >(\n locationState && 'accessKey' in locationState.transferToken\n ? {\n ...locationState.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const { setCurrentStep } = useGuidedTour();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions);\n const match = useRouteMatch<{ id: string }>('/settings/transfer-tokens/:id');\n\n const id = match?.params?.id;\n const isCreating = id === 'create';\n\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error } = useGetTransferTokenQuery(id!, {\n skip: isCreating || transferToken !== null || !id,\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 setTransferToken(data);\n }\n }, [data]);\n\n const [createToken] = useCreateTransferTokenMutation();\n const [updateToken] = useUpdateTransferTokenMutation();\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n // @ts-expect-error context assertation\n lockApp();\n\n const permissions = body.permissions.split('-');\n\n const isPermissionsTransferPermission = (\n permission: string[]\n ): permission is Array<'push' | 'pull'> => {\n if (permission.length === 1) {\n return permission[0] === 'push' || permission[0] === 'pull';\n }\n\n return permission[0] === 'push' && permission[1] === 'pull';\n };\n\n // this type-guard is necessary to satisfy the type for `permissions` in the request body,\n // because String.split returns stringp[]\n if (isPermissionsTransferPermission(permissions)) {\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // lifespan must be \"null\" for unlimited (0 would mean instantly expired and isn't accepted)\n lifespan: body?.lifespan || null,\n permissions,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n\n history.push(`/settings/transfer-tokens/${res.data.id}`, { transferToken: res.data });\n setCurrentStep('transferTokens.success');\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n permissions,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n } catch (err) {\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\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken;\n\n if (isLoading) {\n return <LoadingView />;\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={\n {\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan || null,\n /**\n * We need to cast the permissions to satisfy the type for `permissions`\n * in the request body incase we don't have a transferToken and instead\n * use an empty string.\n */\n permissions: (transferToken?.permissions.join('-') ?? '') as FormValues['permissions'],\n } satisfies FormValues\n }\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/transfer-tokens\"\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'TokenCreate Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {transferToken &&\n Boolean(transferToken?.name) &&\n 'accessKey' in transferToken && (\n <TokenBox token={transferToken.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].read\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormTransferTokenContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormValues extends Pick<TransferToken, 'description' | 'name' | 'lifespan'> {\n permissions: Extract<TransferToken['permissions'][number], string>;\n}\n\ninterface FormTransferTokenContainerProps {\n errors: FormikErrors<FormValues>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values: FormValues;\n isCreating: boolean;\n transferToken: Partial<TransferToken> | null;\n}\n\nconst FormTransferTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken = {},\n}: FormTransferTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\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={transferToken}\n />\n </GridItem>\n <GridItem key=\"permissions\" col={6} xs={12}>\n <TokenTypeSelect\n name=\"permissions\"\n value={values['permissions']}\n error={errors['permissions']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n // @ts-expect-error – DS Select passes number | string, will be fixed in V2\n onChange={(value: string) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingView\n * -----------------------------------------------------------------------------------------------*/\ninterface LoadingViewProps {\n transferTokenName?: string;\n}\n\nexport const LoadingView = ({ transferTokenName }: LoadingViewProps) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"Transfer 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 transferTokenName ||\n formatMessage({\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n\nexport { EditView, ProtectedEditView };\n"],"names":["permissions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditView-_2tho-Tr.mjs","sources":["../../admin/src/pages/Settings/pages/TransferTokens/EditView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n translatedErrors,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikErrors, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useHistory, useLocation, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport {\n useCreateTransferTokenMutation,\n useGetTransferTokenQuery,\n useUpdateTransferTokenMutation,\n} from '../../../../services/transferTokens';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { FormHead } from '../../components/Tokens/FormHead';\nimport { LifeSpanInput } from '../../components/Tokens/LifeSpanInput';\nimport { TokenBox } from '../../components/Tokens/TokenBox';\nimport { TokenDescription } from '../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../components/Tokens/TokenTypeSelect';\n\nimport type {\n TransferToken,\n SanitizedTransferToken,\n} from '../../../../../../shared/contracts/transfer';\n\nconst schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n permissions: yup.string().required(translatedErrors.required),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const history = useHistory();\n const { state: locationState } = useLocation<{ transferToken: TransferToken }>();\n const [transferToken, setTransferToken] = React.useState<\n TransferToken | SanitizedTransferToken | null\n >(\n locationState && 'accessKey' in locationState.transferToken\n ? {\n ...locationState.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const { setCurrentStep } = useGuidedTour();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions);\n const match = useRouteMatch<{ id: string }>('/settings/transfer-tokens/:id');\n\n const id = match?.params?.id;\n const isCreating = id === 'create';\n\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error } = useGetTransferTokenQuery(id!, {\n skip: isCreating || transferToken !== null || !id,\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 setTransferToken(data);\n }\n }, [data]);\n\n const [createToken] = useCreateTransferTokenMutation();\n const [updateToken] = useUpdateTransferTokenMutation();\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n // @ts-expect-error context assertation\n lockApp();\n\n const permissions = body.permissions.split('-');\n\n const isPermissionsTransferPermission = (\n permission: string[]\n ): permission is Array<'push' | 'pull'> => {\n if (permission.length === 1) {\n return permission[0] === 'push' || permission[0] === 'pull';\n }\n\n return permission[0] === 'push' && permission[1] === 'pull';\n };\n\n // this type-guard is necessary to satisfy the type for `permissions` in the request body,\n // because String.split returns stringp[]\n if (isPermissionsTransferPermission(permissions)) {\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // lifespan must be \"null\" for unlimited (0 would mean instantly expired and isn't accepted)\n lifespan: body?.lifespan || null,\n permissions,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n\n history.push(`/settings/transfer-tokens/${res.data.id}`, { transferToken: res.data });\n setCurrentStep('transferTokens.success');\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n permissions,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n } catch (err) {\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\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken;\n\n if (isLoading) {\n return <LoadingView />;\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={\n {\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan || null,\n /**\n * We need to cast the permissions to satisfy the type for `permissions`\n * in the request body incase we don't have a transferToken and instead\n * use an empty string.\n */\n permissions: (transferToken?.permissions.join('-') ?? '') as FormValues['permissions'],\n } satisfies FormValues\n }\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/transfer-tokens\"\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'TokenCreate Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {transferToken &&\n Boolean(transferToken?.name) &&\n 'accessKey' in transferToken && (\n <TokenBox token={transferToken.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].read\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormTransferTokenContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormValues extends Pick<TransferToken, 'description' | 'name' | 'lifespan'> {\n permissions: Extract<TransferToken['permissions'][number], string>;\n}\n\ninterface FormTransferTokenContainerProps {\n errors: FormikErrors<FormValues>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values: FormValues;\n isCreating: boolean;\n transferToken: Partial<TransferToken> | null;\n}\n\nconst FormTransferTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken = {},\n}: FormTransferTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\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={transferToken}\n />\n </GridItem>\n <GridItem key=\"permissions\" col={6} xs={12}>\n <TokenTypeSelect\n name=\"permissions\"\n value={values['permissions']}\n error={errors['permissions']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n // @ts-expect-error – DS Select passes number | string, will be fixed in V2\n onChange={(value: string) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingView\n * -----------------------------------------------------------------------------------------------*/\ninterface LoadingViewProps {\n transferTokenName?: string;\n}\n\nexport const LoadingView = ({ transferTokenName }: LoadingViewProps) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"Transfer 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 transferTokenName ||\n formatMessage({\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n\nexport { EditView, ProtectedEditView };\n"],"names":["permissions"],"mappings":"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"}
|
|
@@ -9,10 +9,10 @@ const formik = require("formik");
|
|
|
9
9
|
const reactIntl = require("react-intl");
|
|
10
10
|
const reactRouterDom = require("react-router-dom");
|
|
11
11
|
const yup = require("yup");
|
|
12
|
-
const index = require("./index-
|
|
13
|
-
const transferTokens = require("./transferTokens-
|
|
12
|
+
const index = require("./index-vgUniZbN.js");
|
|
13
|
+
const transferTokens = require("./transferTokens-06uZXA76.js");
|
|
14
14
|
const constants = require("./constants-RMqZXSqh.js");
|
|
15
|
-
const TokenTypeSelect = require("./TokenTypeSelect
|
|
15
|
+
const TokenTypeSelect = require("./TokenTypeSelect-HBXQPhQa.js");
|
|
16
16
|
require("react-dom/client");
|
|
17
17
|
require("invariant");
|
|
18
18
|
require("lodash/isFunction");
|
|
@@ -430,4 +430,4 @@ const LoadingView = ({ transferTokenName }) => {
|
|
|
430
430
|
exports.EditView = EditView;
|
|
431
431
|
exports.LoadingView = LoadingView;
|
|
432
432
|
exports.ProtectedEditView = ProtectedEditView;
|
|
433
|
-
//# sourceMappingURL=EditView-
|
|
433
|
+
//# sourceMappingURL=EditView-pfnQfvBy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditView-4madk_eP.js","sources":["../../admin/src/pages/Settings/pages/TransferTokens/EditView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n translatedErrors,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikErrors, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useHistory, useLocation, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport {\n useCreateTransferTokenMutation,\n useGetTransferTokenQuery,\n useUpdateTransferTokenMutation,\n} from '../../../../services/transferTokens';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { FormHead } from '../../components/Tokens/FormHead';\nimport { LifeSpanInput } from '../../components/Tokens/LifeSpanInput';\nimport { TokenBox } from '../../components/Tokens/TokenBox';\nimport { TokenDescription } from '../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../components/Tokens/TokenTypeSelect';\n\nimport type {\n TransferToken,\n SanitizedTransferToken,\n} from '../../../../../../shared/contracts/transfer';\n\nconst schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n permissions: yup.string().required(translatedErrors.required),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const history = useHistory();\n const { state: locationState } = useLocation<{ transferToken: TransferToken }>();\n const [transferToken, setTransferToken] = React.useState<\n TransferToken | SanitizedTransferToken | null\n >(\n locationState && 'accessKey' in locationState.transferToken\n ? {\n ...locationState.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const { setCurrentStep } = useGuidedTour();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions);\n const match = useRouteMatch<{ id: string }>('/settings/transfer-tokens/:id');\n\n const id = match?.params?.id;\n const isCreating = id === 'create';\n\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error } = useGetTransferTokenQuery(id!, {\n skip: isCreating || transferToken !== null || !id,\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 setTransferToken(data);\n }\n }, [data]);\n\n const [createToken] = useCreateTransferTokenMutation();\n const [updateToken] = useUpdateTransferTokenMutation();\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n // @ts-expect-error context assertation\n lockApp();\n\n const permissions = body.permissions.split('-');\n\n const isPermissionsTransferPermission = (\n permission: string[]\n ): permission is Array<'push' | 'pull'> => {\n if (permission.length === 1) {\n return permission[0] === 'push' || permission[0] === 'pull';\n }\n\n return permission[0] === 'push' && permission[1] === 'pull';\n };\n\n // this type-guard is necessary to satisfy the type for `permissions` in the request body,\n // because String.split returns stringp[]\n if (isPermissionsTransferPermission(permissions)) {\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // lifespan must be \"null\" for unlimited (0 would mean instantly expired and isn't accepted)\n lifespan: body?.lifespan || null,\n permissions,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n\n history.push(`/settings/transfer-tokens/${res.data.id}`, { transferToken: res.data });\n setCurrentStep('transferTokens.success');\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n permissions,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n } catch (err) {\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\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken;\n\n if (isLoading) {\n return <LoadingView />;\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={\n {\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan || null,\n /**\n * We need to cast the permissions to satisfy the type for `permissions`\n * in the request body incase we don't have a transferToken and instead\n * use an empty string.\n */\n permissions: (transferToken?.permissions.join('-') ?? '') as FormValues['permissions'],\n } satisfies FormValues\n }\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/transfer-tokens\"\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'TokenCreate Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {transferToken &&\n Boolean(transferToken?.name) &&\n 'accessKey' in transferToken && (\n <TokenBox token={transferToken.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].read\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormTransferTokenContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormValues extends Pick<TransferToken, 'description' | 'name' | 'lifespan'> {\n permissions: Extract<TransferToken['permissions'][number], string>;\n}\n\ninterface FormTransferTokenContainerProps {\n errors: FormikErrors<FormValues>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values: FormValues;\n isCreating: boolean;\n transferToken: Partial<TransferToken> | null;\n}\n\nconst FormTransferTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken = {},\n}: FormTransferTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\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={transferToken}\n />\n </GridItem>\n <GridItem key=\"permissions\" col={6} xs={12}>\n <TokenTypeSelect\n name=\"permissions\"\n value={values['permissions']}\n error={errors['permissions']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n // @ts-expect-error – DS Select passes number | string, will be fixed in V2\n onChange={(value: string) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingView\n * -----------------------------------------------------------------------------------------------*/\ninterface LoadingViewProps {\n transferTokenName?: string;\n}\n\nexport const LoadingView = ({ transferTokenName }: LoadingViewProps) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"Transfer 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 transferTokenName ||\n formatMessage({\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n\nexport { EditView, ProtectedEditView };\n"],"names":["yup","translatedErrors","useFocusWhenNavigate","useIntl","useOverlayBlocker","useNotification","useHistory","useLocation","React","useTracking","useGuidedTour","useTypedSelector","useRBAC","useRouteMatch","useAPIErrorHandler","TRANSFER_TOKEN_TYPE","useGetTransferTokenQuery","useCreateTransferTokenMutation","useUpdateTransferTokenMutation","formik","permissions","isBaseQueryError","Main","jsx","SettingsPageTitle","Formik","Form","FormHead","ContentLayout","jsxs","Flex","TokenBox","CheckPagePermissions","Box","Typography","Grid","GridItem","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","HeaderLayout","Button","Check","LoadingIndicatorPage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditView-pfnQfvBy.js","sources":["../../admin/src/pages/Settings/pages/TransferTokens/EditView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n translatedErrors,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikErrors, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useHistory, useLocation, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport {\n useCreateTransferTokenMutation,\n useGetTransferTokenQuery,\n useUpdateTransferTokenMutation,\n} from '../../../../services/transferTokens';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { FormHead } from '../../components/Tokens/FormHead';\nimport { LifeSpanInput } from '../../components/Tokens/LifeSpanInput';\nimport { TokenBox } from '../../components/Tokens/TokenBox';\nimport { TokenDescription } from '../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../components/Tokens/TokenTypeSelect';\n\nimport type {\n TransferToken,\n SanitizedTransferToken,\n} from '../../../../../../shared/contracts/transfer';\n\nconst schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n permissions: yup.string().required(translatedErrors.required),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const history = useHistory();\n const { state: locationState } = useLocation<{ transferToken: TransferToken }>();\n const [transferToken, setTransferToken] = React.useState<\n TransferToken | SanitizedTransferToken | null\n >(\n locationState && 'accessKey' in locationState.transferToken\n ? {\n ...locationState.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const { setCurrentStep } = useGuidedTour();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions);\n const match = useRouteMatch<{ id: string }>('/settings/transfer-tokens/:id');\n\n const id = match?.params?.id;\n const isCreating = id === 'create';\n\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error } = useGetTransferTokenQuery(id!, {\n skip: isCreating || transferToken !== null || !id,\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 setTransferToken(data);\n }\n }, [data]);\n\n const [createToken] = useCreateTransferTokenMutation();\n const [updateToken] = useUpdateTransferTokenMutation();\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n // @ts-expect-error context assertation\n lockApp();\n\n const permissions = body.permissions.split('-');\n\n const isPermissionsTransferPermission = (\n permission: string[]\n ): permission is Array<'push' | 'pull'> => {\n if (permission.length === 1) {\n return permission[0] === 'push' || permission[0] === 'pull';\n }\n\n return permission[0] === 'push' && permission[1] === 'pull';\n };\n\n // this type-guard is necessary to satisfy the type for `permissions` in the request body,\n // because String.split returns stringp[]\n if (isPermissionsTransferPermission(permissions)) {\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // lifespan must be \"null\" for unlimited (0 would mean instantly expired and isn't accepted)\n lifespan: body?.lifespan || null,\n permissions,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n\n history.push(`/settings/transfer-tokens/${res.data.id}`, { transferToken: res.data });\n setCurrentStep('transferTokens.success');\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n permissions,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n } catch (err) {\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\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken;\n\n if (isLoading) {\n return <LoadingView />;\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={\n {\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan || null,\n /**\n * We need to cast the permissions to satisfy the type for `permissions`\n * in the request body incase we don't have a transferToken and instead\n * use an empty string.\n */\n permissions: (transferToken?.permissions.join('-') ?? '') as FormValues['permissions'],\n } satisfies FormValues\n }\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/transfer-tokens\"\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'TokenCreate Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {transferToken &&\n Boolean(transferToken?.name) &&\n 'accessKey' in transferToken && (\n <TokenBox token={transferToken.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].read\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormTransferTokenContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormValues extends Pick<TransferToken, 'description' | 'name' | 'lifespan'> {\n permissions: Extract<TransferToken['permissions'][number], string>;\n}\n\ninterface FormTransferTokenContainerProps {\n errors: FormikErrors<FormValues>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values: FormValues;\n isCreating: boolean;\n transferToken: Partial<TransferToken> | null;\n}\n\nconst FormTransferTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken = {},\n}: FormTransferTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\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={transferToken}\n />\n </GridItem>\n <GridItem key=\"permissions\" col={6} xs={12}>\n <TokenTypeSelect\n name=\"permissions\"\n value={values['permissions']}\n error={errors['permissions']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n // @ts-expect-error – DS Select passes number | string, will be fixed in V2\n onChange={(value: string) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingView\n * -----------------------------------------------------------------------------------------------*/\ninterface LoadingViewProps {\n transferTokenName?: string;\n}\n\nexport const LoadingView = ({ transferTokenName }: LoadingViewProps) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"Transfer 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 transferTokenName ||\n formatMessage({\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n\nexport { EditView, ProtectedEditView };\n"],"names":["yup","translatedErrors","useFocusWhenNavigate","useIntl","useOverlayBlocker","useNotification","useHistory","useLocation","React","useTracking","useGuidedTour","useTypedSelector","useRBAC","useRouteMatch","useAPIErrorHandler","TRANSFER_TOKEN_TYPE","useGetTransferTokenQuery","useCreateTransferTokenMutation","useUpdateTransferTokenMutation","formik","permissions","isBaseQueryError","Main","jsx","SettingsPageTitle","Formik","Form","FormHead","ContentLayout","jsxs","Flex","TokenBox","CheckPagePermissions","Box","Typography","Grid","GridItem","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","HeaderLayout","Button","Check","LoadingIndicatorPage"],"mappings":"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"}
|
|
@@ -7,10 +7,10 @@ const helperPlugin = require("@strapi/helper-plugin");
|
|
|
7
7
|
const formik = require("formik");
|
|
8
8
|
const reactIntl = require("react-intl");
|
|
9
9
|
const reactRouterDom = require("react-router-dom");
|
|
10
|
-
const index = require("./index-
|
|
11
|
-
const apiTokens = require("./apiTokens-
|
|
10
|
+
const index = require("./index-vgUniZbN.js");
|
|
11
|
+
const apiTokens = require("./apiTokens-T80qIyG1.js");
|
|
12
12
|
const constants = require("./constants-RMqZXSqh.js");
|
|
13
|
-
const TokenTypeSelect = require("./TokenTypeSelect
|
|
13
|
+
const TokenTypeSelect = require("./TokenTypeSelect-HBXQPhQa.js");
|
|
14
14
|
const reactContext = require("@radix-ui/react-context");
|
|
15
15
|
const Icons = require("@strapi/icons");
|
|
16
16
|
const map = require("lodash/map");
|
|
@@ -933,4 +933,4 @@ const ProtectedEditView = () => {
|
|
|
933
933
|
};
|
|
934
934
|
exports.EditView = EditView;
|
|
935
935
|
exports.ProtectedEditView = ProtectedEditView;
|
|
936
|
-
//# sourceMappingURL=EditViewPage-
|
|
936
|
+
//# sourceMappingURL=EditViewPage-BfWiwClO.js.map
|