@strapi/admin 4.25.21 → 4.25.23
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-fNh9AVPj.mjs → AdminSeatInfo-LXgNjwsq.mjs} +3 -3
- package/dist/_chunks/{AdminSeatInfo-fNh9AVPj.mjs.map → AdminSeatInfo-LXgNjwsq.mjs.map} +1 -1
- package/dist/_chunks/{AdminSeatInfo-n9_ckklX.js → AdminSeatInfo-iASat0Hw.js} +3 -3
- package/dist/_chunks/{AdminSeatInfo-n9_ckklX.js.map → AdminSeatInfo-iASat0Hw.js.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-JlSCDE9m.mjs → AuthenticatedApp-Bfl9hK_h.mjs} +22 -22
- package/dist/_chunks/{AuthenticatedApp-JlSCDE9m.mjs.map → AuthenticatedApp-Bfl9hK_h.mjs.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-QDCywiaA.js → AuthenticatedApp-BhDorlD8.js} +22 -22
- package/dist/_chunks/{AuthenticatedApp-QDCywiaA.js.map → AuthenticatedApp-BhDorlD8.js.map} +1 -1
- package/dist/_chunks/{CreateActionEE-j5RHQGR1.mjs → CreateActionEE-H-fQGqjA.mjs} +2 -2
- package/dist/_chunks/{CreateActionEE-j5RHQGR1.mjs.map → CreateActionEE-H-fQGqjA.mjs.map} +1 -1
- package/dist/_chunks/{CreateActionEE-41ZkOmsl.js → CreateActionEE-fa-xpnfx.js} +2 -2
- package/dist/_chunks/{CreateActionEE-41ZkOmsl.js.map → CreateActionEE-fa-xpnfx.js.map} +1 -1
- package/dist/_chunks/{CreatePage-pZqlUQYD.js → CreatePage--54BSoB7.js} +8 -8
- package/dist/_chunks/{CreatePage-pZqlUQYD.js.map → CreatePage--54BSoB7.js.map} +1 -1
- package/dist/_chunks/{CreatePage-ApXmZ6hv.mjs → CreatePage-VaJ3geMW.mjs} +8 -8
- package/dist/_chunks/{CreatePage-ApXmZ6hv.mjs.map → CreatePage-VaJ3geMW.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-w8DFLtB6.js → CreatePage-fxCGcrNa.js} +6 -6
- package/dist/_chunks/{CreatePage-w8DFLtB6.js.map → CreatePage-fxCGcrNa.js.map} +1 -1
- package/dist/_chunks/{CreatePage-9yf08Hvr.mjs → CreatePage-sZwN4-t1.mjs} +3 -3
- package/dist/_chunks/{CreatePage-9yf08Hvr.mjs.map → CreatePage-sZwN4-t1.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-eEbDUiWT.js → CreatePage-xF4vGlFt.js} +3 -3
- package/dist/_chunks/{CreatePage-eEbDUiWT.js.map → CreatePage-xF4vGlFt.js.map} +1 -1
- package/dist/_chunks/{CreatePage-hqu9LQBD.mjs → CreatePage-yCJUQ_Q_.mjs} +6 -6
- package/dist/_chunks/{CreatePage-hqu9LQBD.mjs.map → CreatePage-yCJUQ_Q_.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-kbmC1gMS.mjs → CreateView--YWdFkar.mjs} +6 -6
- package/dist/_chunks/{CreateView-kbmC1gMS.mjs.map → CreateView--YWdFkar.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-63oNUfVH.js → CreateView-0cT0WTX3.js} +6 -6
- package/dist/_chunks/{CreateView-63oNUfVH.js.map → CreateView-0cT0WTX3.js.map} +1 -1
- package/dist/_chunks/{CreateView-KVMv7s3s.js → CreateView-iobgSsYH.js} +6 -6
- package/dist/_chunks/{CreateView-KVMv7s3s.js.map → CreateView-iobgSsYH.js.map} +1 -1
- package/dist/_chunks/{CreateView-EiUPL71p.mjs → CreateView-qLcZo0lL.mjs} +6 -6
- package/dist/_chunks/{CreateView-EiUPL71p.mjs.map → CreateView-qLcZo0lL.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-zla6CY-n.js → EditPage-41veRB1H.js} +6 -6
- package/dist/_chunks/{EditPage-zla6CY-n.js.map → EditPage-41veRB1H.js.map} +1 -1
- package/dist/_chunks/{EditPage-Dfh_a9re.mjs → EditPage-9L9QFEhI.mjs} +9 -9
- package/dist/_chunks/{EditPage-Dfh_a9re.mjs.map → EditPage-9L9QFEhI.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-S32_MPZV.js → EditPage-IqschOA1.js} +6 -6
- package/dist/_chunks/{EditPage-S32_MPZV.js.map → EditPage-IqschOA1.js.map} +1 -1
- package/dist/_chunks/{EditPage-4QW2drFe.js → EditPage-MbDaNryL.js} +4 -4
- package/dist/_chunks/{EditPage-4QW2drFe.js.map → EditPage-MbDaNryL.js.map} +1 -1
- package/dist/_chunks/{EditPage-IKP7kDDd.mjs → EditPage-RVuaalPM.mjs} +4 -4
- package/dist/_chunks/{EditPage-IKP7kDDd.mjs.map → EditPage-RVuaalPM.mjs.map} +1 -1
- package/dist/_chunks/{EditPage--b9DJdw5.js → EditPage-TKSrKZIB.js} +9 -9
- package/dist/_chunks/{EditPage--b9DJdw5.js.map → EditPage-TKSrKZIB.js.map} +1 -1
- package/dist/_chunks/{EditPage-0SD5FvMy.mjs → EditPage-eakBPGh3.mjs} +6 -6
- package/dist/_chunks/{EditPage-0SD5FvMy.mjs.map → EditPage-eakBPGh3.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-ys_BuVge.mjs → EditPage-j7PAa8iL.mjs} +6 -6
- package/dist/_chunks/{EditPage-ys_BuVge.mjs.map → EditPage-j7PAa8iL.mjs.map} +1 -1
- package/dist/_chunks/{EditView-Z0k2PFIW.js → EditView-jWLX1Tyq.js} +4 -4
- package/dist/_chunks/{EditView-Z0k2PFIW.js.map → EditView-jWLX1Tyq.js.map} +1 -1
- package/dist/_chunks/{EditView-DEchhGSy.mjs → EditView-y7Ru7MBN.mjs} +4 -4
- package/dist/_chunks/{EditView-DEchhGSy.mjs.map → EditView-y7Ru7MBN.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-FaZ9DTP-.js → EditViewPage-26ouX4XT.js} +4 -4
- package/dist/_chunks/{EditViewPage-FaZ9DTP-.js.map → EditViewPage-26ouX4XT.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-66vkBGnE.mjs → EditViewPage-K3F6kESh.mjs} +4 -4
- package/dist/_chunks/{EditViewPage-66vkBGnE.mjs.map → EditViewPage-K3F6kESh.mjs.map} +1 -1
- package/dist/_chunks/{EventsTable-wVl5KPcq.mjs → EventsTable-KDjZ2cVf.mjs} +6 -6
- package/dist/_chunks/{EventsTable-wVl5KPcq.mjs.map → EventsTable-KDjZ2cVf.mjs.map} +1 -1
- package/dist/_chunks/{EventsTable-Mp4lY2AJ.js → EventsTable-LXrDlBfr.js} +6 -6
- package/dist/_chunks/{EventsTable-Mp4lY2AJ.js.map → EventsTable-LXrDlBfr.js.map} +1 -1
- package/dist/_chunks/{HomePage-J_qLEedO.js → HomePage-FResDoxA.js} +5 -5
- package/dist/_chunks/{HomePage-J_qLEedO.js.map → HomePage-FResDoxA.js.map} +1 -1
- package/dist/_chunks/{HomePage-dHbUIjx9.js → HomePage-Ze3G8iUH.js} +6 -6
- package/dist/_chunks/{HomePage-dHbUIjx9.js.map → HomePage-Ze3G8iUH.js.map} +1 -1
- package/dist/_chunks/{HomePage-NgMfBDG1.mjs → HomePage-ednXn0_w.mjs} +6 -6
- package/dist/_chunks/{HomePage-NgMfBDG1.mjs.map → HomePage-ednXn0_w.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-Uzw2Zg0c.mjs → HomePage-eu--l8xF.mjs} +5 -5
- package/dist/_chunks/{HomePage-Uzw2Zg0c.mjs.map → HomePage-eu--l8xF.mjs.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-L8BBbY5q.mjs → InformationBoxEE-Gdo1XAgx.mjs} +3 -3
- package/dist/_chunks/{InformationBoxEE-L8BBbY5q.mjs.map → InformationBoxEE-Gdo1XAgx.mjs.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-QnIjVrwB.js → InformationBoxEE-paMrWUnO.js} +3 -3
- package/dist/_chunks/{InformationBoxEE-QnIjVrwB.js.map → InformationBoxEE-paMrWUnO.js.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-5FMbbylg.js → InstalledPluginsPage-CqVr2dr6.js} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-5FMbbylg.js.map → InstalledPluginsPage-CqVr2dr6.js.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-9wzLhUvI.mjs → InstalledPluginsPage-bwx1FfBD.mjs} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-9wzLhUvI.mjs.map → InstalledPluginsPage-bwx1FfBD.mjs.map} +1 -1
- package/dist/_chunks/{Layout--0fQX_O4.js → Layout-3Lv7Nso2.js} +2 -2
- package/dist/_chunks/{Layout--0fQX_O4.js.map → Layout-3Lv7Nso2.js.map} +1 -1
- package/dist/_chunks/{Layout-QMOA8ZMB.mjs → Layout-Z16aTYpZ.mjs} +2 -2
- package/dist/_chunks/{Layout-QMOA8ZMB.mjs.map → Layout-Z16aTYpZ.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-m6p6QnZU.js → ListPage-5xEl9tYB.js} +7 -7
- package/dist/_chunks/{ListPage-m6p6QnZU.js.map → ListPage-5xEl9tYB.js.map} +1 -1
- package/dist/_chunks/{ListPage-98s5i8Xi.mjs → ListPage-9qAYgALl.mjs} +4 -4
- package/dist/_chunks/{ListPage-98s5i8Xi.mjs.map → ListPage-9qAYgALl.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-NW6Jib2e.mjs → ListPage-IK__4Lpf.mjs} +2 -2
- package/dist/_chunks/{ListPage-NW6Jib2e.mjs.map → ListPage-IK__4Lpf.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-_lgSe68W.js → ListPage-PpuyFTj7.js} +2 -2
- package/dist/_chunks/{ListPage-_lgSe68W.js.map → ListPage-PpuyFTj7.js.map} +1 -1
- package/dist/_chunks/{ListPage-vnDwKizz.mjs → ListPage-TJvZ4Mf5.mjs} +6 -6
- package/dist/_chunks/{ListPage-vnDwKizz.mjs.map → ListPage-TJvZ4Mf5.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-cznp__Dv.mjs → ListPage-X6S-Jwbi.mjs} +8 -8
- package/dist/_chunks/{ListPage-cznp__Dv.mjs.map → ListPage-X6S-Jwbi.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-HZokVhqs.mjs → ListPage-hRUBs_lX.mjs} +7 -7
- package/dist/_chunks/{ListPage-HZokVhqs.mjs.map → ListPage-hRUBs_lX.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-RhTdol-1.js → ListPage-jzaajX-e.js} +3 -3
- package/dist/_chunks/{ListPage-RhTdol-1.js.map → ListPage-jzaajX-e.js.map} +1 -1
- package/dist/_chunks/{ListPage-OQ2ywwby.mjs → ListPage-lXXuYlv5.mjs} +3 -3
- package/dist/_chunks/{ListPage-OQ2ywwby.mjs.map → ListPage-lXXuYlv5.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-mauu1_HA.js → ListPage-oCa14URs.js} +6 -6
- package/dist/_chunks/{ListPage-mauu1_HA.js.map → ListPage-oCa14URs.js.map} +1 -1
- package/dist/_chunks/{ListPage-WYdwtsqM.js → ListPage-psHwJBW1.js} +8 -8
- package/dist/_chunks/{ListPage-WYdwtsqM.js.map → ListPage-psHwJBW1.js.map} +1 -1
- package/dist/_chunks/{ListPage-4ewT-BZW.js → ListPage-zhVYinNj.js} +4 -4
- package/dist/_chunks/{ListPage-4ewT-BZW.js.map → ListPage-zhVYinNj.js.map} +1 -1
- package/dist/_chunks/{ListView-lkCViZHB.js → ListView-3Fg7Y56o.js} +3 -3
- package/dist/_chunks/{ListView-lkCViZHB.js.map → ListView-3Fg7Y56o.js.map} +1 -1
- package/dist/_chunks/{ListView-7ZJcAipg.mjs → ListView-HLSZD4QG.mjs} +3 -3
- package/dist/_chunks/{ListView-7ZJcAipg.mjs.map → ListView-HLSZD4QG.mjs.map} +1 -1
- package/dist/_chunks/{ListView-Z7ammGeJ.mjs → ListView-LqnkQPSw.mjs} +3 -3
- package/dist/_chunks/{ListView-Z7ammGeJ.mjs.map → ListView-LqnkQPSw.mjs.map} +1 -1
- package/dist/_chunks/{ListView-hoXRhYAF.js → ListView-jQQs_cJl.js} +3 -3
- package/dist/_chunks/{ListView-hoXRhYAF.js.map → ListView-jQQs_cJl.js.map} +1 -1
- package/dist/_chunks/{Login-Ky9EqaPl.mjs → Login-sL4b-7I_.mjs} +2 -2
- package/dist/_chunks/{Login-Ky9EqaPl.mjs.map → Login-sL4b-7I_.mjs.map} +1 -1
- package/dist/_chunks/{Login-l_qX3rqd.js → Login-vU5BXAqP.js} +2 -2
- package/dist/_chunks/{Login-l_qX3rqd.js.map → Login-vU5BXAqP.js.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-Zsz76VJd.js → MagicLinkEE-mupgFg4V.js} +4 -4
- package/dist/_chunks/{MagicLinkEE-Zsz76VJd.js.map → MagicLinkEE-mupgFg4V.js.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-b5oKEMhb.mjs → MagicLinkEE-sBUcBylX.mjs} +4 -4
- package/dist/_chunks/{MagicLinkEE-b5oKEMhb.mjs.map → MagicLinkEE-sBUcBylX.mjs.map} +1 -1
- package/dist/_chunks/{MarketplacePage-p3jDY32K.js → MarketplacePage-IjKH_WKo.js} +3 -3
- package/dist/_chunks/{MarketplacePage-p3jDY32K.js.map → MarketplacePage-IjKH_WKo.js.map} +1 -1
- package/dist/_chunks/{MarketplacePage-bEBY0oMW.mjs → MarketplacePage-gM6Owfe4.mjs} +3 -3
- package/dist/_chunks/{MarketplacePage-bEBY0oMW.mjs.map → MarketplacePage-gM6Owfe4.mjs.map} +1 -1
- package/dist/_chunks/{Permissions-kUXaT_FG.mjs → Permissions-DcS4EUNN.mjs} +2 -2
- package/dist/_chunks/{Permissions-kUXaT_FG.mjs.map → Permissions-DcS4EUNN.mjs.map} +1 -1
- package/dist/_chunks/{Permissions-KmDO0rYL.js → Permissions-bKkzuzDV.js} +2 -2
- package/dist/_chunks/{Permissions-KmDO0rYL.js.map → Permissions-bKkzuzDV.js.map} +1 -1
- package/dist/_chunks/{ProfilePage-UKafmIQU.mjs → ProfilePage-1wRz5NN3.mjs} +3 -3
- package/dist/_chunks/{ProfilePage-UKafmIQU.mjs.map → ProfilePage-1wRz5NN3.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-RAAMg9Wq.js → ProfilePage-BheU04B3.js} +3 -3
- package/dist/_chunks/{ProfilePage-RAAMg9Wq.js.map → ProfilePage-BheU04B3.js.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-4k7WyvRr.js → ReviewWorkflowsColumn-Bmm5pCUA.js} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-4k7WyvRr.js.map → ReviewWorkflowsColumn-Bmm5pCUA.js.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-8SKxr3qC.mjs → ReviewWorkflowsColumn-jL2QtJeb.mjs} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-8SKxr3qC.mjs.map → ReviewWorkflowsColumn-jL2QtJeb.mjs.map} +1 -1
- package/dist/_chunks/{SelectRoles-cdkdfqin.js → SelectRoles-8cZLkMEi.js} +3 -3
- package/dist/_chunks/{SelectRoles-cdkdfqin.js.map → SelectRoles-8cZLkMEi.js.map} +1 -1
- package/dist/_chunks/{SelectRoles-_XSAf07G.mjs → SelectRoles-avun6PVn.mjs} +3 -3
- package/dist/_chunks/{SelectRoles-_XSAf07G.mjs.map → SelectRoles-avun6PVn.mjs.map} +1 -1
- package/dist/_chunks/{SettingsPage-N9zitd6U.mjs → SettingsPage-Leij7RZb.mjs} +21 -21
- package/dist/_chunks/{SettingsPage-N9zitd6U.mjs.map → SettingsPage-Leij7RZb.mjs.map} +1 -1
- package/dist/_chunks/{SettingsPage-TWrwoiEG.js → SettingsPage-vNzZJ3ag.js} +21 -21
- package/dist/_chunks/{SettingsPage-TWrwoiEG.js.map → SettingsPage-vNzZJ3ag.js.map} +1 -1
- package/dist/_chunks/{SingleSignOnPage-WS3ulauT.mjs → SingleSignOnPage-PvhdP6KP.mjs} +3 -3
- package/dist/_chunks/{SingleSignOnPage-WS3ulauT.mjs.map → SingleSignOnPage-PvhdP6KP.mjs.map} +1 -1
- package/dist/_chunks/{SingleSignOnPage-sxTphba9.js → SingleSignOnPage-r9DBE6xY.js} +3 -3
- package/dist/_chunks/{SingleSignOnPage-sxTphba9.js.map → SingleSignOnPage-r9DBE6xY.js.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect--3ay_72E.mjs → TokenTypeSelect-AIpez_wn.mjs} +2 -2
- package/dist/_chunks/{TokenTypeSelect--3ay_72E.mjs.map → TokenTypeSelect-AIpez_wn.mjs.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect-Poj87TVd.js → TokenTypeSelect-q02cCXwZ.js} +2 -2
- package/dist/_chunks/{TokenTypeSelect-Poj87TVd.js.map → TokenTypeSelect-q02cCXwZ.js.map} +1 -1
- package/dist/_chunks/{apiTokens-1-g1z-xk.mjs → apiTokens-MDVd3qb9.mjs} +2 -2
- package/dist/_chunks/{apiTokens-1-g1z-xk.mjs.map → apiTokens-MDVd3qb9.mjs.map} +1 -1
- package/dist/_chunks/{apiTokens-f5VdDehM.js → apiTokens-cNgZGltX.js} +2 -2
- package/dist/_chunks/{apiTokens-f5VdDehM.js.map → apiTokens-cNgZGltX.js.map} +1 -1
- package/dist/_chunks/{constants-EKhu9sSP.mjs → constants-7MMo0xYE.mjs} +6 -6
- package/dist/_chunks/{constants-EKhu9sSP.mjs.map → constants-7MMo0xYE.mjs.map} +1 -1
- package/dist/_chunks/{constants-9hTO8CqH.js → constants-7my2QI_T.js} +2 -2
- package/dist/_chunks/{constants-9hTO8CqH.js.map → constants-7my2QI_T.js.map} +1 -1
- package/dist/_chunks/{constants-Ldyt_eKu.mjs → constants-HiPaWTSX.mjs} +4 -4
- package/dist/_chunks/{constants-Ldyt_eKu.mjs.map → constants-HiPaWTSX.mjs.map} +1 -1
- package/dist/_chunks/{constants-oz9VRBgp.js → constants-ODhwlQKw.js} +6 -6
- package/dist/_chunks/{constants-oz9VRBgp.js.map → constants-ODhwlQKw.js.map} +1 -1
- package/dist/_chunks/{constants-WADLbNZe.mjs → constants-W3sunVeW.mjs} +2 -2
- package/dist/_chunks/{constants-WADLbNZe.mjs.map → constants-W3sunVeW.mjs.map} +1 -1
- package/dist/_chunks/{constants-htFUWDmA.js → constants-X4ivu2Z3.js} +4 -4
- package/dist/_chunks/{constants-htFUWDmA.js.map → constants-X4ivu2Z3.js.map} +1 -1
- package/dist/_chunks/{constants-aqbguIyK.js → constants-eHUirbuN.js} +2 -2
- package/dist/_chunks/{constants-aqbguIyK.js.map → constants-eHUirbuN.js.map} +1 -1
- package/dist/_chunks/{constants-dWFltCWB.mjs → constants-rjmpwCpB.mjs} +2 -2
- package/dist/_chunks/{constants-dWFltCWB.mjs.map → constants-rjmpwCpB.mjs.map} +1 -1
- package/dist/_chunks/{index-Go7rNONx.mjs → index-5hP8C9h_.mjs} +10 -10
- package/dist/_chunks/{index-Go7rNONx.mjs.map → index-5hP8C9h_.mjs.map} +1 -1
- package/dist/_chunks/{index-Fnq9LxjS.js → index-hdB0LcQU.js} +10 -10
- package/dist/_chunks/{index-Fnq9LxjS.js.map → index-hdB0LcQU.js.map} +1 -1
- package/dist/_chunks/{reviewWorkflows-UTFLiCQ7.mjs → reviewWorkflows-NT8a9pbP.mjs} +2 -2
- package/dist/_chunks/{reviewWorkflows-UTFLiCQ7.mjs.map → reviewWorkflows-NT8a9pbP.mjs.map} +1 -1
- package/dist/_chunks/{reviewWorkflows-3LqmbaWU.js → reviewWorkflows-pvz0btjd.js} +2 -2
- package/dist/_chunks/{reviewWorkflows-3LqmbaWU.js.map → reviewWorkflows-pvz0btjd.js.map} +1 -1
- package/dist/_chunks/{transferTokens-vvFnOhfY.mjs → transferTokens-WJTQc-sG.mjs} +2 -2
- package/dist/_chunks/{transferTokens-vvFnOhfY.mjs.map → transferTokens-WJTQc-sG.mjs.map} +1 -1
- package/dist/_chunks/{transferTokens-rl4cws_7.js → transferTokens-n2fnxAr8.js} +2 -2
- package/dist/_chunks/{transferTokens-rl4cws_7.js.map → transferTokens-n2fnxAr8.js.map} +1 -1
- package/dist/_chunks/{useAdminRoles-jYK0Lxgt.mjs → useAdminRoles-GLrN6UE1.mjs} +2 -2
- package/dist/_chunks/{useAdminRoles-jYK0Lxgt.mjs.map → useAdminRoles-GLrN6UE1.mjs.map} +1 -1
- package/dist/_chunks/{useAdminRoles-eeaWQ2Rw.js → useAdminRoles-MXgNiQEp.js} +2 -2
- package/dist/_chunks/{useAdminRoles-eeaWQ2Rw.js.map → useAdminRoles-MXgNiQEp.js.map} +1 -1
- package/dist/_chunks/{useContentTypes-0aVH8324.mjs → useContentTypes-3V7R5Vlq.mjs} +2 -2
- package/dist/_chunks/{useContentTypes-0aVH8324.mjs.map → useContentTypes-3V7R5Vlq.mjs.map} +1 -1
- package/dist/_chunks/{useContentTypes-i8rQ45xv.js → useContentTypes-lP8pXI_b.js} +2 -2
- package/dist/_chunks/{useContentTypes-i8rQ45xv.js.map → useContentTypes-lP8pXI_b.js.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-CetQFd8w.js → useLicenseLimitNotification-BF8lNWgZ.js} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-CetQFd8w.js.map → useLicenseLimitNotification-BF8lNWgZ.js.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-HiIBpsf0.mjs → useLicenseLimitNotification-_Isg3hBw.mjs} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-HiIBpsf0.mjs.map → useLicenseLimitNotification-_Isg3hBw.mjs.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-FmX2X--T.mjs → useReviewWorkflows-c_5Ue4p0.mjs} +2 -2
- package/dist/_chunks/{useReviewWorkflows-FmX2X--T.mjs.map → useReviewWorkflows-c_5Ue4p0.mjs.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-3V4AXqOe.js → useReviewWorkflows-sUSNw5FU.js} +2 -2
- package/dist/_chunks/{useReviewWorkflows-3V4AXqOe.js.map → useReviewWorkflows-sUSNw5FU.js.map} +1 -1
- package/dist/_chunks/{useWebhooks-2WUKsATN.mjs → useWebhooks-NEbJu8zy.mjs} +2 -2
- package/dist/_chunks/{useWebhooks-2WUKsATN.mjs.map → useWebhooks-NEbJu8zy.mjs.map} +1 -1
- package/dist/_chunks/{useWebhooks-mLbKEm8B.js → useWebhooks-rUXZtGhD.js} +2 -2
- package/dist/_chunks/{useWebhooks-mLbKEm8B.js.map → useWebhooks-rUXZtGhD.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-6UTLT992.js → validateWorkflow-UickdeaD.js} +2 -2
- package/dist/_chunks/{validateWorkflow-6UTLT992.js.map → validateWorkflow-UickdeaD.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-ENE3UKDG.mjs → validateWorkflow-g9vIjmAt.mjs} +2 -2
- package/dist/_chunks/{validateWorkflow-ENE3UKDG.mjs.map → validateWorkflow-g9vIjmAt.mjs.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/package.json +14 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditViewPage-66vkBGnE.mjs","sources":["../../admin/src/services/contentApi.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/LoadingView.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollabsableContentType.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/constants.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.tsx"],"sourcesContent":["import { adminApi } from './api';\n\nimport type { List as ListContentApiPermissions } from '../../../shared/contracts/content-api/permissions';\nimport type { List as ListContentApiRoutes } from '../../../shared/contracts/content-api/routes';\n\nconst contentApiService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getPermissions: builder.query<ListContentApiPermissions.Response['data'], void>({\n query: () => '/admin/content-api/permissions',\n transformResponse: (response: ListContentApiPermissions.Response) => response.data,\n }),\n getRoutes: builder.query<ListContentApiRoutes.Response['data'], void>({\n query: () => '/admin/content-api/routes',\n transformResponse: (response: ListContentApiRoutes.Response) => response.data,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetPermissionsQuery, useGetRoutesQuery } = contentApiService;\n\nexport { useGetPermissionsQuery, useGetRoutesQuery };\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { List as ListContentApiPermissions } from '../../../../../../../shared/contracts/content-api/permissions';\nimport { List as ListContentApiRoutes } from '../../../../../../../shared/contracts/content-api/routes';\n\nexport interface PseudoEvent {\n target: { value: string };\n}\n\ninterface ApiTokenPermissionsContextValue {\n value: {\n selectedAction: string | null;\n routes: ListContentApiRoutes.Response['data'];\n selectedActions: string[];\n data: {\n allActionsIds: string[];\n permissions: ListContentApiPermissions.Response['data'][];\n };\n onChange: ({ target: { value } }: PseudoEvent) => void;\n onChangeSelectAll: ({\n target: { value },\n }: {\n target: { value: { action: string; actionId: string }[] };\n }) => void;\n setSelectedAction: ({ target: { value } }: PseudoEvent) => void;\n };\n}\n\ninterface ApiTokenPermissionsContextProviderProps extends ApiTokenPermissionsContextValue {\n children: React.ReactNode | React.ReactNode[];\n}\n\nconst [ApiTokenPermissionsContextProvider, useApiTokenPermissionsContext] =\n createContext<ApiTokenPermissionsContextValue>('ApiTokenPermissionsContext');\n\nconst ApiTokenPermissionsProvider = ({\n children,\n ...rest\n}: ApiTokenPermissionsContextProviderProps) => {\n return (\n <ApiTokenPermissionsContextProvider {...rest}>{children}</ApiTokenPermissionsContextProvider>\n );\n};\n\nconst useApiTokenPermissions = () => useApiTokenPermissionsContext('useApiTokenPermissions');\n\nexport { ApiTokenPermissionsProvider, useApiTokenPermissions };\nexport type { ApiTokenPermissionsContextValue, ApiTokenPermissionsContextProviderProps };\n","import * as React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { LifeSpanInput } from '../../../../components/Tokens/LifeSpanInput';\nimport { TokenDescription } from '../../../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../../../components/Tokens/TokenTypeSelect';\n\nimport type { ApiToken } from '../../../../../../../../shared/contracts/api-token';\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n onDispatch: React.Dispatch<any>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\n\nexport const FormApiTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values = {},\n apiToken = {},\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem key=\"name\" col={6} xs={12}>\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </GridItem>\n\n <GridItem key=\"type\" col={6} xs={12}>\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n handleChangeSelectApiTokenType({ target: { value } });\n\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n onChange({ target: { name: 'type', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n","import { Button, ContentLayout, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFocusWhenNavigate,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface LoadingViewProps {\n apiTokenName?: string | null;\n}\n\nexport const LoadingView = ({ apiTokenName = null }: LoadingViewProps) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"API Tokens\" />\n <HeaderLayout\n primaryAction={\n <Button disabled startIcon={<Check />} type=\"button\" size=\"L\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={\n apiTokenName ||\n formatMessage({\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n","import React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport { useIntl } from 'react-intl';\nimport styled, { DefaultTheme } from 'styled-components';\n\ntype HttpVerb = 'POST' | 'GET' | 'PUT' | 'DELETE';\n\ntype MethodColor = {\n text: keyof DefaultTheme['colors'];\n border: keyof DefaultTheme['colors'];\n background: keyof DefaultTheme['colors'];\n};\n\nconst getMethodColor = (verb: HttpVerb): MethodColor => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nconst MethodBox = styled(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\ninterface BoundRouteProps {\n route: {\n handler: string;\n method: HttpVerb;\n path: string;\n };\n}\n\nexport const BoundRoute = ({\n route = {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n}: BoundRouteProps) => {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n \n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n};\n","import { Flex, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { BoundRoute } from './BoundRoute';\n\nexport const ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <GridItem\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {actionSection &&\n actionSection in routes &&\n routes[actionSection].map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </GridItem>\n );\n};\n","import * as React from 'react';\n\nimport {\n Accordion,\n AccordionContent,\n AccordionToggle,\n Box,\n Checkbox,\n Flex,\n Grid,\n GridItem,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport styled, { css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n svg {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled(Box)<{ isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n svg {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n onExpanded?: (orderNumber: number) => void;\n indexExpandendCollapsedContent: number | null;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n onExpanded = () => null,\n indexExpandendCollapsedContent = null,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const [expanded, setExpanded] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const handleExpandedAccordion = () => {\n setExpanded((s) => !s);\n onExpanded(orderNumber);\n };\n\n React.useEffect(() => {\n if (\n indexExpandendCollapsedContent !== null &&\n indexExpandendCollapsedContent !== orderNumber &&\n expanded\n ) {\n setExpanded(false);\n }\n }, [indexExpandendCollapsedContent, orderNumber, expanded]);\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion\n expanded={expanded}\n onToggle={handleExpandedAccordion}\n variant={orderNumber % 2 ? 'primary' : 'secondary'}\n >\n <AccordionToggle title={capitalize(label)} />\n <AccordionContent>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n value={allActionsSelected}\n indeterminate={!allActionsSelected && someActionsSelected}\n onValueChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <GridItem col={6} key={action.actionId}>\n <CheckboxWrapper\n isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n value={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onValueChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n {action.action}\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog />\n </button>\n </CheckboxWrapper>\n </GridItem>\n );\n })}\n </Grid>\n </Box>\n );\n })}\n </AccordionContent>\n </Accordion>\n );\n};\n","import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\nimport { CollapsableContentType } from './CollabsableContentType';\n\ninterface ContentTypesSectionProps {\n section: ContentApiPermission[] | null;\n}\n\nexport const ContentTypesSection = ({ section = null, ...props }: ContentTypesSectionProps) => {\n const [indexExpandedCollpsedContent, setIndexExpandedCollpsedContent] = React.useState<\n null | number\n >(null);\n const handleExpandedCollpsedContentIndex = (index: number) =>\n setIndexExpandedCollpsedContent(index);\n\n return (\n <Box padding={4} background=\"neutral0\">\n {section &&\n section.map((api, index) => (\n <CollapsableContentType\n key={api.apiId}\n label={api.label}\n controllers={api.controllers}\n orderNumber={index}\n indexExpandendCollapsedContent={indexExpandedCollpsedContent}\n onExpanded={handleExpandedCollpsedContentIndex}\n {...props}\n />\n ))}\n </Box>\n );\n};\n","import { Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { ActionBoundRoutes } from './ActionBoundRoutes';\nimport { ContentTypesSection } from './ContentTypesSection';\n\nexport const Permissions = ({ ...props }) => {\n const {\n value: { data },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n return (\n <Grid gap={0} shadow=\"filterShadow\" hasRadius background=\"neutral0\">\n <GridItem col={7} paddingTop={6} paddingBottom={6} paddingLeft={7} paddingRight={7}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.title',\n defaultMessage: 'Permissions',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.description',\n defaultMessage: 'Only actions bound by a route are listed below.',\n })}\n </Typography>\n </Flex>\n {data?.permissions && <ContentTypesSection section={data?.permissions} {...props} />}\n </GridItem>\n <ActionBoundRoutes />\n </Grid>\n );\n};\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nexport const schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required),\n type: yup\n .string()\n .oneOf(['read-only', 'full-access', 'custom'])\n .required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n});\n","import { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\ninterface Layout {\n allActionsIds: string[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { action: string; actionId: string }[] }[];\n }[];\n}\n\nexport const transformPermissionsData = (data: ContentApiPermission) => {\n const layout: Layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.entries(data).map(([apiId, permission]) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(permission.controllers)\n .map((controller) => ({\n controller,\n actions:\n controller in permission.controllers\n ? permission.controllers[controller]\n .map((action: ContentApiPermission['controllers']) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n })\n .flat()\n : [],\n }))\n .flat(),\n }));\n\n return layout;\n};\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\nimport pull from 'lodash/pull';\n\nimport { ContentApiPermission } from '../../../../../../../shared/contracts/content-api/permissions';\n\nimport { ApiTokenPermissionsContextValue } from './apiTokenPermissions';\nimport { transformPermissionsData } from './utils/transformPermissionsData';\n\ntype InitialState = Pick<\n ApiTokenPermissionsContextValue['value'],\n 'data' | 'routes' | 'selectedAction' | 'selectedActions'\n>;\n\ninterface ActionOnChange {\n type: 'ON_CHANGE';\n value: string;\n}\n\ninterface ActionSelectAllInPermission {\n type: 'SELECT_ALL_IN_PERMISSION';\n value: { action: string; actionId: string }[];\n}\n\ninterface ActionSelectAllActions {\n type: 'SELECT_ALL_ACTIONS';\n}\n\ninterface ActionOnChangeReadOnly {\n type: 'ON_CHANGE_READ_ONLY';\n}\n\ninterface ActionUpdatePermissionsLayout {\n type: 'UPDATE_PERMISSIONS_LAYOUT';\n value: ContentApiPermission;\n}\n\ninterface ActionUpdateRoutes {\n type: 'UPDATE_ROUTES';\n value: ApiTokenPermissionsContextValue['value']['routes'] | undefined;\n}\n\ninterface ActionUpdatePermissions {\n type: 'UPDATE_PERMISSIONS';\n value: any[];\n}\n\ninterface ActionSetSelectedAction {\n type: 'SET_SELECTED_ACTION';\n value: string;\n}\n\ntype Action =\n | ActionOnChange\n | ActionSelectAllInPermission\n | ActionSelectAllActions\n | ActionOnChangeReadOnly\n | ActionUpdatePermissionsLayout\n | ActionUpdateRoutes\n | ActionUpdatePermissions\n | ActionSetSelectedAction;\n\nexport const initialState: InitialState = {\n data: {\n allActionsIds: [],\n permissions: [],\n },\n routes: {},\n selectedAction: '',\n selectedActions: [],\n};\n\nexport const reducer = (state: InitialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE': {\n if (draftState.selectedActions.includes(action.value)) {\n pull(draftState.selectedActions, action.value);\n } else {\n draftState.selectedActions.push(action.value);\n }\n break;\n }\n case 'SELECT_ALL_IN_PERMISSION': {\n const areAllSelected = action.value.every((item) =>\n draftState.selectedActions.includes(item.actionId)\n );\n\n if (areAllSelected) {\n action.value.forEach((item) => {\n pull(draftState.selectedActions, item.actionId);\n });\n } else {\n action.value.forEach((item) => {\n draftState.selectedActions.push(item.actionId);\n });\n }\n break;\n }\n\n case 'SELECT_ALL_ACTIONS': {\n draftState.selectedActions = [...draftState.data.allActionsIds];\n\n break;\n }\n case 'ON_CHANGE_READ_ONLY': {\n const onlyReadOnlyActions = draftState.data.allActionsIds.filter(\n (actionId) => actionId.includes('find') || actionId.includes('findOne')\n );\n draftState.selectedActions = [...onlyReadOnlyActions];\n break;\n }\n case 'UPDATE_PERMISSIONS_LAYOUT': {\n draftState.data = transformPermissionsData(action.value);\n break;\n }\n case 'UPDATE_ROUTES': {\n draftState.routes = { ...action.value };\n break;\n }\n case 'UPDATE_PERMISSIONS': {\n draftState.selectedActions = [...action.value];\n break;\n }\n case 'SET_SELECTED_ACTION': {\n draftState.selectedAction = action.value;\n break;\n }\n default:\n return draftState;\n }\n });\n","import * as React from 'react';\n\nimport { ContentLayout, Flex, Main } from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useTypedSelector } from '../../../../../core/store/hooks';\nimport {\n useCreateAPITokenMutation,\n useGetAPITokenQuery,\n useUpdateAPITokenMutation,\n} from '../../../../../services/apiTokens';\nimport { useGetPermissionsQuery, useGetRoutesQuery } from '../../../../../services/contentApi';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { API_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport { FormHead } from '../../../components/Tokens/FormHead';\nimport { TokenBox } from '../../../components/Tokens/TokenBox';\n\nimport {\n ApiTokenPermissionsContextValue,\n ApiTokenPermissionsProvider,\n} from './apiTokenPermissions';\nimport { FormApiTokenContainer } from './components/FormApiTokenContainer';\nimport { LoadingView } from './components/LoadingView';\nimport { Permissions } from './components/Permissions';\nimport { schema } from './constants';\nimport { initialState, reducer } from './reducer';\n\nimport type { Get, ApiToken } from '../../../../../../../shared/contracts/api-token';\n\n/**\n * TODO: this could definitely be refactored to avoid using redux and instead just use the\n * server response as the source of the truth for the data.\n */\nexport const EditView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { state: locationState } = useLocation<{ apiToken: ApiToken }>();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [apiToken, setApiToken] = React.useState<ApiToken | null>(\n locationState?.apiToken?.accessKey\n ? {\n ...locationState.apiToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const { setCurrentStep } = useGuidedTour();\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings?.['api-tokens']);\n const [state, dispatch] = React.useReducer(reducer, initialState);\n const match = useRouteMatch<{ id: string }>('/settings/api-tokens/:id');\n const id = match?.params?.id;\n const isCreating = id === 'create';\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidtionErrors,\n } = useAPIErrorHandler();\n\n const history = useHistory();\n\n const contentAPIPermissionsQuery = useGetPermissionsQuery();\n const contentAPIRoutesQuery = useGetRoutesQuery();\n\n /**\n * Separate effects otherwise we could end\n * up duplicating the same notification.\n */\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(contentAPIPermissionsQuery.error),\n });\n }\n }, [contentAPIPermissionsQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(contentAPIRoutesQuery.error),\n });\n }\n }, [contentAPIRoutesQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.data) {\n dispatch({\n type: 'UPDATE_PERMISSIONS_LAYOUT',\n value: contentAPIPermissionsQuery.data,\n });\n }\n }, [contentAPIPermissionsQuery.data]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.data) {\n dispatch({\n type: 'UPDATE_ROUTES',\n value: contentAPIRoutesQuery.data,\n });\n }\n }, [contentAPIRoutesQuery.data]);\n\n React.useEffect(() => {\n if (apiToken) {\n if (apiToken.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (apiToken.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (apiToken.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: apiToken?.permissions,\n });\n }\n }\n }, [apiToken]);\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error, isLoading } = useGetAPITokenQuery(id!, {\n skip: !id || isCreating || !!apiToken,\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (data) {\n setApiToken(data);\n\n if (data.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (data.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (data.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: data?.permissions,\n });\n }\n }\n }, [data]);\n\n const [createToken] = useCreateAPITokenMutation();\n const [updateToken] = useUpdateAPITokenMutation();\n\n interface FormValues extends Pick<Get.Response['data'], 'name' | 'description'> {\n lifespan: Get.Response['data']['lifespan'] | undefined;\n type: Get.Response['data']['type'] | undefined;\n }\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: API_TOKEN_TYPE,\n });\n\n // @ts-expect-error context assertation\n lockApp();\n\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // lifespan must be \"null\" for unlimited (0 would mean instantly expired and isn't accepted)\n lifespan: body?.lifespan || null,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokencreated',\n defaultMessage: 'API Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n\n history.replace(`/settings/api-tokens/${res.data.id}`, { apiToken: res.data });\n setCurrentStep('apiTokens.success');\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n type: body.type,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokenedited',\n defaultMessage: 'API Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n }\n } catch {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n },\n });\n } finally {\n // @ts-expect-error context assertation\n unlockApp();\n }\n };\n\n const [hasChangedPermissions, setHasChangedPermissions] = React.useState(false);\n\n const handleChangeCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChange']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'ON_CHANGE',\n value,\n });\n };\n\n const handleChangeSelectAllCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChangeSelectAll']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'SELECT_ALL_IN_PERMISSION',\n value,\n });\n };\n\n const setSelectedAction = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['setSelectedAction']>[0]) => {\n dispatch({\n type: 'SET_SELECTED_ACTION',\n value,\n });\n };\n\n const providerValue = {\n ...state,\n onChange: handleChangeCheckbox,\n onChangeSelectAll: handleChangeSelectAllCheckbox,\n setSelectedAction,\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n\n if (isLoading) {\n return <LoadingView apiTokenName={apiToken?.name} />;\n }\n\n return (\n <ApiTokenPermissionsProvider value={providerValue}>\n <Main>\n <SettingsPageTitle name=\"API Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: apiToken?.name || '',\n description: apiToken?.description || '',\n type: apiToken?.type,\n lifespan: apiToken?.lifespan,\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values, setFieldValue }) => {\n if (hasChangedPermissions && values?.type !== 'custom') {\n setFieldValue('type', 'custom');\n }\n\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/api-tokens\"\n title={{\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n }}\n token={apiToken}\n setToken={setApiToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/api-tokens/\"\n />\n\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(apiToken?.name) && (\n <TokenBox token={apiToken?.accessKey} tokenType={API_TOKEN_TYPE} />\n )}\n <FormApiTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n apiToken={apiToken}\n onDispatch={dispatch}\n setHasChangedPermissions={setHasChangedPermissions}\n />\n <Permissions\n disabled={\n !canEditInputs ||\n values?.type === 'read-only' ||\n values?.type === 'full-access'\n }\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n </ApiTokenPermissionsProvider>\n );\n};\n\nexport const ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens'].read\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n"],"names":["state"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditViewPage-K3F6kESh.mjs","sources":["../../admin/src/services/contentApi.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/LoadingView.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollabsableContentType.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/constants.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.tsx"],"sourcesContent":["import { adminApi } from './api';\n\nimport type { List as ListContentApiPermissions } from '../../../shared/contracts/content-api/permissions';\nimport type { List as ListContentApiRoutes } from '../../../shared/contracts/content-api/routes';\n\nconst contentApiService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getPermissions: builder.query<ListContentApiPermissions.Response['data'], void>({\n query: () => '/admin/content-api/permissions',\n transformResponse: (response: ListContentApiPermissions.Response) => response.data,\n }),\n getRoutes: builder.query<ListContentApiRoutes.Response['data'], void>({\n query: () => '/admin/content-api/routes',\n transformResponse: (response: ListContentApiRoutes.Response) => response.data,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetPermissionsQuery, useGetRoutesQuery } = contentApiService;\n\nexport { useGetPermissionsQuery, useGetRoutesQuery };\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { List as ListContentApiPermissions } from '../../../../../../../shared/contracts/content-api/permissions';\nimport { List as ListContentApiRoutes } from '../../../../../../../shared/contracts/content-api/routes';\n\nexport interface PseudoEvent {\n target: { value: string };\n}\n\ninterface ApiTokenPermissionsContextValue {\n value: {\n selectedAction: string | null;\n routes: ListContentApiRoutes.Response['data'];\n selectedActions: string[];\n data: {\n allActionsIds: string[];\n permissions: ListContentApiPermissions.Response['data'][];\n };\n onChange: ({ target: { value } }: PseudoEvent) => void;\n onChangeSelectAll: ({\n target: { value },\n }: {\n target: { value: { action: string; actionId: string }[] };\n }) => void;\n setSelectedAction: ({ target: { value } }: PseudoEvent) => void;\n };\n}\n\ninterface ApiTokenPermissionsContextProviderProps extends ApiTokenPermissionsContextValue {\n children: React.ReactNode | React.ReactNode[];\n}\n\nconst [ApiTokenPermissionsContextProvider, useApiTokenPermissionsContext] =\n createContext<ApiTokenPermissionsContextValue>('ApiTokenPermissionsContext');\n\nconst ApiTokenPermissionsProvider = ({\n children,\n ...rest\n}: ApiTokenPermissionsContextProviderProps) => {\n return (\n <ApiTokenPermissionsContextProvider {...rest}>{children}</ApiTokenPermissionsContextProvider>\n );\n};\n\nconst useApiTokenPermissions = () => useApiTokenPermissionsContext('useApiTokenPermissions');\n\nexport { ApiTokenPermissionsProvider, useApiTokenPermissions };\nexport type { ApiTokenPermissionsContextValue, ApiTokenPermissionsContextProviderProps };\n","import * as React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { LifeSpanInput } from '../../../../components/Tokens/LifeSpanInput';\nimport { TokenDescription } from '../../../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../../../components/Tokens/TokenTypeSelect';\n\nimport type { ApiToken } from '../../../../../../../../shared/contracts/api-token';\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n onDispatch: React.Dispatch<any>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\n\nexport const FormApiTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values = {},\n apiToken = {},\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem key=\"name\" col={6} xs={12}>\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </GridItem>\n\n <GridItem key=\"type\" col={6} xs={12}>\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n handleChangeSelectApiTokenType({ target: { value } });\n\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n onChange({ target: { name: 'type', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n","import { Button, ContentLayout, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFocusWhenNavigate,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface LoadingViewProps {\n apiTokenName?: string | null;\n}\n\nexport const LoadingView = ({ apiTokenName = null }: LoadingViewProps) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"API Tokens\" />\n <HeaderLayout\n primaryAction={\n <Button disabled startIcon={<Check />} type=\"button\" size=\"L\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={\n apiTokenName ||\n formatMessage({\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n","import React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport { useIntl } from 'react-intl';\nimport styled, { DefaultTheme } from 'styled-components';\n\ntype HttpVerb = 'POST' | 'GET' | 'PUT' | 'DELETE';\n\ntype MethodColor = {\n text: keyof DefaultTheme['colors'];\n border: keyof DefaultTheme['colors'];\n background: keyof DefaultTheme['colors'];\n};\n\nconst getMethodColor = (verb: HttpVerb): MethodColor => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nconst MethodBox = styled(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\ninterface BoundRouteProps {\n route: {\n handler: string;\n method: HttpVerb;\n path: string;\n };\n}\n\nexport const BoundRoute = ({\n route = {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n}: BoundRouteProps) => {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n \n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n};\n","import { Flex, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { BoundRoute } from './BoundRoute';\n\nexport const ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <GridItem\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {actionSection &&\n actionSection in routes &&\n routes[actionSection].map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </GridItem>\n );\n};\n","import * as React from 'react';\n\nimport {\n Accordion,\n AccordionContent,\n AccordionToggle,\n Box,\n Checkbox,\n Flex,\n Grid,\n GridItem,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport styled, { css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n svg {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled(Box)<{ isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n svg {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n onExpanded?: (orderNumber: number) => void;\n indexExpandendCollapsedContent: number | null;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n onExpanded = () => null,\n indexExpandendCollapsedContent = null,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const [expanded, setExpanded] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const handleExpandedAccordion = () => {\n setExpanded((s) => !s);\n onExpanded(orderNumber);\n };\n\n React.useEffect(() => {\n if (\n indexExpandendCollapsedContent !== null &&\n indexExpandendCollapsedContent !== orderNumber &&\n expanded\n ) {\n setExpanded(false);\n }\n }, [indexExpandendCollapsedContent, orderNumber, expanded]);\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion\n expanded={expanded}\n onToggle={handleExpandedAccordion}\n variant={orderNumber % 2 ? 'primary' : 'secondary'}\n >\n <AccordionToggle title={capitalize(label)} />\n <AccordionContent>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n value={allActionsSelected}\n indeterminate={!allActionsSelected && someActionsSelected}\n onValueChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <GridItem col={6} key={action.actionId}>\n <CheckboxWrapper\n isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n value={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onValueChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n {action.action}\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog />\n </button>\n </CheckboxWrapper>\n </GridItem>\n );\n })}\n </Grid>\n </Box>\n );\n })}\n </AccordionContent>\n </Accordion>\n );\n};\n","import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\nimport { CollapsableContentType } from './CollabsableContentType';\n\ninterface ContentTypesSectionProps {\n section: ContentApiPermission[] | null;\n}\n\nexport const ContentTypesSection = ({ section = null, ...props }: ContentTypesSectionProps) => {\n const [indexExpandedCollpsedContent, setIndexExpandedCollpsedContent] = React.useState<\n null | number\n >(null);\n const handleExpandedCollpsedContentIndex = (index: number) =>\n setIndexExpandedCollpsedContent(index);\n\n return (\n <Box padding={4} background=\"neutral0\">\n {section &&\n section.map((api, index) => (\n <CollapsableContentType\n key={api.apiId}\n label={api.label}\n controllers={api.controllers}\n orderNumber={index}\n indexExpandendCollapsedContent={indexExpandedCollpsedContent}\n onExpanded={handleExpandedCollpsedContentIndex}\n {...props}\n />\n ))}\n </Box>\n );\n};\n","import { Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { ActionBoundRoutes } from './ActionBoundRoutes';\nimport { ContentTypesSection } from './ContentTypesSection';\n\nexport const Permissions = ({ ...props }) => {\n const {\n value: { data },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n return (\n <Grid gap={0} shadow=\"filterShadow\" hasRadius background=\"neutral0\">\n <GridItem col={7} paddingTop={6} paddingBottom={6} paddingLeft={7} paddingRight={7}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.title',\n defaultMessage: 'Permissions',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.description',\n defaultMessage: 'Only actions bound by a route are listed below.',\n })}\n </Typography>\n </Flex>\n {data?.permissions && <ContentTypesSection section={data?.permissions} {...props} />}\n </GridItem>\n <ActionBoundRoutes />\n </Grid>\n );\n};\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nexport const schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required),\n type: yup\n .string()\n .oneOf(['read-only', 'full-access', 'custom'])\n .required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n});\n","import { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\ninterface Layout {\n allActionsIds: string[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { action: string; actionId: string }[] }[];\n }[];\n}\n\nexport const transformPermissionsData = (data: ContentApiPermission) => {\n const layout: Layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.entries(data).map(([apiId, permission]) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(permission.controllers)\n .map((controller) => ({\n controller,\n actions:\n controller in permission.controllers\n ? permission.controllers[controller]\n .map((action: ContentApiPermission['controllers']) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n })\n .flat()\n : [],\n }))\n .flat(),\n }));\n\n return layout;\n};\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\nimport pull from 'lodash/pull';\n\nimport { ContentApiPermission } from '../../../../../../../shared/contracts/content-api/permissions';\n\nimport { ApiTokenPermissionsContextValue } from './apiTokenPermissions';\nimport { transformPermissionsData } from './utils/transformPermissionsData';\n\ntype InitialState = Pick<\n ApiTokenPermissionsContextValue['value'],\n 'data' | 'routes' | 'selectedAction' | 'selectedActions'\n>;\n\ninterface ActionOnChange {\n type: 'ON_CHANGE';\n value: string;\n}\n\ninterface ActionSelectAllInPermission {\n type: 'SELECT_ALL_IN_PERMISSION';\n value: { action: string; actionId: string }[];\n}\n\ninterface ActionSelectAllActions {\n type: 'SELECT_ALL_ACTIONS';\n}\n\ninterface ActionOnChangeReadOnly {\n type: 'ON_CHANGE_READ_ONLY';\n}\n\ninterface ActionUpdatePermissionsLayout {\n type: 'UPDATE_PERMISSIONS_LAYOUT';\n value: ContentApiPermission;\n}\n\ninterface ActionUpdateRoutes {\n type: 'UPDATE_ROUTES';\n value: ApiTokenPermissionsContextValue['value']['routes'] | undefined;\n}\n\ninterface ActionUpdatePermissions {\n type: 'UPDATE_PERMISSIONS';\n value: any[];\n}\n\ninterface ActionSetSelectedAction {\n type: 'SET_SELECTED_ACTION';\n value: string;\n}\n\ntype Action =\n | ActionOnChange\n | ActionSelectAllInPermission\n | ActionSelectAllActions\n | ActionOnChangeReadOnly\n | ActionUpdatePermissionsLayout\n | ActionUpdateRoutes\n | ActionUpdatePermissions\n | ActionSetSelectedAction;\n\nexport const initialState: InitialState = {\n data: {\n allActionsIds: [],\n permissions: [],\n },\n routes: {},\n selectedAction: '',\n selectedActions: [],\n};\n\nexport const reducer = (state: InitialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE': {\n if (draftState.selectedActions.includes(action.value)) {\n pull(draftState.selectedActions, action.value);\n } else {\n draftState.selectedActions.push(action.value);\n }\n break;\n }\n case 'SELECT_ALL_IN_PERMISSION': {\n const areAllSelected = action.value.every((item) =>\n draftState.selectedActions.includes(item.actionId)\n );\n\n if (areAllSelected) {\n action.value.forEach((item) => {\n pull(draftState.selectedActions, item.actionId);\n });\n } else {\n action.value.forEach((item) => {\n draftState.selectedActions.push(item.actionId);\n });\n }\n break;\n }\n\n case 'SELECT_ALL_ACTIONS': {\n draftState.selectedActions = [...draftState.data.allActionsIds];\n\n break;\n }\n case 'ON_CHANGE_READ_ONLY': {\n const onlyReadOnlyActions = draftState.data.allActionsIds.filter(\n (actionId) => actionId.includes('find') || actionId.includes('findOne')\n );\n draftState.selectedActions = [...onlyReadOnlyActions];\n break;\n }\n case 'UPDATE_PERMISSIONS_LAYOUT': {\n draftState.data = transformPermissionsData(action.value);\n break;\n }\n case 'UPDATE_ROUTES': {\n draftState.routes = { ...action.value };\n break;\n }\n case 'UPDATE_PERMISSIONS': {\n draftState.selectedActions = [...action.value];\n break;\n }\n case 'SET_SELECTED_ACTION': {\n draftState.selectedAction = action.value;\n break;\n }\n default:\n return draftState;\n }\n });\n","import * as React from 'react';\n\nimport { ContentLayout, Flex, Main } from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useTypedSelector } from '../../../../../core/store/hooks';\nimport {\n useCreateAPITokenMutation,\n useGetAPITokenQuery,\n useUpdateAPITokenMutation,\n} from '../../../../../services/apiTokens';\nimport { useGetPermissionsQuery, useGetRoutesQuery } from '../../../../../services/contentApi';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { API_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport { FormHead } from '../../../components/Tokens/FormHead';\nimport { TokenBox } from '../../../components/Tokens/TokenBox';\n\nimport {\n ApiTokenPermissionsContextValue,\n ApiTokenPermissionsProvider,\n} from './apiTokenPermissions';\nimport { FormApiTokenContainer } from './components/FormApiTokenContainer';\nimport { LoadingView } from './components/LoadingView';\nimport { Permissions } from './components/Permissions';\nimport { schema } from './constants';\nimport { initialState, reducer } from './reducer';\n\nimport type { Get, ApiToken } from '../../../../../../../shared/contracts/api-token';\n\n/**\n * TODO: this could definitely be refactored to avoid using redux and instead just use the\n * server response as the source of the truth for the data.\n */\nexport const EditView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { state: locationState } = useLocation<{ apiToken: ApiToken }>();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [apiToken, setApiToken] = React.useState<ApiToken | null>(\n locationState?.apiToken?.accessKey\n ? {\n ...locationState.apiToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const { setCurrentStep } = useGuidedTour();\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings?.['api-tokens']);\n const [state, dispatch] = React.useReducer(reducer, initialState);\n const match = useRouteMatch<{ id: string }>('/settings/api-tokens/:id');\n const id = match?.params?.id;\n const isCreating = id === 'create';\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidtionErrors,\n } = useAPIErrorHandler();\n\n const history = useHistory();\n\n const contentAPIPermissionsQuery = useGetPermissionsQuery();\n const contentAPIRoutesQuery = useGetRoutesQuery();\n\n /**\n * Separate effects otherwise we could end\n * up duplicating the same notification.\n */\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(contentAPIPermissionsQuery.error),\n });\n }\n }, [contentAPIPermissionsQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(contentAPIRoutesQuery.error),\n });\n }\n }, [contentAPIRoutesQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.data) {\n dispatch({\n type: 'UPDATE_PERMISSIONS_LAYOUT',\n value: contentAPIPermissionsQuery.data,\n });\n }\n }, [contentAPIPermissionsQuery.data]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.data) {\n dispatch({\n type: 'UPDATE_ROUTES',\n value: contentAPIRoutesQuery.data,\n });\n }\n }, [contentAPIRoutesQuery.data]);\n\n React.useEffect(() => {\n if (apiToken) {\n if (apiToken.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (apiToken.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (apiToken.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: apiToken?.permissions,\n });\n }\n }\n }, [apiToken]);\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error, isLoading } = useGetAPITokenQuery(id!, {\n skip: !id || isCreating || !!apiToken,\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (data) {\n setApiToken(data);\n\n if (data.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (data.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (data.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: data?.permissions,\n });\n }\n }\n }, [data]);\n\n const [createToken] = useCreateAPITokenMutation();\n const [updateToken] = useUpdateAPITokenMutation();\n\n interface FormValues extends Pick<Get.Response['data'], 'name' | 'description'> {\n lifespan: Get.Response['data']['lifespan'] | undefined;\n type: Get.Response['data']['type'] | undefined;\n }\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: API_TOKEN_TYPE,\n });\n\n // @ts-expect-error context assertation\n lockApp();\n\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // lifespan must be \"null\" for unlimited (0 would mean instantly expired and isn't accepted)\n lifespan: body?.lifespan || null,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokencreated',\n defaultMessage: 'API Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n\n history.replace(`/settings/api-tokens/${res.data.id}`, { apiToken: res.data });\n setCurrentStep('apiTokens.success');\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n type: body.type,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokenedited',\n defaultMessage: 'API Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n }\n } catch {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n },\n });\n } finally {\n // @ts-expect-error context assertation\n unlockApp();\n }\n };\n\n const [hasChangedPermissions, setHasChangedPermissions] = React.useState(false);\n\n const handleChangeCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChange']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'ON_CHANGE',\n value,\n });\n };\n\n const handleChangeSelectAllCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChangeSelectAll']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'SELECT_ALL_IN_PERMISSION',\n value,\n });\n };\n\n const setSelectedAction = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['setSelectedAction']>[0]) => {\n dispatch({\n type: 'SET_SELECTED_ACTION',\n value,\n });\n };\n\n const providerValue = {\n ...state,\n onChange: handleChangeCheckbox,\n onChangeSelectAll: handleChangeSelectAllCheckbox,\n setSelectedAction,\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n\n if (isLoading) {\n return <LoadingView apiTokenName={apiToken?.name} />;\n }\n\n return (\n <ApiTokenPermissionsProvider value={providerValue}>\n <Main>\n <SettingsPageTitle name=\"API Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: apiToken?.name || '',\n description: apiToken?.description || '',\n type: apiToken?.type,\n lifespan: apiToken?.lifespan,\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values, setFieldValue }) => {\n if (hasChangedPermissions && values?.type !== 'custom') {\n setFieldValue('type', 'custom');\n }\n\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/api-tokens\"\n title={{\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n }}\n token={apiToken}\n setToken={setApiToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/api-tokens/\"\n />\n\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(apiToken?.name) && (\n <TokenBox token={apiToken?.accessKey} tokenType={API_TOKEN_TYPE} />\n )}\n <FormApiTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n apiToken={apiToken}\n onDispatch={dispatch}\n setHasChangedPermissions={setHasChangedPermissions}\n />\n <Permissions\n disabled={\n !canEditInputs ||\n values?.type === 'read-only' ||\n values?.type === 'full-access'\n }\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n </ApiTokenPermissionsProvider>\n );\n};\n\nexport const ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens'].read\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n"],"names":["state"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { a as Events } from "./EditPage-
|
|
2
|
+
import { a as Events } from "./EditPage-j7PAa8iL.mjs";
|
|
3
3
|
import "react";
|
|
4
4
|
import "@strapi/design-system";
|
|
5
5
|
import "@strapi/helper-plugin";
|
|
6
6
|
import "react-router-dom";
|
|
7
|
-
import "./index-
|
|
7
|
+
import "./index-5hP8C9h_.mjs";
|
|
8
8
|
import "react-dom/client";
|
|
9
9
|
import "invariant";
|
|
10
10
|
import "lodash/isFunction";
|
|
@@ -70,11 +70,11 @@ import "lodash/uniqBy";
|
|
|
70
70
|
import "lodash/unset";
|
|
71
71
|
import "lodash/isArray";
|
|
72
72
|
import "date-fns/parseISO";
|
|
73
|
-
import "./useContentTypes-
|
|
74
|
-
import "./AuthenticatedApp-
|
|
73
|
+
import "./useContentTypes-3V7R5Vlq.mjs";
|
|
74
|
+
import "./AuthenticatedApp-Bfl9hK_h.mjs";
|
|
75
75
|
import "semver/functions/lt";
|
|
76
76
|
import "semver/functions/valid";
|
|
77
|
-
import "./useWebhooks-
|
|
77
|
+
import "./useWebhooks-NEbJu8zy.mjs";
|
|
78
78
|
const eeTables = {
|
|
79
79
|
"review-workflows": {
|
|
80
80
|
"review-workflows": ["review-workflows.updateEntryStage"]
|
|
@@ -104,4 +104,4 @@ const EventsTableEE = () => {
|
|
|
104
104
|
export {
|
|
105
105
|
EventsTableEE
|
|
106
106
|
};
|
|
107
|
-
//# sourceMappingURL=EventsTable-
|
|
107
|
+
//# sourceMappingURL=EventsTable-KDjZ2cVf.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventsTable-
|
|
1
|
+
{"version":3,"file":"EventsTable-KDjZ2cVf.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable.tsx"],"sourcesContent":["import { Events } from '../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/Events';\n\nconst eeTables = {\n 'review-workflows': {\n 'review-workflows': ['review-workflows.updateEntryStage'],\n },\n releases: {\n releases: ['releases.publish'],\n },\n};\n\nconst getHeaders = (table: keyof typeof eeTables) => {\n switch (table) {\n case 'review-workflows':\n return () => [{ id: 'review-workflows.updateEntryStage', defaultMessage: 'Stage Change' }];\n case 'releases':\n return () => [{ id: 'releases.publish', defaultMessage: 'Publish' }];\n }\n};\n\nconst EventsTableEE = () => {\n return (\n <Events.Root>\n <Events.Headers />\n <Events.Body />\n {(Object.keys(eeTables) as Array<keyof typeof eeTables>).map((table) => (\n <>\n <Events.Headers getHeaders={getHeaders(table)} />\n <Events.Body providedEvents={eeTables[table]} />\n </>\n ))}\n </Events.Root>\n );\n};\n\nexport { EventsTableEE };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAAM,WAAW;AAAA,EACf,oBAAoB;AAAA,IAClB,oBAAoB,CAAC,mCAAmC;AAAA,EAC1D;AAAA,EACA,UAAU;AAAA,IACR,UAAU,CAAC,kBAAkB;AAAA,EAC/B;AACF;AAEA,MAAM,aAAa,CAAC,UAAiC;AACnD,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO,MAAM,CAAC,EAAE,IAAI,qCAAqC,gBAAgB,gBAAgB;AAAA,IAC3F,KAAK;AACH,aAAO,MAAM,CAAC,EAAE,IAAI,oBAAoB,gBAAgB,WAAW;AAAA,EACvE;AACF;AAEA,MAAM,gBAAgB,MAAM;AAExB,SAAA,qBAAC,OAAO,MAAP,EACC,UAAA;AAAA,IAAC,oBAAA,OAAO,SAAP,EAAe;AAAA,IAChB,oBAAC,OAAO,MAAP,EAAY;AAAA,IACX,OAAO,KAAK,QAAQ,EAAmC,IAAI,CAAC,UAE1D,qBAAA,UAAA,EAAA,UAAA;AAAA,MAAA,oBAAC,OAAO,SAAP,EAAe,YAAY,WAAW,KAAK,GAAG;AAAA,0BAC9C,OAAO,MAAP,EAAY,gBAAgB,SAAS,KAAK,GAAG;AAAA,IAAA,EAAA,CAChD,CACD;AAAA,EACH,EAAA,CAAA;AAEJ;"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
-
const EditPage = require("./EditPage-
|
|
4
|
+
const EditPage = require("./EditPage-IqschOA1.js");
|
|
5
5
|
require("react");
|
|
6
6
|
require("@strapi/design-system");
|
|
7
7
|
require("@strapi/helper-plugin");
|
|
8
8
|
require("react-router-dom");
|
|
9
|
-
require("./index-
|
|
9
|
+
require("./index-hdB0LcQU.js");
|
|
10
10
|
require("react-dom/client");
|
|
11
11
|
require("invariant");
|
|
12
12
|
require("lodash/isFunction");
|
|
@@ -72,11 +72,11 @@ require("lodash/uniqBy");
|
|
|
72
72
|
require("lodash/unset");
|
|
73
73
|
require("lodash/isArray");
|
|
74
74
|
require("date-fns/parseISO");
|
|
75
|
-
require("./useContentTypes-
|
|
76
|
-
require("./AuthenticatedApp-
|
|
75
|
+
require("./useContentTypes-lP8pXI_b.js");
|
|
76
|
+
require("./AuthenticatedApp-BhDorlD8.js");
|
|
77
77
|
require("semver/functions/lt");
|
|
78
78
|
require("semver/functions/valid");
|
|
79
|
-
require("./useWebhooks-
|
|
79
|
+
require("./useWebhooks-rUXZtGhD.js");
|
|
80
80
|
const eeTables = {
|
|
81
81
|
"review-workflows": {
|
|
82
82
|
"review-workflows": ["review-workflows.updateEntryStage"]
|
|
@@ -104,4 +104,4 @@ const EventsTableEE = () => {
|
|
|
104
104
|
] });
|
|
105
105
|
};
|
|
106
106
|
exports.EventsTableEE = EventsTableEE;
|
|
107
|
-
//# sourceMappingURL=EventsTable-
|
|
107
|
+
//# sourceMappingURL=EventsTable-LXrDlBfr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventsTable-
|
|
1
|
+
{"version":3,"file":"EventsTable-LXrDlBfr.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable.tsx"],"sourcesContent":["import { Events } from '../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/Events';\n\nconst eeTables = {\n 'review-workflows': {\n 'review-workflows': ['review-workflows.updateEntryStage'],\n },\n releases: {\n releases: ['releases.publish'],\n },\n};\n\nconst getHeaders = (table: keyof typeof eeTables) => {\n switch (table) {\n case 'review-workflows':\n return () => [{ id: 'review-workflows.updateEntryStage', defaultMessage: 'Stage Change' }];\n case 'releases':\n return () => [{ id: 'releases.publish', defaultMessage: 'Publish' }];\n }\n};\n\nconst EventsTableEE = () => {\n return (\n <Events.Root>\n <Events.Headers />\n <Events.Body />\n {(Object.keys(eeTables) as Array<keyof typeof eeTables>).map((table) => (\n <>\n <Events.Headers getHeaders={getHeaders(table)} />\n <Events.Body providedEvents={eeTables[table]} />\n </>\n ))}\n </Events.Root>\n );\n};\n\nexport { EventsTableEE };\n"],"names":["jsxs","Events","jsx","Fragment"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAAM,WAAW;AAAA,EACf,oBAAoB;AAAA,IAClB,oBAAoB,CAAC,mCAAmC;AAAA,EAC1D;AAAA,EACA,UAAU;AAAA,IACR,UAAU,CAAC,kBAAkB;AAAA,EAC/B;AACF;AAEA,MAAM,aAAa,CAAC,UAAiC;AACnD,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO,MAAM,CAAC,EAAE,IAAI,qCAAqC,gBAAgB,gBAAgB;AAAA,IAC3F,KAAK;AACH,aAAO,MAAM,CAAC,EAAE,IAAI,oBAAoB,gBAAgB,WAAW;AAAA,EACvE;AACF;AAEA,MAAM,gBAAgB,MAAM;AAExB,SAAAA,gCAACC,SAAAA,OAAO,MAAP,EACC,UAAA;AAAA,IAACC,+BAAAD,SAAAA,OAAO,SAAP,EAAe;AAAA,IAChBC,+BAACD,SAAAA,OAAO,MAAP,EAAY;AAAA,IACX,OAAO,KAAK,QAAQ,EAAmC,IAAI,CAAC,UAE1DD,2BAAA,KAAAG,qBAAA,EAAA,UAAA;AAAA,MAAAD,2BAAA,IAACD,gBAAO,SAAP,EAAe,YAAY,WAAW,KAAK,GAAG;AAAA,qCAC9CA,SAAO,OAAA,MAAP,EAAY,gBAAgB,SAAS,KAAK,GAAG;AAAA,IAAA,EAAA,CAChD,CACD;AAAA,EACH,EAAA,CAAA;AAEJ;;"}
|
|
@@ -10,9 +10,9 @@ const reactHelmet = require("react-helmet");
|
|
|
10
10
|
const reactIntl = require("react-intl");
|
|
11
11
|
const reactRouterDom = require("react-router-dom");
|
|
12
12
|
const styled = require("styled-components");
|
|
13
|
-
const AuthenticatedApp = require("./AuthenticatedApp-
|
|
14
|
-
const useContentTypes = require("./useContentTypes-
|
|
15
|
-
const index = require("./index-
|
|
13
|
+
const AuthenticatedApp = require("./AuthenticatedApp-BhDorlD8.js");
|
|
14
|
+
const useContentTypes = require("./useContentTypes-lP8pXI_b.js");
|
|
15
|
+
const index = require("./index-hdB0LcQU.js");
|
|
16
16
|
require("semver/functions/lt");
|
|
17
17
|
require("semver/functions/valid");
|
|
18
18
|
require("immer");
|
|
@@ -588,7 +588,7 @@ const HomePage = () => {
|
|
|
588
588
|
const Page = index.useEnterprise(
|
|
589
589
|
HomePageCE,
|
|
590
590
|
// eslint-disable-next-line import/no-cycle
|
|
591
|
-
async () => (await Promise.resolve().then(() => require("./HomePage-
|
|
591
|
+
async () => (await Promise.resolve().then(() => require("./HomePage-Ze3G8iUH.js"))).HomePageEE
|
|
592
592
|
);
|
|
593
593
|
if (!Page) {
|
|
594
594
|
return null;
|
|
@@ -597,4 +597,4 @@ const HomePage = () => {
|
|
|
597
597
|
};
|
|
598
598
|
exports.HomePage = HomePage;
|
|
599
599
|
exports.HomePageCE = HomePageCE;
|
|
600
|
-
//# sourceMappingURL=HomePage-
|
|
600
|
+
//# sourceMappingURL=HomePage-FResDoxA.js.map
|