@strapi/admin 4.25.23 → 4.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{AdminSeatInfo-iASat0Hw.js → AdminSeatInfo-CcnrDPFr.js} +3 -3
- package/dist/_chunks/{AdminSeatInfo-iASat0Hw.js.map → AdminSeatInfo-CcnrDPFr.js.map} +1 -1
- package/dist/_chunks/{AdminSeatInfo-LXgNjwsq.mjs → AdminSeatInfo-gLztRe97.mjs} +3 -3
- package/dist/_chunks/{AdminSeatInfo-LXgNjwsq.mjs.map → AdminSeatInfo-gLztRe97.mjs.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-Bfl9hK_h.mjs → AuthenticatedApp-9hmvxLus.mjs} +20 -20
- package/dist/_chunks/{AuthenticatedApp-Bfl9hK_h.mjs.map → AuthenticatedApp-9hmvxLus.mjs.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-BhDorlD8.js → AuthenticatedApp-WZhpPnNK.js} +20 -20
- package/dist/_chunks/{AuthenticatedApp-BhDorlD8.js.map → AuthenticatedApp-WZhpPnNK.js.map} +1 -1
- package/dist/_chunks/{CreateActionEE-fa-xpnfx.js → CreateActionEE-jpIeNaRY.js} +2 -2
- package/dist/_chunks/{CreateActionEE-fa-xpnfx.js.map → CreateActionEE-jpIeNaRY.js.map} +1 -1
- package/dist/_chunks/{CreateActionEE-H-fQGqjA.mjs → CreateActionEE-yjoda5Hb.mjs} +2 -2
- package/dist/_chunks/{CreateActionEE-H-fQGqjA.mjs.map → CreateActionEE-yjoda5Hb.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-xF4vGlFt.js → CreatePage-0Mt-xoxO.js} +3 -3
- package/dist/_chunks/{CreatePage-xF4vGlFt.js.map → CreatePage-0Mt-xoxO.js.map} +1 -1
- package/dist/_chunks/{CreatePage--54BSoB7.js → CreatePage-A08bjELp.js} +8 -8
- package/dist/_chunks/{CreatePage--54BSoB7.js.map → CreatePage-A08bjELp.js.map} +1 -1
- package/dist/_chunks/{CreatePage-sZwN4-t1.mjs → CreatePage-_3GFnssV.mjs} +3 -3
- package/dist/_chunks/{CreatePage-sZwN4-t1.mjs.map → CreatePage-_3GFnssV.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-fxCGcrNa.js → CreatePage-dw59ltG7.js} +6 -6
- package/dist/_chunks/{CreatePage-fxCGcrNa.js.map → CreatePage-dw59ltG7.js.map} +1 -1
- package/dist/_chunks/{CreatePage-VaJ3geMW.mjs → CreatePage-gKmLd90c.mjs} +8 -8
- package/dist/_chunks/{CreatePage-VaJ3geMW.mjs.map → CreatePage-gKmLd90c.mjs.map} +1 -1
- package/dist/_chunks/{CreatePage-yCJUQ_Q_.mjs → CreatePage-y2qFb3EW.mjs} +6 -6
- package/dist/_chunks/{CreatePage-yCJUQ_Q_.mjs.map → CreatePage-y2qFb3EW.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-qLcZo0lL.mjs → CreateView-48K591De.mjs} +6 -6
- package/dist/_chunks/{CreateView-qLcZo0lL.mjs.map → CreateView-48K591De.mjs.map} +1 -1
- package/dist/_chunks/{CreateView--YWdFkar.mjs → CreateView-icsdK0LP.mjs} +6 -6
- package/dist/_chunks/{CreateView--YWdFkar.mjs.map → CreateView-icsdK0LP.mjs.map} +1 -1
- package/dist/_chunks/{CreateView-iobgSsYH.js → CreateView-iw5zdito.js} +6 -6
- package/dist/_chunks/{CreateView-iobgSsYH.js.map → CreateView-iw5zdito.js.map} +1 -1
- package/dist/_chunks/{CreateView-0cT0WTX3.js → CreateView-r0wXY7d9.js} +6 -6
- package/dist/_chunks/{CreateView-0cT0WTX3.js.map → CreateView-r0wXY7d9.js.map} +1 -1
- package/dist/_chunks/{EditPage-41veRB1H.js → EditPage-6p8Brxzp.js} +6 -6
- package/dist/_chunks/{EditPage-41veRB1H.js.map → EditPage-6p8Brxzp.js.map} +1 -1
- package/dist/_chunks/{EditPage-j7PAa8iL.mjs → EditPage-eBgXmlCr.mjs} +6 -6
- package/dist/_chunks/{EditPage-j7PAa8iL.mjs.map → EditPage-eBgXmlCr.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-9L9QFEhI.mjs → EditPage-fuMYcO_D.mjs} +9 -9
- package/dist/_chunks/{EditPage-9L9QFEhI.mjs.map → EditPage-fuMYcO_D.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-RVuaalPM.mjs → EditPage-jvG5GlJc.mjs} +4 -4
- package/dist/_chunks/{EditPage-RVuaalPM.mjs.map → EditPage-jvG5GlJc.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-MbDaNryL.js → EditPage-nGqO0c8E.js} +4 -4
- package/dist/_chunks/{EditPage-MbDaNryL.js.map → EditPage-nGqO0c8E.js.map} +1 -1
- package/dist/_chunks/{EditPage-TKSrKZIB.js → EditPage-pYEEit-R.js} +9 -9
- package/dist/_chunks/{EditPage-TKSrKZIB.js.map → EditPage-pYEEit-R.js.map} +1 -1
- package/dist/_chunks/{EditPage-eakBPGh3.mjs → EditPage-ps19Ubuk.mjs} +6 -6
- package/dist/_chunks/{EditPage-eakBPGh3.mjs.map → EditPage-ps19Ubuk.mjs.map} +1 -1
- package/dist/_chunks/{EditPage-IqschOA1.js → EditPage-rf_a255j.js} +6 -6
- package/dist/_chunks/{EditPage-IqschOA1.js.map → EditPage-rf_a255j.js.map} +1 -1
- package/dist/_chunks/{EditView-jWLX1Tyq.js → EditView-9KEeAO94.js} +4 -4
- package/dist/_chunks/{EditView-jWLX1Tyq.js.map → EditView-9KEeAO94.js.map} +1 -1
- package/dist/_chunks/{EditView-y7Ru7MBN.mjs → EditView-Pd1zWX47.mjs} +4 -4
- package/dist/_chunks/{EditView-y7Ru7MBN.mjs.map → EditView-Pd1zWX47.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-K3F6kESh.mjs → EditViewPage-Jje9Oegz.mjs} +4 -4
- package/dist/_chunks/{EditViewPage-K3F6kESh.mjs.map → EditViewPage-Jje9Oegz.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-26ouX4XT.js → EditViewPage-KQhcQtqd.js} +4 -4
- package/dist/_chunks/{EditViewPage-26ouX4XT.js.map → EditViewPage-KQhcQtqd.js.map} +1 -1
- package/dist/_chunks/{EventsTable-KDjZ2cVf.mjs → EventsTable-OjN46vKG.mjs} +6 -6
- package/dist/_chunks/{EventsTable-KDjZ2cVf.mjs.map → EventsTable-OjN46vKG.mjs.map} +1 -1
- package/dist/_chunks/{EventsTable-LXrDlBfr.js → EventsTable-SMVq4K27.js} +6 -6
- package/dist/_chunks/{EventsTable-LXrDlBfr.js.map → EventsTable-SMVq4K27.js.map} +1 -1
- package/dist/_chunks/{HomePage-ednXn0_w.mjs → HomePage-1PlFSGc-.mjs} +6 -6
- package/dist/_chunks/{HomePage-ednXn0_w.mjs.map → HomePage-1PlFSGc-.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-FResDoxA.js → HomePage-_OZ837dF.js} +5 -5
- package/dist/_chunks/{HomePage-FResDoxA.js.map → HomePage-_OZ837dF.js.map} +1 -1
- package/dist/_chunks/{HomePage-eu--l8xF.mjs → HomePage-iGGPufdI.mjs} +5 -5
- package/dist/_chunks/{HomePage-eu--l8xF.mjs.map → HomePage-iGGPufdI.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-Ze3G8iUH.js → HomePage-zkMkOLZy.js} +6 -6
- package/dist/_chunks/{HomePage-Ze3G8iUH.js.map → HomePage-zkMkOLZy.js.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-paMrWUnO.js → InformationBoxEE-RkUQObb9.js} +3 -3
- package/dist/_chunks/{InformationBoxEE-paMrWUnO.js.map → InformationBoxEE-RkUQObb9.js.map} +1 -1
- package/dist/_chunks/{InformationBoxEE-Gdo1XAgx.mjs → InformationBoxEE-Y8w2OZfF.mjs} +3 -3
- package/dist/_chunks/{InformationBoxEE-Gdo1XAgx.mjs.map → InformationBoxEE-Y8w2OZfF.mjs.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-CqVr2dr6.js → InstalledPluginsPage-6VEamMx-.js} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-CqVr2dr6.js.map → InstalledPluginsPage-6VEamMx-.js.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-bwx1FfBD.mjs → InstalledPluginsPage-FLV-i16T.mjs} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-bwx1FfBD.mjs.map → InstalledPluginsPage-FLV-i16T.mjs.map} +1 -1
- package/dist/_chunks/{Layout-Z16aTYpZ.mjs → Layout-BbFzmdA3.mjs} +2 -2
- package/dist/_chunks/{Layout-Z16aTYpZ.mjs.map → Layout-BbFzmdA3.mjs.map} +1 -1
- package/dist/_chunks/{Layout-3Lv7Nso2.js → Layout-yDFhMeG0.js} +2 -2
- package/dist/_chunks/{Layout-3Lv7Nso2.js.map → Layout-yDFhMeG0.js.map} +1 -1
- package/dist/_chunks/{ListPage-psHwJBW1.js → ListPage-3_Rmx0WL.js} +8 -8
- package/dist/_chunks/{ListPage-psHwJBW1.js.map → ListPage-3_Rmx0WL.js.map} +1 -1
- package/dist/_chunks/{ListPage-X6S-Jwbi.mjs → ListPage-59QCcSqZ.mjs} +8 -8
- package/dist/_chunks/{ListPage-X6S-Jwbi.mjs.map → ListPage-59QCcSqZ.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-oCa14URs.js → ListPage-AUecxlA9.js} +6 -6
- package/dist/_chunks/{ListPage-oCa14URs.js.map → ListPage-AUecxlA9.js.map} +1 -1
- package/dist/_chunks/{ListPage-hRUBs_lX.mjs → ListPage-Lqx57Glr.mjs} +7 -7
- package/dist/_chunks/{ListPage-hRUBs_lX.mjs.map → ListPage-Lqx57Glr.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-5xEl9tYB.js → ListPage-QhtuDpJA.js} +7 -7
- package/dist/_chunks/{ListPage-5xEl9tYB.js.map → ListPage-QhtuDpJA.js.map} +1 -1
- package/dist/_chunks/{ListPage-9qAYgALl.mjs → ListPage-WJP01btb.mjs} +4 -4
- package/dist/_chunks/{ListPage-9qAYgALl.mjs.map → ListPage-WJP01btb.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-jzaajX-e.js → ListPage-Zab_MlPC.js} +3 -3
- package/dist/_chunks/{ListPage-jzaajX-e.js.map → ListPage-Zab_MlPC.js.map} +1 -1
- package/dist/_chunks/{ListPage-TJvZ4Mf5.mjs → ListPage-iaetHfR8.mjs} +6 -6
- package/dist/_chunks/{ListPage-TJvZ4Mf5.mjs.map → ListPage-iaetHfR8.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-lXXuYlv5.mjs → ListPage-iiklTiAf.mjs} +3 -3
- package/dist/_chunks/{ListPage-lXXuYlv5.mjs.map → ListPage-iiklTiAf.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-zhVYinNj.js → ListPage-kz10SAjp.js} +4 -4
- package/dist/_chunks/{ListPage-zhVYinNj.js.map → ListPage-kz10SAjp.js.map} +1 -1
- package/dist/_chunks/{ListPage-IK__4Lpf.mjs → ListPage-r1G44Ymw.mjs} +2 -2
- package/dist/_chunks/{ListPage-IK__4Lpf.mjs.map → ListPage-r1G44Ymw.mjs.map} +1 -1
- package/dist/_chunks/{ListPage-PpuyFTj7.js → ListPage-zsMQLWZe.js} +2 -2
- package/dist/_chunks/{ListPage-PpuyFTj7.js.map → ListPage-zsMQLWZe.js.map} +1 -1
- package/dist/_chunks/{ListView-jQQs_cJl.js → ListView-5XArx3Uw.js} +3 -3
- package/dist/_chunks/{ListView-jQQs_cJl.js.map → ListView-5XArx3Uw.js.map} +1 -1
- package/dist/_chunks/{ListView-3Fg7Y56o.js → ListView-baie7EdX.js} +3 -3
- package/dist/_chunks/{ListView-3Fg7Y56o.js.map → ListView-baie7EdX.js.map} +1 -1
- package/dist/_chunks/{ListView-HLSZD4QG.mjs → ListView-dF3W-1qO.mjs} +3 -3
- package/dist/_chunks/{ListView-HLSZD4QG.mjs.map → ListView-dF3W-1qO.mjs.map} +1 -1
- package/dist/_chunks/{ListView-LqnkQPSw.mjs → ListView-mKtPXw3S.mjs} +3 -3
- package/dist/_chunks/{ListView-LqnkQPSw.mjs.map → ListView-mKtPXw3S.mjs.map} +1 -1
- package/dist/_chunks/{Login-sL4b-7I_.mjs → Login-fNgnBkZN.mjs} +2 -2
- package/dist/_chunks/{Login-sL4b-7I_.mjs.map → Login-fNgnBkZN.mjs.map} +1 -1
- package/dist/_chunks/{Login-vU5BXAqP.js → Login-xMEWYqb3.js} +2 -2
- package/dist/_chunks/{Login-vU5BXAqP.js.map → Login-xMEWYqb3.js.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-sBUcBylX.mjs → MagicLinkEE-7ImmXKjt.mjs} +4 -4
- package/dist/_chunks/{MagicLinkEE-sBUcBylX.mjs.map → MagicLinkEE-7ImmXKjt.mjs.map} +1 -1
- package/dist/_chunks/{MagicLinkEE-mupgFg4V.js → MagicLinkEE-8eVOHtWs.js} +4 -4
- package/dist/_chunks/{MagicLinkEE-mupgFg4V.js.map → MagicLinkEE-8eVOHtWs.js.map} +1 -1
- package/dist/_chunks/{MarketplacePage-gM6Owfe4.mjs → MarketplacePage-9gMDs0VU.mjs} +3 -3
- package/dist/_chunks/{MarketplacePage-gM6Owfe4.mjs.map → MarketplacePage-9gMDs0VU.mjs.map} +1 -1
- package/dist/_chunks/{MarketplacePage-IjKH_WKo.js → MarketplacePage-Xg7mos0Q.js} +3 -3
- package/dist/_chunks/{MarketplacePage-IjKH_WKo.js.map → MarketplacePage-Xg7mos0Q.js.map} +1 -1
- package/dist/_chunks/{Permissions-bKkzuzDV.js → Permissions-hFoxbU5P.js} +2 -2
- package/dist/_chunks/{Permissions-bKkzuzDV.js.map → Permissions-hFoxbU5P.js.map} +1 -1
- package/dist/_chunks/{Permissions-DcS4EUNN.mjs → Permissions-zCLsoAGa.mjs} +2 -2
- package/dist/_chunks/{Permissions-DcS4EUNN.mjs.map → Permissions-zCLsoAGa.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-1wRz5NN3.mjs → ProfilePage-31ZnqdJz.mjs} +3 -3
- package/dist/_chunks/{ProfilePage-1wRz5NN3.mjs.map → ProfilePage-31ZnqdJz.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-BheU04B3.js → ProfilePage-v0d-63SV.js} +3 -3
- package/dist/_chunks/{ProfilePage-BheU04B3.js.map → ProfilePage-v0d-63SV.js.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-jL2QtJeb.mjs → ReviewWorkflowsColumn-bEpMVnyq.mjs} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-jL2QtJeb.mjs.map → ReviewWorkflowsColumn-bEpMVnyq.mjs.map} +1 -1
- package/dist/_chunks/{ReviewWorkflowsColumn-Bmm5pCUA.js → ReviewWorkflowsColumn-jFslDSOJ.js} +2 -2
- package/dist/_chunks/{ReviewWorkflowsColumn-Bmm5pCUA.js.map → ReviewWorkflowsColumn-jFslDSOJ.js.map} +1 -1
- package/dist/_chunks/{SelectRoles-avun6PVn.mjs → SelectRoles-397jvh3w.mjs} +3 -3
- package/dist/_chunks/{SelectRoles-avun6PVn.mjs.map → SelectRoles-397jvh3w.mjs.map} +1 -1
- package/dist/_chunks/{SelectRoles-8cZLkMEi.js → SelectRoles-zOmfqKL0.js} +3 -3
- package/dist/_chunks/{SelectRoles-8cZLkMEi.js.map → SelectRoles-zOmfqKL0.js.map} +1 -1
- package/dist/_chunks/{SettingsPage-Leij7RZb.mjs → SettingsPage-ge7YVBZh.mjs} +21 -21
- package/dist/_chunks/{SettingsPage-Leij7RZb.mjs.map → SettingsPage-ge7YVBZh.mjs.map} +1 -1
- package/dist/_chunks/{SettingsPage-vNzZJ3ag.js → SettingsPage-mNt0QiTY.js} +21 -21
- package/dist/_chunks/{SettingsPage-vNzZJ3ag.js.map → SettingsPage-mNt0QiTY.js.map} +1 -1
- package/dist/_chunks/{SingleSignOnPage-PvhdP6KP.mjs → SingleSignOnPage-LgnrCYCc.mjs} +3 -3
- package/dist/_chunks/{SingleSignOnPage-PvhdP6KP.mjs.map → SingleSignOnPage-LgnrCYCc.mjs.map} +1 -1
- package/dist/_chunks/{SingleSignOnPage-r9DBE6xY.js → SingleSignOnPage-M8yMsFLO.js} +3 -3
- package/dist/_chunks/{SingleSignOnPage-r9DBE6xY.js.map → SingleSignOnPage-M8yMsFLO.js.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect-AIpez_wn.mjs → TokenTypeSelect-5ERmNfP1.mjs} +2 -2
- package/dist/_chunks/{TokenTypeSelect-AIpez_wn.mjs.map → TokenTypeSelect-5ERmNfP1.mjs.map} +1 -1
- package/dist/_chunks/{TokenTypeSelect-q02cCXwZ.js → TokenTypeSelect-9HpXl_PF.js} +2 -2
- package/dist/_chunks/{TokenTypeSelect-q02cCXwZ.js.map → TokenTypeSelect-9HpXl_PF.js.map} +1 -1
- package/dist/_chunks/{apiTokens-cNgZGltX.js → apiTokens-_zIqFUDl.js} +2 -2
- package/dist/_chunks/{apiTokens-cNgZGltX.js.map → apiTokens-_zIqFUDl.js.map} +1 -1
- package/dist/_chunks/{apiTokens-MDVd3qb9.mjs → apiTokens-yQ6rHhJk.mjs} +2 -2
- package/dist/_chunks/{apiTokens-MDVd3qb9.mjs.map → apiTokens-yQ6rHhJk.mjs.map} +1 -1
- package/dist/_chunks/{constants-7my2QI_T.js → constants-1LJYNtJf.js} +2 -2
- package/dist/_chunks/{constants-7my2QI_T.js.map → constants-1LJYNtJf.js.map} +1 -1
- package/dist/_chunks/{constants-X4ivu2Z3.js → constants-BRLS-pE4.js} +4 -4
- package/dist/_chunks/{constants-X4ivu2Z3.js.map → constants-BRLS-pE4.js.map} +1 -1
- package/dist/_chunks/{constants-HiPaWTSX.mjs → constants-Fs0PGeXa.mjs} +4 -4
- package/dist/_chunks/{constants-HiPaWTSX.mjs.map → constants-Fs0PGeXa.mjs.map} +1 -1
- package/dist/_chunks/{constants-W3sunVeW.mjs → constants-GxbFWMRK.mjs} +2 -2
- package/dist/_chunks/{constants-W3sunVeW.mjs.map → constants-GxbFWMRK.mjs.map} +1 -1
- package/dist/_chunks/{constants-7MMo0xYE.mjs → constants-HE_pNGiL.mjs} +6 -6
- package/dist/_chunks/{constants-7MMo0xYE.mjs.map → constants-HE_pNGiL.mjs.map} +1 -1
- package/dist/_chunks/{constants-eHUirbuN.js → constants-ODlahW77.js} +2 -2
- package/dist/_chunks/{constants-eHUirbuN.js.map → constants-ODlahW77.js.map} +1 -1
- package/dist/_chunks/{constants-rjmpwCpB.mjs → constants-T-cuT2Ca.mjs} +2 -2
- package/dist/_chunks/{constants-rjmpwCpB.mjs.map → constants-T-cuT2Ca.mjs.map} +1 -1
- package/dist/_chunks/{constants-ODhwlQKw.js → constants-VC_tKTEj.js} +6 -6
- package/dist/_chunks/{constants-ODhwlQKw.js.map → constants-VC_tKTEj.js.map} +1 -1
- package/dist/_chunks/{index-5hP8C9h_.mjs → index-KlaImB-Z.mjs} +10 -10
- package/dist/_chunks/{index-5hP8C9h_.mjs.map → index-KlaImB-Z.mjs.map} +1 -1
- package/dist/_chunks/{index-hdB0LcQU.js → index-nzsPp67p.js} +10 -10
- package/dist/_chunks/{index-hdB0LcQU.js.map → index-nzsPp67p.js.map} +1 -1
- package/dist/_chunks/{reviewWorkflows-pvz0btjd.js → reviewWorkflows-6LYktuSC.js} +2 -2
- package/dist/_chunks/{reviewWorkflows-pvz0btjd.js.map → reviewWorkflows-6LYktuSC.js.map} +1 -1
- package/dist/_chunks/{reviewWorkflows-NT8a9pbP.mjs → reviewWorkflows-xaCXGNG_.mjs} +2 -2
- package/dist/_chunks/{reviewWorkflows-NT8a9pbP.mjs.map → reviewWorkflows-xaCXGNG_.mjs.map} +1 -1
- package/dist/_chunks/{transferTokens-n2fnxAr8.js → transferTokens-2uzdnbMv.js} +2 -2
- package/dist/_chunks/{transferTokens-n2fnxAr8.js.map → transferTokens-2uzdnbMv.js.map} +1 -1
- package/dist/_chunks/{transferTokens-WJTQc-sG.mjs → transferTokens-nEqTmvrl.mjs} +2 -2
- package/dist/_chunks/{transferTokens-WJTQc-sG.mjs.map → transferTokens-nEqTmvrl.mjs.map} +1 -1
- package/dist/_chunks/{useAdminRoles-MXgNiQEp.js → useAdminRoles-GDWeBZj1.js} +2 -2
- package/dist/_chunks/{useAdminRoles-MXgNiQEp.js.map → useAdminRoles-GDWeBZj1.js.map} +1 -1
- package/dist/_chunks/{useAdminRoles-GLrN6UE1.mjs → useAdminRoles-LDuoVSqV.mjs} +2 -2
- package/dist/_chunks/{useAdminRoles-GLrN6UE1.mjs.map → useAdminRoles-LDuoVSqV.mjs.map} +1 -1
- package/dist/_chunks/{useContentTypes-3V7R5Vlq.mjs → useContentTypes-96_zKnV_.mjs} +2 -2
- package/dist/_chunks/{useContentTypes-3V7R5Vlq.mjs.map → useContentTypes-96_zKnV_.mjs.map} +1 -1
- package/dist/_chunks/{useContentTypes-lP8pXI_b.js → useContentTypes-sr3aXJbS.js} +2 -2
- package/dist/_chunks/{useContentTypes-lP8pXI_b.js.map → useContentTypes-sr3aXJbS.js.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-BF8lNWgZ.js → useLicenseLimitNotification-3yitZJCi.js} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-BF8lNWgZ.js.map → useLicenseLimitNotification-3yitZJCi.js.map} +1 -1
- package/dist/_chunks/{useLicenseLimitNotification-_Isg3hBw.mjs → useLicenseLimitNotification-Tb12lIXD.mjs} +2 -2
- package/dist/_chunks/{useLicenseLimitNotification-_Isg3hBw.mjs.map → useLicenseLimitNotification-Tb12lIXD.mjs.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-sUSNw5FU.js → useReviewWorkflows-D7TMsQhe.js} +2 -2
- package/dist/_chunks/{useReviewWorkflows-sUSNw5FU.js.map → useReviewWorkflows-D7TMsQhe.js.map} +1 -1
- package/dist/_chunks/{useReviewWorkflows-c_5Ue4p0.mjs → useReviewWorkflows-sjtDLjeH.mjs} +2 -2
- package/dist/_chunks/{useReviewWorkflows-c_5Ue4p0.mjs.map → useReviewWorkflows-sjtDLjeH.mjs.map} +1 -1
- package/dist/_chunks/{useWebhooks-NEbJu8zy.mjs → useWebhooks-m2S17Isk.mjs} +2 -2
- package/dist/_chunks/{useWebhooks-NEbJu8zy.mjs.map → useWebhooks-m2S17Isk.mjs.map} +1 -1
- package/dist/_chunks/{useWebhooks-rUXZtGhD.js → useWebhooks-nFFf0Nl-.js} +2 -2
- package/dist/_chunks/{useWebhooks-rUXZtGhD.js.map → useWebhooks-nFFf0Nl-.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-UickdeaD.js → validateWorkflow-3iIakrPp.js} +2 -2
- package/dist/_chunks/{validateWorkflow-UickdeaD.js.map → validateWorkflow-3iIakrPp.js.map} +1 -1
- package/dist/_chunks/{validateWorkflow-g9vIjmAt.mjs → validateWorkflow-LfwdPU9V.mjs} +2 -2
- package/dist/_chunks/{validateWorkflow-g9vIjmAt.mjs.map → validateWorkflow-LfwdPU9V.mjs.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/package.json +12 -12
package/dist/_chunks/{SingleSignOnPage-PvhdP6KP.mjs.map → SingleSignOnPage-LgnrCYCc.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleSignOnPage-PvhdP6KP.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n Main,\n MultiSelect,\n MultiSelectOption,\n Option,\n Select,\n ToggleInput,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n translatedErrors,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst schema = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n useFocusWhenNavigate();\n\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n formik: FormikHelpers<ProvidersOptions.Request['body']>\n ) => {\n // @ts-expect-error - context assertation\n lockApp();\n\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved' },\n });\n } catch (err) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n },\n });\n } finally {\n // @ts-expect-error - context assertation\n unlockApp();\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <Layout>\n <SettingsPageTitle name=\"SSO\" />\n <Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Formik\n onSubmit={handleSubmit}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n validationSchema={schema}\n validateOnChange={false}\n enableReinitialize\n >\n {({ handleChange, isSubmitting, values, setFieldValue, dirty, errors }) => (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={!dirty}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n />\n <ContentLayout>\n {isSubmitting || isLoadingData ? (\n <LoadingIndicatorPage />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} s={12}>\n <ToggleInput\n disabled={!canUpdate}\n checked={values.autoRegister}\n hint={formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n })}\n label={formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n })}\n name=\"autoRegister\"\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={handleChange}\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <Select\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n })}\n error={\n errors.defaultRole\n ? formatMessage({\n id: errors.defaultRole,\n defaultMessage: errors.defaultRole,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n })}\n name=\"defaultRole\"\n onChange={(value) =>\n handleChange({ target: { name: 'defaultRole', value } })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n value={values.defaultRole}\n >\n {roles.map(({ id, name }) => (\n <Option key={id} value={id.toString()}>\n {name}\n </Option>\n ))}\n </Select>\n </GridItem>\n <GridItem col={6} s={12}>\n <MultiSelect\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n })}\n error={\n errors.ssoLockedRoles\n ? formatMessage({\n id: errors.ssoLockedRoles,\n defaultMessage: errors.ssoLockedRoles,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n })}\n name=\"ssoLockedRoles\"\n onChange={(value) =>\n handleChange({\n target: {\n value,\n name: 'ssoLockedRoles',\n },\n })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n onClear={() => setFieldValue('ssoLockedRoles', [])}\n value={values.ssoLockedRoles || []}\n withTags\n >\n {roles.map(({ id, name }) => (\n <MultiSelectOption key={id} value={id.toString()}>\n {name}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n </GridItem>\n </Grid>\n </Flex>\n )}\n </ContentLayout>\n </Form>\n )}\n </Formik>\n </Main>\n </Layout>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <SingleSignOnPage />\n </CheckPagePermissions>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SingleSignOnPage-LgnrCYCc.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n Main,\n MultiSelect,\n MultiSelectOption,\n Option,\n Select,\n ToggleInput,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n translatedErrors,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst schema = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n useFocusWhenNavigate();\n\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n formik: FormikHelpers<ProvidersOptions.Request['body']>\n ) => {\n // @ts-expect-error - context assertation\n lockApp();\n\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved' },\n });\n } catch (err) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n },\n });\n } finally {\n // @ts-expect-error - context assertation\n unlockApp();\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <Layout>\n <SettingsPageTitle name=\"SSO\" />\n <Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Formik\n onSubmit={handleSubmit}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n validationSchema={schema}\n validateOnChange={false}\n enableReinitialize\n >\n {({ handleChange, isSubmitting, values, setFieldValue, dirty, errors }) => (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={!dirty}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n />\n <ContentLayout>\n {isSubmitting || isLoadingData ? (\n <LoadingIndicatorPage />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} s={12}>\n <ToggleInput\n disabled={!canUpdate}\n checked={values.autoRegister}\n hint={formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n })}\n label={formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n })}\n name=\"autoRegister\"\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={handleChange}\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <Select\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n })}\n error={\n errors.defaultRole\n ? formatMessage({\n id: errors.defaultRole,\n defaultMessage: errors.defaultRole,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n })}\n name=\"defaultRole\"\n onChange={(value) =>\n handleChange({ target: { name: 'defaultRole', value } })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n value={values.defaultRole}\n >\n {roles.map(({ id, name }) => (\n <Option key={id} value={id.toString()}>\n {name}\n </Option>\n ))}\n </Select>\n </GridItem>\n <GridItem col={6} s={12}>\n <MultiSelect\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n })}\n error={\n errors.ssoLockedRoles\n ? formatMessage({\n id: errors.ssoLockedRoles,\n defaultMessage: errors.ssoLockedRoles,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n })}\n name=\"ssoLockedRoles\"\n onChange={(value) =>\n handleChange({\n target: {\n value,\n name: 'ssoLockedRoles',\n },\n })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n onClear={() => setFieldValue('ssoLockedRoles', [])}\n value={values.ssoLockedRoles || []}\n withTags\n >\n {roles.map(({ id, name }) => (\n <MultiSelectOption key={id} value={id.toString()}>\n {name}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n </GridItem>\n </Grid>\n </Flex>\n )}\n </ContentLayout>\n </Form>\n )}\n </Formik>\n </Main>\n </Layout>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <SingleSignOnPage />\n </CheckPagePermissions>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,8 @@ const Icons = require("@strapi/icons");
|
|
|
7
7
|
const formik = require("formik");
|
|
8
8
|
const reactIntl = require("react-intl");
|
|
9
9
|
const yup = require("yup");
|
|
10
|
-
const index = require("./index-
|
|
11
|
-
const useAdminRoles = require("./useAdminRoles-
|
|
10
|
+
const index = require("./index-nzsPp67p.js");
|
|
11
|
+
const useAdminRoles = require("./useAdminRoles-GDWeBZj1.js");
|
|
12
12
|
require("react-dom/client");
|
|
13
13
|
require("invariant");
|
|
14
14
|
require("lodash/isFunction");
|
|
@@ -313,4 +313,4 @@ const ProtectedSSO = () => {
|
|
|
313
313
|
};
|
|
314
314
|
exports.ProtectedSSO = ProtectedSSO;
|
|
315
315
|
exports.SingleSignOnPage = SingleSignOnPage;
|
|
316
|
-
//# sourceMappingURL=SingleSignOnPage-
|
|
316
|
+
//# sourceMappingURL=SingleSignOnPage-M8yMsFLO.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleSignOnPage-r9DBE6xY.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n Main,\n MultiSelect,\n MultiSelectOption,\n Option,\n Select,\n ToggleInput,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n translatedErrors,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst schema = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n useFocusWhenNavigate();\n\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n formik: FormikHelpers<ProvidersOptions.Request['body']>\n ) => {\n // @ts-expect-error - context assertation\n lockApp();\n\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved' },\n });\n } catch (err) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n },\n });\n } finally {\n // @ts-expect-error - context assertation\n unlockApp();\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <Layout>\n <SettingsPageTitle name=\"SSO\" />\n <Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Formik\n onSubmit={handleSubmit}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n validationSchema={schema}\n validateOnChange={false}\n enableReinitialize\n >\n {({ handleChange, isSubmitting, values, setFieldValue, dirty, errors }) => (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={!dirty}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n />\n <ContentLayout>\n {isSubmitting || isLoadingData ? (\n <LoadingIndicatorPage />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} s={12}>\n <ToggleInput\n disabled={!canUpdate}\n checked={values.autoRegister}\n hint={formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n })}\n label={formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n })}\n name=\"autoRegister\"\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={handleChange}\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <Select\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n })}\n error={\n errors.defaultRole\n ? formatMessage({\n id: errors.defaultRole,\n defaultMessage: errors.defaultRole,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n })}\n name=\"defaultRole\"\n onChange={(value) =>\n handleChange({ target: { name: 'defaultRole', value } })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n value={values.defaultRole}\n >\n {roles.map(({ id, name }) => (\n <Option key={id} value={id.toString()}>\n {name}\n </Option>\n ))}\n </Select>\n </GridItem>\n <GridItem col={6} s={12}>\n <MultiSelect\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n })}\n error={\n errors.ssoLockedRoles\n ? formatMessage({\n id: errors.ssoLockedRoles,\n defaultMessage: errors.ssoLockedRoles,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n })}\n name=\"ssoLockedRoles\"\n onChange={(value) =>\n handleChange({\n target: {\n value,\n name: 'ssoLockedRoles',\n },\n })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n onClear={() => setFieldValue('ssoLockedRoles', [])}\n value={values.ssoLockedRoles || []}\n withTags\n >\n {roles.map(({ id, name }) => (\n <MultiSelectOption key={id} value={id.toString()}>\n {name}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n </GridItem>\n </Grid>\n </Flex>\n )}\n </ContentLayout>\n </Form>\n )}\n </Formik>\n </Main>\n </Layout>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <SingleSignOnPage />\n </CheckPagePermissions>\n );\n};\n"],"names":["yup","translatedErrors","useFocusWhenNavigate","useIntl","useTypedSelector","useOverlayBlocker","useNotification","useAPIErrorHandler","useGetProviderOptionsQuery","useUpdateProviderOptionsMutation","useRBAC","useAdminRoles","formik","isBaseQueryError","Layout","jsx","SettingsPageTitle","Main","Formik","jsxs","Form","HeaderLayout","Button","Check","ContentLayout","LoadingIndicatorPage","Flex","Typography","Grid","GridItem","ToggleInput","Select","Option","MultiSelect","MultiSelectOption","CheckPagePermissions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SingleSignOnPage-M8yMsFLO.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n Main,\n MultiSelect,\n MultiSelectOption,\n Option,\n Select,\n ToggleInput,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n translatedErrors,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst schema = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n useFocusWhenNavigate();\n\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n formik: FormikHelpers<ProvidersOptions.Request['body']>\n ) => {\n // @ts-expect-error - context assertation\n lockApp();\n\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved' },\n });\n } catch (err) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n },\n });\n } finally {\n // @ts-expect-error - context assertation\n unlockApp();\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <Layout>\n <SettingsPageTitle name=\"SSO\" />\n <Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Formik\n onSubmit={handleSubmit}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n validationSchema={schema}\n validateOnChange={false}\n enableReinitialize\n >\n {({ handleChange, isSubmitting, values, setFieldValue, dirty, errors }) => (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={!dirty}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n />\n <ContentLayout>\n {isSubmitting || isLoadingData ? (\n <LoadingIndicatorPage />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} s={12}>\n <ToggleInput\n disabled={!canUpdate}\n checked={values.autoRegister}\n hint={formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n })}\n label={formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n })}\n name=\"autoRegister\"\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={handleChange}\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <Select\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n })}\n error={\n errors.defaultRole\n ? formatMessage({\n id: errors.defaultRole,\n defaultMessage: errors.defaultRole,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n })}\n name=\"defaultRole\"\n onChange={(value) =>\n handleChange({ target: { name: 'defaultRole', value } })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n value={values.defaultRole}\n >\n {roles.map(({ id, name }) => (\n <Option key={id} value={id.toString()}>\n {name}\n </Option>\n ))}\n </Select>\n </GridItem>\n <GridItem col={6} s={12}>\n <MultiSelect\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n })}\n error={\n errors.ssoLockedRoles\n ? formatMessage({\n id: errors.ssoLockedRoles,\n defaultMessage: errors.ssoLockedRoles,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n })}\n name=\"ssoLockedRoles\"\n onChange={(value) =>\n handleChange({\n target: {\n value,\n name: 'ssoLockedRoles',\n },\n })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n onClear={() => setFieldValue('ssoLockedRoles', [])}\n value={values.ssoLockedRoles || []}\n withTags\n >\n {roles.map(({ id, name }) => (\n <MultiSelectOption key={id} value={id.toString()}>\n {name}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n </GridItem>\n </Grid>\n </Flex>\n )}\n </ContentLayout>\n </Form>\n )}\n </Formik>\n </Main>\n </Layout>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <SingleSignOnPage />\n </CheckPagePermissions>\n );\n};\n"],"names":["yup","translatedErrors","useFocusWhenNavigate","useIntl","useTypedSelector","useOverlayBlocker","useNotification","useAPIErrorHandler","useGetProviderOptionsQuery","useUpdateProviderOptionsMutation","useRBAC","useAdminRoles","formik","isBaseQueryError","Layout","jsx","SettingsPageTitle","Main","Formik","jsxs","Form","HeaderLayout","Button","Check","ContentLayout","LoadingIndicatorPage","Flex","Typography","Grid","GridItem","ToggleInput","Select","Option","MultiSelect","MultiSelectOption","CheckPagePermissions"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { useNotification, useAPIErrorHandler, ConfirmDialog, useTracking, useCli
|
|
|
6
6
|
import { Check, ArrowLeft, Refresh, Duplicate, Key } from "@strapi/icons";
|
|
7
7
|
import { useIntl } from "react-intl";
|
|
8
8
|
import { NavLink } from "react-router-dom";
|
|
9
|
-
import { O as useRegenerateTokenMutation } from "./index-
|
|
9
|
+
import { O as useRegenerateTokenMutation } from "./index-KlaImB-Z.mjs";
|
|
10
10
|
import { format, addDays } from "date-fns";
|
|
11
11
|
import * as locales from "date-fns/locale";
|
|
12
12
|
const Regenerate = ({ onRegenerate, url }) => {
|
|
@@ -350,4 +350,4 @@ export {
|
|
|
350
350
|
TokenTypeSelect as b,
|
|
351
351
|
TokenBox as c
|
|
352
352
|
};
|
|
353
|
-
//# sourceMappingURL=TokenTypeSelect-
|
|
353
|
+
//# sourceMappingURL=TokenTypeSelect-5ERmNfP1.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenTypeSelect-AIpez_wn.mjs","sources":["../../admin/src/pages/Settings/components/Tokens/FormHead.tsx","../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.ts","../../admin/src/pages/Settings/utils/forms.ts","../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx","../../admin/src/pages/Settings/components/Tokens/TokenDescription.tsx","../../admin/src/pages/Settings/components/Tokens/TokenName.tsx","../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, HeaderLayout } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Refresh } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useRegenerateTokenMutation } from '../../../../services/api';\n\nimport type { Entity } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const toggleNotification = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n },\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <>\n <Button\n startIcon={<Refresh />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n\n <ConfirmDialog\n bodyText={{\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n }}\n iconRightButton={<Refresh />}\n isConfirmButtonLoading={isLoadingConfirmation}\n isOpen={showConfirmDialog}\n onToggleDialog={() => setShowConfirmDialog(false)}\n onConfirm={handleConfirmRegeneration}\n leftButtonText={{\n id: 'Settings.tokens.Button.cancel',\n defaultMessage: 'Cancel',\n }}\n rightButtonText={{\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n }}\n title={{\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n }}\n />\n </>\n );\n};\n\ninterface Token {\n id: Entity.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n backUrl: string;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n backUrl,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <HeaderLayout\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={\n <>\n {/* @ts-expect-error polymorphic */}\n <Link as={NavLink} startIcon={<ArrowLeft />} to={backUrl}>\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n </>\n }\n ellipsis\n />\n );\n};\n","import { IconButton } from '@strapi/design-system';\nimport { ContentBox, useClipboard, useNotification, useTracking } from '@strapi/helper-plugin';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.tokens.notification.copied' },\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n borderWidth={0}\n icon={<Duplicate />}\n style={{ padding: 0, height: '1rem' }}\n />\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n","import { addDays, format } from 'date-fns';\nimport * as locales from 'date-fns/locale';\n\nexport const getDateOfExpiration = (\n createdAt: string,\n duration: number | null,\n language: string = 'en'\n) => {\n if (duration && typeof duration === 'number') {\n const durationInDays = duration / 24 / 60 / 60 / 1000;\n\n return format(addDays(new Date(createdAt), durationInDays), 'PPP', {\n // @ts-expect-error I don't know how to fix this\n locale: locales[language],\n });\n }\n\n return 'Unlimited';\n};\n","import { MessageDescriptor } from 'react-intl';\n\nconst isErrorMessageMessageDescriptor = (\n message: string | MessageDescriptor\n): message is MessageDescriptor => {\n return typeof message === 'object' && message !== null && 'id' in message;\n};\n\nexport { isErrorMessageMessageDescriptor };\n","import { SingleSelectOption, SingleSelect, Typography } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <SingleSelect\n name=\"lifespan\"\n label={formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n required\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n","import { Textarea, TextareaProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenDescriptionProps extends Pick<TextareaProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenDescription = ({\n error,\n value,\n onChange,\n canEditInputs,\n}: TokenDescriptionProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Textarea\n label={formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : {\n id: error,\n defaultMessage: error,\n }\n )\n : undefined\n }\n onChange={onChange}\n disabled={!canEditInputs}\n >\n {value}\n </Textarea>\n );\n};\n","import { TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <TextInput\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n label={formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n value={value}\n disabled={!canEditInputs}\n required\n />\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n name={name}\n label={formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={onChange}\n placeholder=\"Select\"\n required\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["token","value","label"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TokenTypeSelect-5ERmNfP1.mjs","sources":["../../admin/src/pages/Settings/components/Tokens/FormHead.tsx","../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.ts","../../admin/src/pages/Settings/utils/forms.ts","../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx","../../admin/src/pages/Settings/components/Tokens/TokenDescription.tsx","../../admin/src/pages/Settings/components/Tokens/TokenName.tsx","../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, HeaderLayout } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Refresh } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useRegenerateTokenMutation } from '../../../../services/api';\n\nimport type { Entity } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const toggleNotification = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n },\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <>\n <Button\n startIcon={<Refresh />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n\n <ConfirmDialog\n bodyText={{\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n }}\n iconRightButton={<Refresh />}\n isConfirmButtonLoading={isLoadingConfirmation}\n isOpen={showConfirmDialog}\n onToggleDialog={() => setShowConfirmDialog(false)}\n onConfirm={handleConfirmRegeneration}\n leftButtonText={{\n id: 'Settings.tokens.Button.cancel',\n defaultMessage: 'Cancel',\n }}\n rightButtonText={{\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n }}\n title={{\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n }}\n />\n </>\n );\n};\n\ninterface Token {\n id: Entity.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n backUrl: string;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n backUrl,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <HeaderLayout\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={\n <>\n {/* @ts-expect-error polymorphic */}\n <Link as={NavLink} startIcon={<ArrowLeft />} to={backUrl}>\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n </>\n }\n ellipsis\n />\n );\n};\n","import { IconButton } from '@strapi/design-system';\nimport { ContentBox, useClipboard, useNotification, useTracking } from '@strapi/helper-plugin';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.tokens.notification.copied' },\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n borderWidth={0}\n icon={<Duplicate />}\n style={{ padding: 0, height: '1rem' }}\n />\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n","import { addDays, format } from 'date-fns';\nimport * as locales from 'date-fns/locale';\n\nexport const getDateOfExpiration = (\n createdAt: string,\n duration: number | null,\n language: string = 'en'\n) => {\n if (duration && typeof duration === 'number') {\n const durationInDays = duration / 24 / 60 / 60 / 1000;\n\n return format(addDays(new Date(createdAt), durationInDays), 'PPP', {\n // @ts-expect-error I don't know how to fix this\n locale: locales[language],\n });\n }\n\n return 'Unlimited';\n};\n","import { MessageDescriptor } from 'react-intl';\n\nconst isErrorMessageMessageDescriptor = (\n message: string | MessageDescriptor\n): message is MessageDescriptor => {\n return typeof message === 'object' && message !== null && 'id' in message;\n};\n\nexport { isErrorMessageMessageDescriptor };\n","import { SingleSelectOption, SingleSelect, Typography } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <SingleSelect\n name=\"lifespan\"\n label={formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n required\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n","import { Textarea, TextareaProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenDescriptionProps extends Pick<TextareaProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenDescription = ({\n error,\n value,\n onChange,\n canEditInputs,\n}: TokenDescriptionProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Textarea\n label={formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : {\n id: error,\n defaultMessage: error,\n }\n )\n : undefined\n }\n onChange={onChange}\n disabled={!canEditInputs}\n >\n {value}\n </Textarea>\n );\n};\n","import { TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <TextInput\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n label={formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n value={value}\n disabled={!canEditInputs}\n required\n />\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n name={name}\n label={formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={onChange}\n placeholder=\"Select\"\n required\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["token","value","label"],"mappings":";;;;;;;;;;;AAkBA,MAAM,aAAa,CAAC,EAAE,cAAc,UAA2B;AACvD,QAAA,EAAE,kBAAkB;AAC1B,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,MAAM,SAAS,KAAK;AAEtE,QAAM,CAAC,uBAAuB,wBAAwB,IAAI,MAAM,SAAS,KAAK;AAC9E,QAAM,qBAAqB;AAC3B,QAAM,EAAE,yBAAyB,eAAe,IAAI,mBAAmB;AAEjE,QAAA,CAAC,eAAe,IAAI;AAE1B,QAAM,iBAAiB,YAAY;AAC7B,QAAA;AACI,YAAA,MAAM,MAAM,gBAAgB,GAAG;AAErC,UAAI,WAAW,KAAK;AACC,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,eAAe,IAAI,KAAK;AAAA,QAAA,CAClC;AAED;AAAA,MACF;AAEA,UAAI,cAAc;AACH,qBAAA,IAAI,KAAK,SAAS;AAAA,MACjC;AAAA,aACO,OAAO;AACK,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS;AAAA,UACP,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAClB;AAAA,MAAA,CACD;AAAA,IAAA,UACD;AACA,+BAAyB,KAAK;AAAA,IAChC;AAAA,EAAA;AAGF,QAAM,4BAA4B,YAAY;AAC7B;AACf,yBAAqB,KAAK;AAAA,EAAA;AAG5B,SAEI,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,+BAAY,SAAQ,EAAA;AAAA,QACpB,MAAK;AAAA,QACL,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,SAAS,MAAM,qBAAqB,IAAI;AAAA,QACxC,MAAK;AAAA,QAEJ,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAAA;AAAA,IACH;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,UAAU;AAAA,UACR,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAClB;AAAA,QACA,qCAAkB,SAAQ,EAAA;AAAA,QAC1B,wBAAwB;AAAA,QACxB,QAAQ;AAAA,QACR,gBAAgB,MAAM,qBAAqB,KAAK;AAAA,QAChD,WAAW;AAAA,QACX,gBAAgB;AAAA,UACd,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAClB;AAAA,QACA,iBAAiB;AAAA,UACf,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAClB;AAAA,QACA,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAClB;AAAA,MAAA;AAAA,IACF;AAAA,EACF,EAAA,CAAA;AAEJ;AAkBO,MAAM,WAAW,CAA8B;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA6B;AACrB,QAAA,EAAE,kBAAkB;AACpB,QAAA,mBAAmB,CAAC,WAAmB;AAClC,aAAA;AAAA,MACP,GAAG;AAAA,MACH,WAAW;AAAA,IAAA,CACZ;AAAA,EAAA;AAID,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO,OAAO,QAAQ,cAAc,KAAK;AAAA,MACzC,eACE,gBACG,qBAAA,MAAA,EAAK,KAAK,GACR,UAAA;AAAA,QAAA,iBAAiB,OAAO,MACvB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,cAAc;AAAA,YACd,KAAK,GAAG,aAAa,GAAG,OAAO,MAAM,EAAE;AAAA,UAAA;AAAA,QACzC;AAAA,QAEF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,UAAU;AAAA,YACV,SAAS;AAAA,YACT,+BAAY,OAAM,EAAA;AAAA,YAClB,MAAK;AAAA,YACL,MAAK;AAAA,YAEJ,UAAc,cAAA;AAAA,cACb,IAAI;AAAA,cACJ,gBAAgB;AAAA,YAAA,CACjB;AAAA,UAAA;AAAA,QACH;AAAA,MACF,EAAA,CAAA,IAEA,iBACA,OAAO,MACL;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,cAAc;AAAA,UACd,KAAK,GAAG,aAAa,GAAG,OAAO,MAAM,EAAE;AAAA,QAAA;AAAA,MACzC;AAAA,MAIN,kBACE,oBAAA,UAAA,EAEE,UAAC,oBAAA,MAAA,EAAK,IAAI,SAAS,WAAW,oBAAC,WAAU,CAAA,CAAA,GAAI,IAAI,SAC9C,UAAc,cAAA;AAAA,QACb,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAAA,CACjB,GACH,EACF,CAAA;AAAA,MAEF,UAAQ;AAAA,IAAA;AAAA,EAAA;AAGd;AClLO,MAAM,WAAW,CAAC,EAAE,OAAO,gBAA+B;AACzD,QAAA,EAAE,kBAAkB;AAC1B,QAAM,qBAAqB;AACrB,QAAA,EAAE,eAAe;AAEjB,QAAA,EAAE,SAAS;AAEX,QAAA,cAAc,CAACA,WAAkC,YAAY;AACjE,QAAIA,QAAO;AACH,YAAA,UAAU,MAAM,KAAKA,MAAK;AAEhC,UAAI,SAAS;AACX,mBAAW,mBAAmB;AAAA,UAC5B;AAAA,QAAA,CACD;AACkB,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,EAAE,IAAI,sCAAsC;AAAA,QAAA,CACtD;AAAA,MACH;AAAA,IACF;AAAA,EAAA;AAIA,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WACE,SACG,oBAAA,QAAA,EAAK,OAAO,EAAE,WAAW,WACxB,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO,cAAc;AAAA,YACnB,IAAI;AAAA,YACJ,gBAAgB;AAAA,UAAA,CACjB;AAAA,UACD,SAAS,YAAY,KAAK;AAAA,UAC1B,aAAa;AAAA,UACb,0BAAO,WAAU,EAAA;AAAA,UACjB,OAAO,EAAE,SAAS,GAAG,QAAQ,OAAO;AAAA,QAAA;AAAA,MAAA,GAExC;AAAA,MAGJ,OACE,SACA,cAAc;AAAA,QACZ,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAAA,CACjB;AAAA,MAEH,UACE,QACI,cAAc;AAAA,QACZ,IAAI;AAAA,QACJ,gBAAgB;AAAA,MACjB,CAAA,IACD,cAAc;AAAA,QACZ,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAAA,CACjB;AAAA,MAEP,0BAAO,KAAI,EAAA;AAAA,MACX,gBAAe;AAAA,IAAA;AAAA,EAAA;AAGrB;ACtEO,MAAM,sBAAsB,CACjC,WACA,UACA,WAAmB,SAChB;AACC,MAAA,YAAY,OAAO,aAAa,UAAU;AAC5C,UAAM,iBAAiB,WAAW,KAAK,KAAK,KAAK;AAE1C,WAAA,OAAO,QAAQ,IAAI,KAAK,SAAS,GAAG,cAAc,GAAG,OAAO;AAAA;AAAA,MAEjE,QAAQ,QAAQ,QAAQ;AAAA,IAAA,CACzB;AAAA,EACH;AAEO,SAAA;AACT;AChBA,MAAM,kCAAkC,CACtC,YACiC;AACjC,SAAO,OAAO,YAAY,YAAY,YAAY,QAAQ,QAAQ;AACpE;ACWO,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA0B;AAClB,QAAA,EAAE,kBAAkB;AAE1B,SAEI,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO,cAAc;AAAA,UACnB,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,QACD;AAAA,QACA,OACE,QACI;AAAA,UACE,gCAAgC,KAAK,IACjC,QACA,EAAE,IAAI,OAAO,gBAAgB,MAAM;AAAA,QAEzC,IAAA;AAAA,QAEN,UAAU,CAACC,WAAU;AAEV,mBAAA,EAAE,QAAQ,EAAE,MAAM,YAAY,OAAAA,UAAS;AAAA,QAClD;AAAA,QACA,UAAQ;AAAA,QACR,UAAU,CAAC;AAAA,QACX,aAAY;AAAA,QAEZ,UAAA;AAAA,UAAC,oBAAA,oBAAA,EAAmB,OAAM,aACvB,UAAc,cAAA;AAAA,YACb,IAAI;AAAA,YACJ,gBAAgB;AAAA,UACjB,CAAA,GACH;AAAA,UACC,oBAAA,oBAAA,EAAmB,OAAM,cACvB,UAAc,cAAA;AAAA,YACb,IAAI;AAAA,YACJ,gBAAgB;AAAA,UACjB,CAAA,GACH;AAAA,UACC,oBAAA,oBAAA,EAAmB,OAAM,cACvB,UAAc,cAAA;AAAA,YACb,IAAI;AAAA,YACJ,gBAAgB;AAAA,UACjB,CAAA,GACH;AAAA,UACC,oBAAA,oBAAA,EAAmB,OAAM,KACvB,UAAc,cAAA;AAAA,YACb,IAAI;AAAA,YACJ,gBAAgB;AAAA,UACjB,CAAA,GACH;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,IACA,oBAAC,cAAW,SAAQ,MAAK,WAAU,cAChC,UAAA,CAAC,cACA,GAAG,cAAc;AAAA,MACf,IAAI;AAAA,MACJ,gBAAgB;AAAA;AAAA,IAEjB,CAAA,CAAC,KAAK,oBAAoB,OAAO,WAAW,SAAS,SAAS,IAAI,EAAE,CAAC,CAAC,GAC3E,CAAA;AAAA,EACF,EAAA,CAAA;AAEJ;AC7EO,MAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA6B;AACrB,QAAA,EAAE,kBAAkB;AAGxB,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO,cAAc;AAAA,QACnB,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAAA,CACjB;AAAA,MACD,IAAG;AAAA,MACH,OACE,QACI;AAAA,QACE,gCAAgC,KAAK,IACjC,QACA;AAAA,UACE,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAClB;AAAA,MAEN,IAAA;AAAA,MAEN;AAAA,MACA,UAAU,CAAC;AAAA,MAEV,UAAA;AAAA,IAAA;AAAA,EAAA;AAGP;ACjCO,MAAM,YAAY,CAAC,EAAE,OAAO,OAAO,UAAU,oBAAoC;AAChF,QAAA,EAAE,kBAAkB;AAGxB,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,OACE,QACI;AAAA,QACE,gCAAgC,KAAK,IAAI,QAAQ,EAAE,IAAI,OAAO,gBAAgB,MAAM;AAAA,MAEtF,IAAA;AAAA,MAEN,OAAO,cAAc;AAAA,QACnB,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAAA,CACjB;AAAA,MACD;AAAA,MACA;AAAA,MACA,UAAU,CAAC;AAAA,MACX,UAAQ;AAAA,IAAA;AAAA,EAAA;AAGd;ACjBO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU,CAAC;AAAA,EACX;AACF,MAA4B;AACpB,QAAA,EAAE,kBAAkB;AAGxB,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,OAAO,cAAc;AAAA,QACnB,IAAI,MAAM;AAAA,QACV,gBAAgB,MAAM;AAAA,MAAA,CACvB;AAAA,MACD;AAAA,MACA,OACE,QACI;AAAA,QACE,gCAAgC,KAAK,IAAI,QAAQ,EAAE,IAAI,OAAO,gBAAgB,MAAM;AAAA,MAEtF,IAAA;AAAA,MAEN;AAAA,MACA,aAAY;AAAA,MACZ,UAAQ;AAAA,MACR,UAAU,CAAC;AAAA,MAEV,qBACC,QAAQ,IAAI,CAAC,EAAE,OAAAA,QAAO,OAAAC,OACpB,MAAA,oBAAC,sBAA+B,OAAOD,QACpC,wBAAcC,MAAK,KADGD,MAEzB,CACD;AAAA,IAAA;AAAA,EAAA;AAGT;"}
|
|
@@ -7,7 +7,7 @@ const helperPlugin = require("@strapi/helper-plugin");
|
|
|
7
7
|
const Icons = require("@strapi/icons");
|
|
8
8
|
const reactIntl = require("react-intl");
|
|
9
9
|
const reactRouterDom = require("react-router-dom");
|
|
10
|
-
const index = require("./index-
|
|
10
|
+
const index = require("./index-nzsPp67p.js");
|
|
11
11
|
const dateFns = require("date-fns");
|
|
12
12
|
const locales = require("date-fns/locale");
|
|
13
13
|
function _interopNamespace(e) {
|
|
@@ -369,4 +369,4 @@ exports.TokenBox = TokenBox;
|
|
|
369
369
|
exports.TokenDescription = TokenDescription;
|
|
370
370
|
exports.TokenName = TokenName;
|
|
371
371
|
exports.TokenTypeSelect = TokenTypeSelect;
|
|
372
|
-
//# sourceMappingURL=TokenTypeSelect-
|
|
372
|
+
//# sourceMappingURL=TokenTypeSelect-9HpXl_PF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenTypeSelect-q02cCXwZ.js","sources":["../../admin/src/pages/Settings/components/Tokens/FormHead.tsx","../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.ts","../../admin/src/pages/Settings/utils/forms.ts","../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx","../../admin/src/pages/Settings/components/Tokens/TokenDescription.tsx","../../admin/src/pages/Settings/components/Tokens/TokenName.tsx","../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, HeaderLayout } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Refresh } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useRegenerateTokenMutation } from '../../../../services/api';\n\nimport type { Entity } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const toggleNotification = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n },\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <>\n <Button\n startIcon={<Refresh />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n\n <ConfirmDialog\n bodyText={{\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n }}\n iconRightButton={<Refresh />}\n isConfirmButtonLoading={isLoadingConfirmation}\n isOpen={showConfirmDialog}\n onToggleDialog={() => setShowConfirmDialog(false)}\n onConfirm={handleConfirmRegeneration}\n leftButtonText={{\n id: 'Settings.tokens.Button.cancel',\n defaultMessage: 'Cancel',\n }}\n rightButtonText={{\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n }}\n title={{\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n }}\n />\n </>\n );\n};\n\ninterface Token {\n id: Entity.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n backUrl: string;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n backUrl,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <HeaderLayout\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={\n <>\n {/* @ts-expect-error polymorphic */}\n <Link as={NavLink} startIcon={<ArrowLeft />} to={backUrl}>\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n </>\n }\n ellipsis\n />\n );\n};\n","import { IconButton } from '@strapi/design-system';\nimport { ContentBox, useClipboard, useNotification, useTracking } from '@strapi/helper-plugin';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.tokens.notification.copied' },\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n borderWidth={0}\n icon={<Duplicate />}\n style={{ padding: 0, height: '1rem' }}\n />\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n","import { addDays, format } from 'date-fns';\nimport * as locales from 'date-fns/locale';\n\nexport const getDateOfExpiration = (\n createdAt: string,\n duration: number | null,\n language: string = 'en'\n) => {\n if (duration && typeof duration === 'number') {\n const durationInDays = duration / 24 / 60 / 60 / 1000;\n\n return format(addDays(new Date(createdAt), durationInDays), 'PPP', {\n // @ts-expect-error I don't know how to fix this\n locale: locales[language],\n });\n }\n\n return 'Unlimited';\n};\n","import { MessageDescriptor } from 'react-intl';\n\nconst isErrorMessageMessageDescriptor = (\n message: string | MessageDescriptor\n): message is MessageDescriptor => {\n return typeof message === 'object' && message !== null && 'id' in message;\n};\n\nexport { isErrorMessageMessageDescriptor };\n","import { SingleSelectOption, SingleSelect, Typography } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <SingleSelect\n name=\"lifespan\"\n label={formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n required\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n","import { Textarea, TextareaProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenDescriptionProps extends Pick<TextareaProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenDescription = ({\n error,\n value,\n onChange,\n canEditInputs,\n}: TokenDescriptionProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Textarea\n label={formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : {\n id: error,\n defaultMessage: error,\n }\n )\n : undefined\n }\n onChange={onChange}\n disabled={!canEditInputs}\n >\n {value}\n </Textarea>\n );\n};\n","import { TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <TextInput\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n label={formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n value={value}\n disabled={!canEditInputs}\n required\n />\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n name={name}\n label={formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={onChange}\n placeholder=\"Select\"\n required\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["useIntl","React","useNotification","useAPIErrorHandler","useRegenerateTokenMutation","jsxs","Fragment","jsx","Button","Refresh","ConfirmDialog","HeaderLayout","Flex","Check","Link","NavLink","ArrowLeft","useTracking","useClipboard","token","ContentBox","IconButton","Duplicate","Key","format","addDays","locales","SingleSelect","value","SingleSelectOption","Typography","Textarea","TextInput","label"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TokenTypeSelect-9HpXl_PF.js","sources":["../../admin/src/pages/Settings/components/Tokens/FormHead.tsx","../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.ts","../../admin/src/pages/Settings/utils/forms.ts","../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx","../../admin/src/pages/Settings/components/Tokens/TokenDescription.tsx","../../admin/src/pages/Settings/components/Tokens/TokenName.tsx","../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, HeaderLayout } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Refresh } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useRegenerateTokenMutation } from '../../../../services/api';\n\nimport type { Entity } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const toggleNotification = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n },\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <>\n <Button\n startIcon={<Refresh />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n\n <ConfirmDialog\n bodyText={{\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n }}\n iconRightButton={<Refresh />}\n isConfirmButtonLoading={isLoadingConfirmation}\n isOpen={showConfirmDialog}\n onToggleDialog={() => setShowConfirmDialog(false)}\n onConfirm={handleConfirmRegeneration}\n leftButtonText={{\n id: 'Settings.tokens.Button.cancel',\n defaultMessage: 'Cancel',\n }}\n rightButtonText={{\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n }}\n title={{\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n }}\n />\n </>\n );\n};\n\ninterface Token {\n id: Entity.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n backUrl: string;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n backUrl,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <HeaderLayout\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={\n <>\n {/* @ts-expect-error polymorphic */}\n <Link as={NavLink} startIcon={<ArrowLeft />} to={backUrl}>\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n </>\n }\n ellipsis\n />\n );\n};\n","import { IconButton } from '@strapi/design-system';\nimport { ContentBox, useClipboard, useNotification, useTracking } from '@strapi/helper-plugin';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.tokens.notification.copied' },\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n borderWidth={0}\n icon={<Duplicate />}\n style={{ padding: 0, height: '1rem' }}\n />\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n","import { addDays, format } from 'date-fns';\nimport * as locales from 'date-fns/locale';\n\nexport const getDateOfExpiration = (\n createdAt: string,\n duration: number | null,\n language: string = 'en'\n) => {\n if (duration && typeof duration === 'number') {\n const durationInDays = duration / 24 / 60 / 60 / 1000;\n\n return format(addDays(new Date(createdAt), durationInDays), 'PPP', {\n // @ts-expect-error I don't know how to fix this\n locale: locales[language],\n });\n }\n\n return 'Unlimited';\n};\n","import { MessageDescriptor } from 'react-intl';\n\nconst isErrorMessageMessageDescriptor = (\n message: string | MessageDescriptor\n): message is MessageDescriptor => {\n return typeof message === 'object' && message !== null && 'id' in message;\n};\n\nexport { isErrorMessageMessageDescriptor };\n","import { SingleSelectOption, SingleSelect, Typography } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <SingleSelect\n name=\"lifespan\"\n label={formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n required\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n","import { Textarea, TextareaProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenDescriptionProps extends Pick<TextareaProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenDescription = ({\n error,\n value,\n onChange,\n canEditInputs,\n}: TokenDescriptionProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Textarea\n label={formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : {\n id: error,\n defaultMessage: error,\n }\n )\n : undefined\n }\n onChange={onChange}\n disabled={!canEditInputs}\n >\n {value}\n </Textarea>\n );\n};\n","import { TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <TextInput\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n label={formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n value={value}\n disabled={!canEditInputs}\n required\n />\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n name={name}\n label={formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={onChange}\n placeholder=\"Select\"\n required\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["useIntl","React","useNotification","useAPIErrorHandler","useRegenerateTokenMutation","jsxs","Fragment","jsx","Button","Refresh","ConfirmDialog","HeaderLayout","Flex","Check","Link","NavLink","ArrowLeft","useTracking","useClipboard","token","ContentBox","IconButton","Duplicate","Key","format","addDays","locales","SingleSelect","value","SingleSelectOption","Typography","Textarea","TextInput","label"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const index = require("./index-
|
|
2
|
+
const index = require("./index-nzsPp67p.js");
|
|
3
3
|
const transferTokenService = index.adminApi.injectEndpoints({
|
|
4
4
|
endpoints: (builder) => ({
|
|
5
5
|
getAPITokens: builder.query({
|
|
@@ -56,4 +56,4 @@ exports.useDeleteAPITokenMutation = useDeleteAPITokenMutation;
|
|
|
56
56
|
exports.useGetAPITokenQuery = useGetAPITokenQuery;
|
|
57
57
|
exports.useGetAPITokensQuery = useGetAPITokensQuery;
|
|
58
58
|
exports.useUpdateAPITokenMutation = useUpdateAPITokenMutation;
|
|
59
|
-
//# sourceMappingURL=apiTokens-
|
|
59
|
+
//# sourceMappingURL=apiTokens-_zIqFUDl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiTokens-
|
|
1
|
+
{"version":3,"file":"apiTokens-_zIqFUDl.js","sources":["../../admin/src/services/apiTokens.ts"],"sourcesContent":["import * as ApiToken from '../../../shared/contracts/api-token';\n\nimport { adminApi } from './api';\n\nconst transferTokenService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAPITokens: builder.query<ApiToken.List.Response['data'], void>({\n query: () => '/admin/api-tokens',\n transformResponse: (response: ApiToken.List.Response) => response.data,\n providesTags: (res, _err) => [\n ...(res?.map(({ id }) => ({ type: 'ApiToken' as const, id })) ?? []),\n { type: 'ApiToken' as const, id: 'LIST' },\n ],\n }),\n getAPIToken: builder.query<ApiToken.Get.Response['data'], ApiToken.Get.Params['id']>({\n query: (id) => `/admin/api-tokens/${id}`,\n transformResponse: (response: ApiToken.Get.Response) => response.data,\n providesTags: (res, _err, id) => [{ type: 'ApiToken' as const, id }],\n }),\n createAPIToken: builder.mutation<\n ApiToken.Create.Response['data'],\n ApiToken.Create.Request['body']\n >({\n query: (body) => ({\n url: '/admin/api-tokens',\n method: 'POST',\n data: body,\n }),\n transformResponse: (response: ApiToken.Create.Response) => response.data,\n invalidatesTags: [{ type: 'ApiToken' as const, id: 'LIST' }],\n }),\n deleteAPIToken: builder.mutation<\n ApiToken.Revoke.Response['data'],\n ApiToken.Revoke.Params['id']\n >({\n query: (id) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'DELETE',\n }),\n transformResponse: (response: ApiToken.Revoke.Response) => response.data,\n invalidatesTags: (_res, _err, id) => [{ type: 'ApiToken' as const, id }],\n }),\n updateAPIToken: builder.mutation<\n ApiToken.Update.Response['data'],\n ApiToken.Update.Params & ApiToken.Update.Request['body']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (response: ApiToken.Update.Response) => response.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'ApiToken' as const, id }],\n }),\n }),\n overrideExisting: false,\n});\n\nconst {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n} = transferTokenService;\n\nexport {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n};\n"],"names":["adminApi"],"mappings":";;AAIA,MAAM,uBAAuBA,eAAS,gBAAgB;AAAA,EACpD,WAAW,CAAC,aAAa;AAAA,IACvB,cAAc,QAAQ,MAA4C;AAAA,MAChE,OAAO,MAAM;AAAA,MACb,mBAAmB,CAAC,aAAqC,SAAS;AAAA,MAClE,cAAc,CAAC,KAAK,SAAS;AAAA,QAC3B,GAAI,KAAK,IAAI,CAAC,EAAE,GAAU,OAAA,EAAE,MAAM,YAAqB,KAAK,KAAK,CAAC;AAAA,QAClE,EAAE,MAAM,YAAqB,IAAI,OAAO;AAAA,MAC1C;AAAA,IAAA,CACD;AAAA,IACD,aAAa,QAAQ,MAAgE;AAAA,MACnF,OAAO,CAAC,OAAO,qBAAqB,EAAE;AAAA,MACtC,mBAAmB,CAAC,aAAoC,SAAS;AAAA,MACjE,cAAc,CAAC,KAAK,MAAM,OAAO,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CACpE;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,UAAU;AAAA,QAChB,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,MAER,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,EAAE,MAAM,YAAqB,IAAI,QAAQ;AAAA,IAAA,CAC5D;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,QAAQ;AAAA,QACd,KAAK,qBAAqB,EAAE;AAAA,QAC5B,QAAQ;AAAA,MAAA;AAAA,MAEV,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,MAAM,MAAM,OAAO,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CACxE;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,EAAE,IAAI,GAAG,YAAY;AAAA,QAC3B,KAAK,qBAAqB,EAAE;AAAA,QAC5B,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,MAER,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,MAAM,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CAC5E;AAAA,EAAA;AAAA,EAEH,kBAAkB;AACpB,CAAC;AAEK,MAAA;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAI;;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as adminApi } from "./index-
|
|
1
|
+
import { n as adminApi } from "./index-KlaImB-Z.mjs";
|
|
2
2
|
const transferTokenService = adminApi.injectEndpoints({
|
|
3
3
|
endpoints: (builder) => ({
|
|
4
4
|
getAPITokens: builder.query({
|
|
@@ -57,4 +57,4 @@ export {
|
|
|
57
57
|
useUpdateAPITokenMutation as d,
|
|
58
58
|
useGetAPITokensQuery as u
|
|
59
59
|
};
|
|
60
|
-
//# sourceMappingURL=apiTokens-
|
|
60
|
+
//# sourceMappingURL=apiTokens-yQ6rHhJk.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiTokens-
|
|
1
|
+
{"version":3,"file":"apiTokens-yQ6rHhJk.mjs","sources":["../../admin/src/services/apiTokens.ts"],"sourcesContent":["import * as ApiToken from '../../../shared/contracts/api-token';\n\nimport { adminApi } from './api';\n\nconst transferTokenService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAPITokens: builder.query<ApiToken.List.Response['data'], void>({\n query: () => '/admin/api-tokens',\n transformResponse: (response: ApiToken.List.Response) => response.data,\n providesTags: (res, _err) => [\n ...(res?.map(({ id }) => ({ type: 'ApiToken' as const, id })) ?? []),\n { type: 'ApiToken' as const, id: 'LIST' },\n ],\n }),\n getAPIToken: builder.query<ApiToken.Get.Response['data'], ApiToken.Get.Params['id']>({\n query: (id) => `/admin/api-tokens/${id}`,\n transformResponse: (response: ApiToken.Get.Response) => response.data,\n providesTags: (res, _err, id) => [{ type: 'ApiToken' as const, id }],\n }),\n createAPIToken: builder.mutation<\n ApiToken.Create.Response['data'],\n ApiToken.Create.Request['body']\n >({\n query: (body) => ({\n url: '/admin/api-tokens',\n method: 'POST',\n data: body,\n }),\n transformResponse: (response: ApiToken.Create.Response) => response.data,\n invalidatesTags: [{ type: 'ApiToken' as const, id: 'LIST' }],\n }),\n deleteAPIToken: builder.mutation<\n ApiToken.Revoke.Response['data'],\n ApiToken.Revoke.Params['id']\n >({\n query: (id) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'DELETE',\n }),\n transformResponse: (response: ApiToken.Revoke.Response) => response.data,\n invalidatesTags: (_res, _err, id) => [{ type: 'ApiToken' as const, id }],\n }),\n updateAPIToken: builder.mutation<\n ApiToken.Update.Response['data'],\n ApiToken.Update.Params & ApiToken.Update.Request['body']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (response: ApiToken.Update.Response) => response.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'ApiToken' as const, id }],\n }),\n }),\n overrideExisting: false,\n});\n\nconst {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n} = transferTokenService;\n\nexport {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n};\n"],"names":[],"mappings":";AAIA,MAAM,uBAAuB,SAAS,gBAAgB;AAAA,EACpD,WAAW,CAAC,aAAa;AAAA,IACvB,cAAc,QAAQ,MAA4C;AAAA,MAChE,OAAO,MAAM;AAAA,MACb,mBAAmB,CAAC,aAAqC,SAAS;AAAA,MAClE,cAAc,CAAC,KAAK,SAAS;AAAA,QAC3B,GAAI,KAAK,IAAI,CAAC,EAAE,GAAU,OAAA,EAAE,MAAM,YAAqB,KAAK,KAAK,CAAC;AAAA,QAClE,EAAE,MAAM,YAAqB,IAAI,OAAO;AAAA,MAC1C;AAAA,IAAA,CACD;AAAA,IACD,aAAa,QAAQ,MAAgE;AAAA,MACnF,OAAO,CAAC,OAAO,qBAAqB,EAAE;AAAA,MACtC,mBAAmB,CAAC,aAAoC,SAAS;AAAA,MACjE,cAAc,CAAC,KAAK,MAAM,OAAO,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CACpE;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,UAAU;AAAA,QAChB,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,MAER,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,EAAE,MAAM,YAAqB,IAAI,QAAQ;AAAA,IAAA,CAC5D;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,QAAQ;AAAA,QACd,KAAK,qBAAqB,EAAE;AAAA,QAC5B,QAAQ;AAAA,MAAA;AAAA,MAEV,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,MAAM,MAAM,OAAO,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CACxE;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,EAAE,IAAI,GAAG,YAAY;AAAA,QAC3B,KAAK,qBAAqB,EAAE;AAAA,QAC5B,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,MAER,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,MAAM,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CAC5E;AAAA,EAAA;AAAA,EAEH,kBAAkB;AACpB,CAAC;AAEK,MAAA;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAI;"}
|
|
@@ -6,7 +6,7 @@ const v2 = require("@strapi/design-system/v2");
|
|
|
6
6
|
const reactIntl = require("react-intl");
|
|
7
7
|
const reactRouterDom = require("react-router-dom");
|
|
8
8
|
const styled = require("styled-components");
|
|
9
|
-
const index = require("./index-
|
|
9
|
+
const index = require("./index-nzsPp67p.js");
|
|
10
10
|
const SSOProviders = require("./SSOProviders-Z6IAEre2.js");
|
|
11
11
|
require("@strapi/helper-plugin");
|
|
12
12
|
require("react-dom/client");
|
|
@@ -113,4 +113,4 @@ const FORMS = {
|
|
|
113
113
|
providers: Providers
|
|
114
114
|
};
|
|
115
115
|
exports.FORMS = FORMS;
|
|
116
|
-
//# sourceMappingURL=constants-
|
|
116
|
+
//# sourceMappingURL=constants-1LJYNtJf.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants-
|
|
1
|
+
{"version":3,"file":"constants-1LJYNtJf.js","sources":["../../ee/admin/src/pages/AuthPage/components/Providers.tsx","../../ee/admin/src/pages/AuthPage/constants.ts"],"sourcesContent":["import { Box, Button, Divider, Flex, Loader, Main, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Redirect, useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { Logo } from '../../../../../../admin/src/components/UnauthenticatedLogo';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../../../../admin/src/layouts/UnauthenticatedLayout';\nimport { useGetProvidersQuery } from '../../../../../../admin/src/services/auth';\n\nimport { SSOProviders } from './SSOProviders';\n\nconst Providers = () => {\n const { push } = useHistory();\n const { formatMessage } = useIntl();\n const { isLoading, data: providers = [] } = useGetProvidersQuery(undefined, {\n skip: !window.strapi.features.isEnabled(window.strapi.features.SSO),\n });\n\n const handleClick = () => {\n push('/auth/login');\n };\n\n if (\n !window.strapi.features.isEnabled(window.strapi.features.SSO) ||\n (!isLoading && providers.length === 0)\n ) {\n return <Redirect to=\"/auth/login\" />;\n }\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={1}>\n <Typography as=\"h1\" variant=\"alpha\">\n {formatMessage({ id: 'Auth.form.welcome.title' })}\n </Typography>\n </Box>\n <Box paddingBottom={7}>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage({ id: 'Auth.login.sso.subtitle' })}\n </Typography>\n </Box>\n </Column>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n {isLoading ? (\n <Flex justifyContent=\"center\">\n <Loader>{formatMessage({ id: 'Auth.login.sso.loading' })}</Loader>\n </Flex>\n ) : (\n <SSOProviders providers={providers} />\n )}\n <Flex>\n <DividerFull />\n <Box paddingLeft={3} paddingRight={3}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'or' })}\n </Typography>\n </Box>\n <DividerFull />\n </Flex>\n <Button fullWidth size=\"L\" onClick={handleClick}>\n {formatMessage({ id: 'Auth.form.button.login.strapi' })}\n </Button>\n </Flex>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/forgot-password\">\n <Typography variant=\"pi\">\n {formatMessage({ id: 'Auth.link.forgot-password' })}\n </Typography>\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nconst DividerFull = styled(Divider)`\n flex: 1;\n`;\n\nexport { Providers };\n","import type { ComponentType } from 'react';\n\nimport { Providers } from './components/Providers';\n\ntype AuthType = 'providers';\n\ntype FormDictionary = Record<AuthType, ComponentType>;\n\nexport const FORMS = {\n providers: Providers,\n} satisfies FormDictionary;\n"],"names":["useHistory","useIntl","useGetProvidersQuery","jsx","Redirect","UnauthenticatedLayout","jsxs","Main","LayoutContent","Column","Logo","Box","Typography","Flex","Loader","SSOProviders","Button","Link","NavLink","styled","Divider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,YAAY,MAAM;AAChB,QAAA,EAAE,SAASA,eAAAA;AACX,QAAA,EAAE,kBAAkBC,UAAAA;AACpB,QAAA,EAAE,WAAW,MAAM,YAAY,CAAA,MAAOC,MAAAA,qBAAqB,QAAW;AAAA,IAC1E,MAAM,CAAC,OAAO,OAAO,SAAS,UAAU,OAAO,OAAO,SAAS,GAAG;AAAA,EAAA,CACnE;AAED,QAAM,cAAc,MAAM;AACxB,SAAK,aAAa;AAAA,EAAA;AAGpB,MACE,CAAC,OAAO,OAAO,SAAS,UAAU,OAAO,OAAO,SAAS,GAAG,KAC3D,CAAC,aAAa,UAAU,WAAW,GACpC;AACO,WAAAC,2BAAA,IAACC,eAAS,UAAA,EAAA,IAAG,cAAc,CAAA;AAAA,EACpC;AAGE,SAAAD,2BAAAA,IAACE,MAAAA,uBACC,EAAA,UAAAC,2BAAAA,KAACC,aAAAA,MACC,EAAA,UAAA;AAAA,IAAAD,gCAACE,MAAAA,eACC,EAAA,UAAA;AAAA,MAAAF,gCAACG,MAAAA,QACC,EAAA,UAAA;AAAA,QAAAN,2BAAA,IAACO,MAAK,MAAA,EAAA;AAAA,uCACLC,aAAAA,KAAI,EAAA,YAAY,GAAG,eAAe,GACjC,yCAACC,yBAAW,EAAA,IAAG,MAAK,SAAQ,SACzB,UAAc,cAAA,EAAE,IAAI,0BAA0B,CAAC,EAClD,CAAA,GACF;AAAA,uCACCD,aAAAA,KAAI,EAAA,eAAe,GAClB,UAAAR,2BAAA,IAACS,2BAAW,SAAQ,WAAU,WAAU,cACrC,wBAAc,EAAE,IAAI,0BAA0B,CAAC,EAClD,CAAA,GACF;AAAA,MAAA,GACF;AAAA,sCACCC,aAAAA,MAAK,EAAA,WAAU,UAAS,YAAW,WAAU,KAAK,GAChD,UAAA;AAAA,QAAA,2CACEA,aAAK,MAAA,EAAA,gBAAe,UACnB,UAAAV,2BAAAA,IAACW,uBAAQ,UAAc,cAAA,EAAE,IAAI,yBAA0B,CAAA,GAAE,EAAA,CAC3D,IAEAX,+BAACY,aAAAA,gBAAa,WAAsB;AAAA,wCAErCF,aAAAA,MACC,EAAA,UAAA;AAAA,UAAAV,2BAAA,IAAC,aAAY,EAAA;AAAA,yCACZQ,aAAAA,KAAI,EAAA,aAAa,GAAG,cAAc,GACjC,yCAACC,yBAAW,EAAA,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA,EAAE,IAAI,KAAK,CAAC,EAC7B,CAAA,GACF;AAAA,yCACC,aAAY,EAAA;AAAA,QAAA,GACf;AAAA,QACCT,2BAAA,IAAAa,aAAA,QAAA,EAAO,WAAS,MAAC,MAAK,KAAI,SAAS,aACjC,UAAc,cAAA,EAAE,IAAI,gCAAA,CAAiC,EACxD,CAAA;AAAA,MAAA,GACF;AAAA,IAAA,GACF;AAAA,IACAb,2BAAA,IAACU,aAAK,MAAA,EAAA,gBAAe,UACnB,UAAAV,2BAAAA,IAACQ,aAAAA,KAAI,EAAA,YAAY,GAEf,UAAAR,2BAAA,IAACc,GAAK,MAAA,EAAA,IAAIC,eAAS,SAAA,IAAG,yBACpB,UAACf,2BAAA,IAAAS,aAAA,YAAA,EAAW,SAAQ,MACjB,UAAc,cAAA,EAAE,IAAI,4BAA6B,CAAA,EACpD,CAAA,EACF,CAAA,EACF,CAAA,GACF;AAAA,EAAA,EACF,CAAA,EACF,CAAA;AAEJ;AAEA,MAAM,cAAcO,gBAAAA,QAAOC,aAAAA,OAAO;AAAA;AAAA;AChF3B,MAAM,QAAQ;AAAA,EACnB,WAAW;AACb;;"}
|