strapi-identity 0.1.2 → 0.3.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.
Files changed (88) hide show
  1. package/README.md +2 -1
  2. package/dist/admin/{AdminReset-H453s-DE.mjs → AdminReset-CCGgw-0k.mjs} +2 -2
  3. package/dist/admin/{AdminReset-C0QibZXW.js → AdminReset-QClQP2Il.js} +2 -2
  4. package/dist/admin/{ProfileToggle-BFmIWCrN.js → ProfileToggle-H31GHNDA.js} +299 -39
  5. package/dist/admin/{ProfileToggle-DQeXCx34.mjs → ProfileToggle-gPuH6dGP.mjs} +299 -39
  6. package/dist/admin/{SettingsPage-OwMik_IK.mjs → SettingsPage-DgPikS3m.mjs} +344 -102
  7. package/dist/admin/{SettingsPage-DyF7YbsX.js → SettingsPage-DulEjadb.js} +343 -101
  8. package/dist/admin/{ar-i2eiMZkz.js → ar-BYnI7Tsa.js} +36 -23
  9. package/dist/admin/{ar-BXaam37U.mjs → ar-DwZqj0qM.mjs} +36 -23
  10. package/dist/admin/{ca-DZ9DbEcQ.mjs → ca-aKVVc8iQ.mjs} +36 -23
  11. package/dist/admin/{ca-BVpGzY8r.js → ca-sBRHuaFU.js} +36 -23
  12. package/dist/admin/{cs-Gok16KLy.mjs → cs--prflMHS.mjs} +36 -23
  13. package/dist/admin/{cs-_PZVkwt0.js → cs-gU7KP3Lx.js} +36 -23
  14. package/dist/admin/de-BT25lv_6.mjs +49 -0
  15. package/dist/admin/de-CrlCAUuf.js +49 -0
  16. package/dist/admin/{dk-B7EOsAdU.js → dk-BNC3WUzY.js} +36 -23
  17. package/dist/admin/{dk-CI64Xmli.mjs → dk-Ck3AQYU7.mjs} +36 -23
  18. package/dist/admin/{en-B_vJwdfS.mjs → en-9qzlpde0.mjs} +36 -23
  19. package/dist/admin/{en-D4KP9t1Y.js → en-DBj0AD5g.js} +36 -23
  20. package/dist/admin/{es-CHwF7YK-.js → es-D5Sn41_H.js} +36 -23
  21. package/dist/admin/{es-CqJcXo4j.mjs → es-lh6XoPb7.mjs} +36 -23
  22. package/dist/admin/{eu-D-snytN8.mjs → eu-Cuz6ijBX.mjs} +36 -23
  23. package/dist/admin/{eu-DvdbwE5E.js → eu-Qr3RvDPW.js} +36 -23
  24. package/dist/admin/fr-C4pmkPYn.js +49 -0
  25. package/dist/admin/fr-ChlDcZsG.mjs +49 -0
  26. package/dist/admin/{gu-3wJbbAmw.mjs → gu-B6zyD1bW.mjs} +36 -23
  27. package/dist/admin/{gu-D2LgVfMp.js → gu-BMZL76zM.js} +36 -23
  28. package/dist/admin/{he-Bjv7eygt.mjs → he-C5V-qZCX.mjs} +36 -23
  29. package/dist/admin/{he-DnhYpbvN.js → he-H6iBa45A.js} +36 -23
  30. package/dist/admin/{hi-DDD2E3A3.js → hi-Be8rPk7I.js} +36 -23
  31. package/dist/admin/{hi-CNiDezU7.mjs → hi-czhOWo6-.mjs} +36 -23
  32. package/dist/admin/{hu-C1_YkZHU.js → hu-DKp6kOmc.js} +36 -23
  33. package/dist/admin/{hu-aLaIWmGw.mjs → hu-NbZ3aiYV.mjs} +36 -23
  34. package/dist/admin/{id-u3wVE6Rv.js → id-DO0bwFgY.js} +36 -23
  35. package/dist/admin/{id-C8WRgGm1.mjs → id-NH9PvcR5.mjs} +36 -23
  36. package/dist/admin/{index-BXZI8nMZ.js → index-C9K2h5UC.js} +65 -12
  37. package/dist/admin/{index-D45I6rWF.mjs → index-C_4USMnn.mjs} +65 -12
  38. package/dist/admin/index.js +1 -1
  39. package/dist/admin/index.mjs +1 -1
  40. package/dist/admin/{it-CjoRoJj1.mjs → it-Cmrey6tg.mjs} +36 -23
  41. package/dist/admin/{it-CDw6dG9Z.js → it-Df6-7-M7.js} +36 -23
  42. package/dist/admin/{ja-CewucIUY.mjs → ja-DH3KMqOL.mjs} +36 -23
  43. package/dist/admin/{ja-CbMXy2ym.js → ja-HuAq9ZwT.js} +36 -23
  44. package/dist/admin/{ko-D-kAxDtd.mjs → ko-DPN28RE8.mjs} +36 -23
  45. package/dist/admin/{ko-BEtJPpfJ.js → ko-S9k8KA8K.js} +36 -23
  46. package/dist/admin/{ml-0fR2_MmA.js → ml-Bh9GGqcW.js} +36 -23
  47. package/dist/admin/{ml-DR3AaofF.mjs → ml-MsHNacm6.mjs} +36 -23
  48. package/dist/admin/{ms-COHLS5e5.mjs → ms-TjHAaxTd.mjs} +36 -23
  49. package/dist/admin/{ms-DLvuGSlk.js → ms-hO5YeEg4.js} +36 -23
  50. package/dist/admin/{nl-wj6kn642.js → nl-BF98NBwL.js} +36 -23
  51. package/dist/admin/{nl-DVtHsM2H.mjs → nl-BLILZU8-.mjs} +36 -23
  52. package/dist/admin/{no-D_0yjyCy.mjs → no-BtVZ-siy.mjs} +36 -23
  53. package/dist/admin/{no-DVBgWt8q.js → no-bl1OXlfa.js} +36 -23
  54. package/dist/admin/{pl-C3GNxjVX.mjs → pl-DCSB6LwZ.mjs} +36 -23
  55. package/dist/admin/{pl-B2ghisbC.js → pl-DCnOWIDw.js} +36 -23
  56. package/dist/admin/{pt-BR-BbKV8YoX.mjs → pt-BR-CeLqmj88.mjs} +36 -23
  57. package/dist/admin/{pt-BR-CfgNaB1-.js → pt-BR-D2_UrxTp.js} +36 -23
  58. package/dist/admin/{pt-DKe8rRWa.js → pt-DIu8RT_X.js} +36 -23
  59. package/dist/admin/{pt-z4K3cCjf.mjs → pt-fgjdOyW5.mjs} +36 -23
  60. package/dist/admin/{ru-C85izLFa.mjs → ru-B_hlpAyP.mjs} +36 -23
  61. package/dist/admin/{ru-BFSm68HC.js → ru-BccMCf0l.js} +36 -23
  62. package/dist/admin/{sa-B1XoTTrE.mjs → sa-BtuJ_I1t.mjs} +36 -23
  63. package/dist/admin/{sa-BOPaqylt.js → sa-D3A-fo85.js} +36 -23
  64. package/dist/admin/{sk-C48lUPuC.mjs → sk-mmuTFlCK.mjs} +36 -23
  65. package/dist/admin/{sk-Dd-S1612.js → sk-uSLC6KhO.js} +36 -23
  66. package/dist/admin/{sv-BLma_kJl.mjs → sv-BlaHc5ax.mjs} +36 -23
  67. package/dist/admin/{sv-lg64Cw78.js → sv-CuKk5tE-.js} +36 -23
  68. package/dist/admin/{th-DPbm5NrX.js → th-Bv3NKkYO.js} +36 -23
  69. package/dist/admin/{th-BJEu5n7q.mjs → th-BwyhFaeE.mjs} +36 -23
  70. package/dist/admin/{tokenHelpers-jtoRu0q5.js → tokenHelpers-B54WRTn1.js} +4 -10
  71. package/dist/admin/{tokenHelpers-DagDzpso.mjs → tokenHelpers-CKVyT1sz.mjs} +4 -10
  72. package/dist/admin/{tr-DkIUODKq.mjs → tr-BLocNlbZ.mjs} +36 -23
  73. package/dist/admin/{tr-Bm1QZr4v.js → tr-Bmvs-Hx-.js} +36 -23
  74. package/dist/admin/{uk-FARzIGx4.js → uk-BDxn-EZU.js} +36 -23
  75. package/dist/admin/{uk-D7ArtSe3.mjs → uk-CyZ10xtq.mjs} +36 -23
  76. package/dist/admin/{vi-DS0yslPP.mjs → vi-Bx_UJ8up.mjs} +36 -23
  77. package/dist/admin/{vi-Bi9B6eTY.js → vi-F_mqQCme.js} +36 -23
  78. package/dist/admin/{zh-DkEx28ZA.js → zh-CFZJPG5N.js} +36 -23
  79. package/dist/admin/{zh-DwCvIPSz.mjs → zh-CjJdRa3l.mjs} +36 -23
  80. package/dist/admin/{zh-Hans-BwwKCR6_.js → zh-Hans-4BhSwSQw.js} +36 -23
  81. package/dist/admin/{zh-Hans-DP2xZyda.mjs → zh-Hans-s7G2GUHU.mjs} +36 -23
  82. package/dist/server/index.js +487 -50
  83. package/dist/server/index.mjs +487 -50
  84. package/package.json +5 -4
  85. package/dist/admin/de-BuYn1AYX.mjs +0 -26
  86. package/dist/admin/de-GItli7en.js +0 -26
  87. package/dist/admin/fr-Bt6sS5GX.mjs +0 -26
  88. package/dist/admin/fr-CbCW6hVD.js +0 -26
@@ -2,35 +2,48 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const hu = {
4
4
  "plugin.name": "Strapi Identity",
5
- "general.use_verification_code": "Hitelesítő alkalmazás használata",
5
+ "admin.subtitle": "Kétfaktoros hitelesítés visszaállítása egy felhasználó számára.",
6
+ "admin.title": "Kétfaktoros hitelesítés",
7
+ "admin.warn-title": "Visszaállítja a 2FA-t ennél a felhasználónál?",
8
+ "admin.warning": "A kétfaktoros hitelesítés visszaállítása lehetővé teszi a felhasználó számára, hogy új eszközzel állítsa be újra. Ez a művelet nem vonható vissza.",
9
+ "email_otp.confirm_description": "Adja meg a {email} címre küldött 6 jegyű kódot.",
10
+ "email_otp.disable_description": "6 jegyű ellenőrző kódot küldünk a {email} címre. Adja meg az e-mail OTP letiltásához.",
11
+ "email_otp.disable_title": "E-mail OTP letiltása",
12
+ "email_otp.resend_code": "Kód újraküldése",
13
+ "email_otp.send_code": "Ellenőrző e-mail küldése",
14
+ "email_otp.setup_description": "6 jegyű ellenőrző kódot küldünk a {email} címre. Adja meg az e-mail OTP engedélyezéséhez.",
15
+ "email_otp.setup_title": "E-mail OTP engedélyezése",
6
16
  "general.use_recovery_code": "Helyreállítási kód használata",
7
- "verify_page.title": "Igazolja személyazonosságát",
8
- "verify_page.subtitle": "A folytatáshoz adja meg ellenőrző kódját.",
9
- "verify_page.error": "Érvénytelen kód. Kérjük, próbálja újra.",
10
- "verify_page.submit": "Kód elküldése",
11
- "profile.title": "Kétfaktoros hitelesítés",
12
- "profile.subtitle": "Adjon hozzá egy további biztonsági réteget fiókjához.",
13
- "profile.toggle_label": "Kétfaktoros hitelesítés engedélyezése",
14
- "profile.setup": "Kétfaktoros hitelesítés beállítása",
15
- "profile.recovery_codes": "Kérjük, mentse el a következő helyreállítási kódokat biztonságos helyre. Minden kód csak egyszer használható fel a fiókjához való hozzáféréshez, ha elveszíti hozzáférését a hitelesítő alkalmazásához.",
17
+ "general.use_verification_code": "Hitelesítő alkalmazás használata",
18
+ "profile.disable_instruction": "Adja meg a 6 jegyű kódot a hitelesítő alkalmazásból a kétfaktoros hitelesítés letiltásához.",
19
+ "profile.disable_title": "Kétfaktoros hitelesítés letiltása",
20
+ "profile.email_otp_disabled_hint": "Az e-mail OTP engedélyezéséhez először tiltsa le a hitelesítő alkalmazást.",
21
+ "profile.email_otp_label": "E-mail OTP engedélyezése",
22
+ "profile.enter_otp": "A megerősítéshez adja meg a hitelesítő alkalmazás 6 jegyű kódját.",
16
23
  "profile.recovery_codes_warning": "Ha elveszíti mind a hitelesítő alkalmazást, mind a helyreállítási kódokat, fel kell vennie a kapcsolatot egy rendszergazdával, hogy visszaszerezze hozzáférését a fiókjához.",
24
+ "profile.recovery_codes": "Kérjük, mentse el a következő helyreállítási kódokat biztonságos helyre. Minden kód csak egyszer használható fel a fiókjához való hozzáféréshez, ha elveszíti hozzáférését a hitelesítő alkalmazásához.",
17
25
  "profile.scan_qr": "A lenti QR-kód beolvasásához hitelesítő alkalmazásra lesz szüksége.",
18
- "profile.enter_otp": "A megerősítéshez adja meg a hitelesítő alkalmazás 6 jegyű kódját.",
19
- "profile.disable_title": "Kétfaktoros hitelesítés letiltása",
20
- "profile.disable_instruction": "Adja meg a 6 jegyű kódot a hitelesítő alkalmazásból a kétfaktoros hitelesítés letiltásához.",
21
- "settings.title": "Strapi Identity Beállítások",
26
+ "profile.setup": "Kétfaktoros hitelesítés beállítása",
27
+ "profile.subtitle": "Adjon hozzá egy további biztonsági réteget fiókjához.",
28
+ "profile.title": "Kétfaktoros hitelesítés",
29
+ "profile.toggle_label": "Kétfaktoros hitelesítés engedélyezése",
30
+ "settings.accessibility_message": "Akadálymentesítési üzenet",
22
31
  "settings.description": "A Strapi Identity bővízmény beállításai, amelyek lehetővé teszik a hitelesítési beállítások és a biztonsági beállítások konfigurálását.",
23
- "settings.enforced_mfa": "Kényszerített MFA",
24
- "settings.name": "Strapi Identity",
25
32
  "settings.enabled_hint": "Kétfaktoros hitelesítés engedélyezése vagy letiltása minden felhasználó számára.",
26
- "settings.enforce": "MFA kényszerítése",
27
33
  "settings.enforce_hint": "Többfaktoros hitelesítés kényszerítése minden felhasználó számára. Ha engedélyezve van, a felhasználóknak be kell állítaniuk az MFA-t a következő bejelentkezéskor.",
28
- "settings.issuer": "Kibocsátó neve",
34
+ "settings.enforce": "MFA kényszerítése",
35
+ "settings.enforced_mfa": "Kényszerített MFA",
29
36
  "settings.issuer_hint": "Megjelenik az MFA alkalmazásban",
30
- "admin.title": "Kétfaktoros hitelesítés",
31
- "admin.subtitle": "Kétfaktoros hitelesítés visszaállítása egy felhasználó számára.",
32
- "admin.warn-title": "Visszaállítja a 2FA-t ennél a felhasználónál?",
33
- "admin.warning": "A kétfaktoros hitelesítés visszaállítása lehetővé teszi a felhasználó számára, hogy új eszközzel állítsa be újra. Ez a művelet nem vonható vissza.",
34
- "settings.warning": "Az MFA kikapcsolása minden felhasználót érint. Mentés előtt alaposan ellenőrizze a beállításokat."
37
+ "settings.issuer": "Kibocsátó neve",
38
+ "settings.name": "Strapi Identity",
39
+ "settings.title": "Strapi Identity Beállítások",
40
+ "settings.warning": "Az MFA kikapcsolása minden felhasználót érint. Mentés előtt alaposan ellenőrizze a beállításokat.",
41
+ "verify_page.error": "Érvénytelen kód. Kérjük, próbálja újra.",
42
+ "verify_page.resend_error": "A kód újraküldése sikertelen. Kérjük, próbálja újra.",
43
+ "verify_page.resend_success": "Kód elküldve!",
44
+ "verify_page.submit": "Kód elküldése",
45
+ "verify_page.subtitle_email": "Adja meg az e-mail-címére küldött kódot.",
46
+ "verify_page.subtitle": "A folytatáshoz adja meg ellenőrző kódját.",
47
+ "verify_page.title": "Igazolja személyazonosságát"
35
48
  };
36
49
  exports.default = hu;
@@ -1,35 +1,48 @@
1
1
  const hu = {
2
2
  "plugin.name": "Strapi Identity",
3
- "general.use_verification_code": "Hitelesítő alkalmazás használata",
3
+ "admin.subtitle": "Kétfaktoros hitelesítés visszaállítása egy felhasználó számára.",
4
+ "admin.title": "Kétfaktoros hitelesítés",
5
+ "admin.warn-title": "Visszaállítja a 2FA-t ennél a felhasználónál?",
6
+ "admin.warning": "A kétfaktoros hitelesítés visszaállítása lehetővé teszi a felhasználó számára, hogy új eszközzel állítsa be újra. Ez a művelet nem vonható vissza.",
7
+ "email_otp.confirm_description": "Adja meg a {email} címre küldött 6 jegyű kódot.",
8
+ "email_otp.disable_description": "6 jegyű ellenőrző kódot küldünk a {email} címre. Adja meg az e-mail OTP letiltásához.",
9
+ "email_otp.disable_title": "E-mail OTP letiltása",
10
+ "email_otp.resend_code": "Kód újraküldése",
11
+ "email_otp.send_code": "Ellenőrző e-mail küldése",
12
+ "email_otp.setup_description": "6 jegyű ellenőrző kódot küldünk a {email} címre. Adja meg az e-mail OTP engedélyezéséhez.",
13
+ "email_otp.setup_title": "E-mail OTP engedélyezése",
4
14
  "general.use_recovery_code": "Helyreállítási kód használata",
5
- "verify_page.title": "Igazolja személyazonosságát",
6
- "verify_page.subtitle": "A folytatáshoz adja meg ellenőrző kódját.",
7
- "verify_page.error": "Érvénytelen kód. Kérjük, próbálja újra.",
8
- "verify_page.submit": "Kód elküldése",
9
- "profile.title": "Kétfaktoros hitelesítés",
10
- "profile.subtitle": "Adjon hozzá egy további biztonsági réteget fiókjához.",
11
- "profile.toggle_label": "Kétfaktoros hitelesítés engedélyezése",
12
- "profile.setup": "Kétfaktoros hitelesítés beállítása",
13
- "profile.recovery_codes": "Kérjük, mentse el a következő helyreállítási kódokat biztonságos helyre. Minden kód csak egyszer használható fel a fiókjához való hozzáféréshez, ha elveszíti hozzáférését a hitelesítő alkalmazásához.",
15
+ "general.use_verification_code": "Hitelesítő alkalmazás használata",
16
+ "profile.disable_instruction": "Adja meg a 6 jegyű kódot a hitelesítő alkalmazásból a kétfaktoros hitelesítés letiltásához.",
17
+ "profile.disable_title": "Kétfaktoros hitelesítés letiltása",
18
+ "profile.email_otp_disabled_hint": "Az e-mail OTP engedélyezéséhez először tiltsa le a hitelesítő alkalmazást.",
19
+ "profile.email_otp_label": "E-mail OTP engedélyezése",
20
+ "profile.enter_otp": "A megerősítéshez adja meg a hitelesítő alkalmazás 6 jegyű kódját.",
14
21
  "profile.recovery_codes_warning": "Ha elveszíti mind a hitelesítő alkalmazást, mind a helyreállítási kódokat, fel kell vennie a kapcsolatot egy rendszergazdával, hogy visszaszerezze hozzáférését a fiókjához.",
22
+ "profile.recovery_codes": "Kérjük, mentse el a következő helyreállítási kódokat biztonságos helyre. Minden kód csak egyszer használható fel a fiókjához való hozzáféréshez, ha elveszíti hozzáférését a hitelesítő alkalmazásához.",
15
23
  "profile.scan_qr": "A lenti QR-kód beolvasásához hitelesítő alkalmazásra lesz szüksége.",
16
- "profile.enter_otp": "A megerősítéshez adja meg a hitelesítő alkalmazás 6 jegyű kódját.",
17
- "profile.disable_title": "Kétfaktoros hitelesítés letiltása",
18
- "profile.disable_instruction": "Adja meg a 6 jegyű kódot a hitelesítő alkalmazásból a kétfaktoros hitelesítés letiltásához.",
19
- "settings.title": "Strapi Identity Beállítások",
24
+ "profile.setup": "Kétfaktoros hitelesítés beállítása",
25
+ "profile.subtitle": "Adjon hozzá egy további biztonsági réteget fiókjához.",
26
+ "profile.title": "Kétfaktoros hitelesítés",
27
+ "profile.toggle_label": "Kétfaktoros hitelesítés engedélyezése",
28
+ "settings.accessibility_message": "Akadálymentesítési üzenet",
20
29
  "settings.description": "A Strapi Identity bővízmény beállításai, amelyek lehetővé teszik a hitelesítési beállítások és a biztonsági beállítások konfigurálását.",
21
- "settings.enforced_mfa": "Kényszerített MFA",
22
- "settings.name": "Strapi Identity",
23
30
  "settings.enabled_hint": "Kétfaktoros hitelesítés engedélyezése vagy letiltása minden felhasználó számára.",
24
- "settings.enforce": "MFA kényszerítése",
25
31
  "settings.enforce_hint": "Többfaktoros hitelesítés kényszerítése minden felhasználó számára. Ha engedélyezve van, a felhasználóknak be kell állítaniuk az MFA-t a következő bejelentkezéskor.",
26
- "settings.issuer": "Kibocsátó neve",
32
+ "settings.enforce": "MFA kényszerítése",
33
+ "settings.enforced_mfa": "Kényszerített MFA",
27
34
  "settings.issuer_hint": "Megjelenik az MFA alkalmazásban",
28
- "admin.title": "Kétfaktoros hitelesítés",
29
- "admin.subtitle": "Kétfaktoros hitelesítés visszaállítása egy felhasználó számára.",
30
- "admin.warn-title": "Visszaállítja a 2FA-t ennél a felhasználónál?",
31
- "admin.warning": "A kétfaktoros hitelesítés visszaállítása lehetővé teszi a felhasználó számára, hogy új eszközzel állítsa be újra. Ez a művelet nem vonható vissza.",
32
- "settings.warning": "Az MFA kikapcsolása minden felhasználót érint. Mentés előtt alaposan ellenőrizze a beállításokat."
35
+ "settings.issuer": "Kibocsátó neve",
36
+ "settings.name": "Strapi Identity",
37
+ "settings.title": "Strapi Identity Beállítások",
38
+ "settings.warning": "Az MFA kikapcsolása minden felhasználót érint. Mentés előtt alaposan ellenőrizze a beállításokat.",
39
+ "verify_page.error": "Érvénytelen kód. Kérjük, próbálja újra.",
40
+ "verify_page.resend_error": "A kód újraküldése sikertelen. Kérjük, próbálja újra.",
41
+ "verify_page.resend_success": "Kód elküldve!",
42
+ "verify_page.submit": "Kód elküldése",
43
+ "verify_page.subtitle_email": "Adja meg az e-mail-címére küldött kódot.",
44
+ "verify_page.subtitle": "A folytatáshoz adja meg ellenőrző kódját.",
45
+ "verify_page.title": "Igazolja személyazonosságát"
33
46
  };
34
47
  export {
35
48
  hu as default
@@ -2,35 +2,48 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const id = {
4
4
  "plugin.name": "Strapi Identity",
5
- "general.use_verification_code": "Gunakan aplikasi autentikator",
5
+ "admin.subtitle": "Setel ulang Autentikasi Dua Faktor untuk pengguna.",
6
+ "admin.title": "Autentikasi Dua Faktor",
7
+ "admin.warn-title": "Setel ulang 2FA untuk pengguna ini?",
8
+ "admin.warning": "Menyetel ulang Autentikasi Dua Faktor akan memungkinkan pengguna untuk mengaturnya kembali dengan perangkat baru. Tindakan ini tidak dapat dibatalkan.",
9
+ "email_otp.confirm_description": "Masukkan kode 6 digit yang dikirim ke {email}.",
10
+ "email_otp.disable_description": "Kami akan mengirimkan kode verifikasi 6 digit ke {email}. Masukkan untuk menonaktifkan Email OTP.",
11
+ "email_otp.disable_title": "Nonaktifkan Email OTP",
12
+ "email_otp.resend_code": "Kirim ulang kode",
13
+ "email_otp.send_code": "Kirim email verifikasi",
14
+ "email_otp.setup_description": "Kami akan mengirimkan kode verifikasi 6 digit ke {email}. Masukkan untuk mengaktifkan Email OTP.",
15
+ "email_otp.setup_title": "Aktifkan Email OTP",
6
16
  "general.use_recovery_code": "Gunakan kode pemulihan",
7
- "verify_page.title": "Verifikasi Identitas Anda",
8
- "verify_page.subtitle": "Masukkan kode verifikasi Anda untuk melanjutkan.",
9
- "verify_page.error": "Kode tidak valid. Silakan coba lagi.",
10
- "verify_page.submit": "Kirim Kode",
11
- "profile.title": "Autentikasi Dua Faktor",
12
- "profile.subtitle": "Tambahkan lapisan keamanan tambahan ke akun Anda.",
13
- "profile.toggle_label": "Aktifkan Autentikasi Dua Faktor",
14
- "profile.setup": "Siapkan Autentikasi Dua Faktor",
15
- "profile.recovery_codes": "Harap simpan kode pemulihan berikut di tempat yang aman. Setiap kode hanya dapat digunakan sekali untuk mengakses akun Anda jika Anda kehilangan akses ke aplikasi autentikator Anda.",
17
+ "general.use_verification_code": "Gunakan aplikasi autentikator",
18
+ "profile.disable_instruction": "Masukkan kode 6 digit dari aplikasi autentikator Anda untuk menonaktifkan Autentikasi Dua Faktor.",
19
+ "profile.disable_title": "Nonaktifkan Autentikasi Dua Faktor",
20
+ "profile.email_otp_disabled_hint": "Nonaktifkan aplikasi autentikator terlebih dahulu untuk mengaktifkan Email OTP.",
21
+ "profile.email_otp_label": "Aktifkan Email OTP",
22
+ "profile.enter_otp": "Masukkan kode 6 digit dari aplikasi autentikator Anda untuk mengonfirmasi.",
16
23
  "profile.recovery_codes_warning": "Jika Anda kehilangan aplikasi autentikator dan kode pemulihan Anda, Anda perlu menghubungi administrator untuk mendapatkan kembali akses ke akun Anda.",
24
+ "profile.recovery_codes": "Harap simpan kode pemulihan berikut di tempat yang aman. Setiap kode hanya dapat digunakan sekali untuk mengakses akun Anda jika Anda kehilangan akses ke aplikasi autentikator Anda.",
17
25
  "profile.scan_qr": "Anda memerlukan aplikasi autentikator untuk memindai kode QR di bawah ini.",
18
- "profile.enter_otp": "Masukkan kode 6 digit dari aplikasi autentikator Anda untuk mengonfirmasi.",
19
- "profile.disable_title": "Nonaktifkan Autentikasi Dua Faktor",
20
- "profile.disable_instruction": "Masukkan kode 6 digit dari aplikasi autentikator Anda untuk menonaktifkan Autentikasi Dua Faktor.",
21
- "settings.title": "Pengaturan Strapi Identity",
26
+ "profile.setup": "Siapkan Autentikasi Dua Faktor",
27
+ "profile.subtitle": "Tambahkan lapisan keamanan tambahan ke akun Anda.",
28
+ "profile.title": "Autentikasi Dua Faktor",
29
+ "profile.toggle_label": "Aktifkan Autentikasi Dua Faktor",
30
+ "settings.accessibility_message": "Pesan aksesibilitas",
22
31
  "settings.description": "Pengaturan untuk plugin Strapi Identity, memungkinkan Anda mengonfigurasi opsi autentikasi dan pengaturan keamanan.",
23
- "settings.enforced_mfa": "MFA Ditegakkan",
24
- "settings.name": "Strapi Identity",
25
32
  "settings.enabled_hint": "Aktifkan atau nonaktifkan Autentikasi Dua Faktor untuk semua pengguna.",
26
- "settings.enforce": "Wajibkan MFA",
27
33
  "settings.enforce_hint": "Wajibkan Autentikasi Multi-Faktor untuk semua pengguna. Jika diaktifkan, pengguna akan diminta untuk mengatur MFA pada login berikutnya.",
28
- "settings.issuer": "Nama Penerbit",
34
+ "settings.enforce": "Wajibkan MFA",
35
+ "settings.enforced_mfa": "MFA Ditegakkan",
29
36
  "settings.issuer_hint": "Ditampilkan di aplikasi MFA",
30
- "admin.title": "Autentikasi Dua Faktor",
31
- "admin.subtitle": "Setel ulang Autentikasi Dua Faktor untuk pengguna.",
32
- "admin.warn-title": "Setel ulang 2FA untuk pengguna ini?",
33
- "admin.warning": "Menyetel ulang Autentikasi Dua Faktor akan memungkinkan pengguna untuk mengaturnya kembali dengan perangkat baru. Tindakan ini tidak dapat dibatalkan.",
34
- "settings.warning": "Mematikan MFA akan memengaruhi semua pengguna. Harap tinjau pengaturan dengan cermat sebelum menyimpan."
37
+ "settings.issuer": "Nama Penerbit",
38
+ "settings.name": "Strapi Identity",
39
+ "settings.title": "Pengaturan Strapi Identity",
40
+ "settings.warning": "Mematikan MFA akan memengaruhi semua pengguna. Harap tinjau pengaturan dengan cermat sebelum menyimpan.",
41
+ "verify_page.error": "Kode tidak valid. Silakan coba lagi.",
42
+ "verify_page.resend_error": "Gagal mengirim ulang kode. Silakan coba lagi.",
43
+ "verify_page.resend_success": "Kode terkirim!",
44
+ "verify_page.submit": "Kirim Kode",
45
+ "verify_page.subtitle_email": "Masukkan kode yang kami kirimkan ke alamat email Anda.",
46
+ "verify_page.subtitle": "Masukkan kode verifikasi Anda untuk melanjutkan.",
47
+ "verify_page.title": "Verifikasi Identitas Anda"
35
48
  };
36
49
  exports.default = id;
@@ -1,35 +1,48 @@
1
1
  const id = {
2
2
  "plugin.name": "Strapi Identity",
3
- "general.use_verification_code": "Gunakan aplikasi autentikator",
3
+ "admin.subtitle": "Setel ulang Autentikasi Dua Faktor untuk pengguna.",
4
+ "admin.title": "Autentikasi Dua Faktor",
5
+ "admin.warn-title": "Setel ulang 2FA untuk pengguna ini?",
6
+ "admin.warning": "Menyetel ulang Autentikasi Dua Faktor akan memungkinkan pengguna untuk mengaturnya kembali dengan perangkat baru. Tindakan ini tidak dapat dibatalkan.",
7
+ "email_otp.confirm_description": "Masukkan kode 6 digit yang dikirim ke {email}.",
8
+ "email_otp.disable_description": "Kami akan mengirimkan kode verifikasi 6 digit ke {email}. Masukkan untuk menonaktifkan Email OTP.",
9
+ "email_otp.disable_title": "Nonaktifkan Email OTP",
10
+ "email_otp.resend_code": "Kirim ulang kode",
11
+ "email_otp.send_code": "Kirim email verifikasi",
12
+ "email_otp.setup_description": "Kami akan mengirimkan kode verifikasi 6 digit ke {email}. Masukkan untuk mengaktifkan Email OTP.",
13
+ "email_otp.setup_title": "Aktifkan Email OTP",
4
14
  "general.use_recovery_code": "Gunakan kode pemulihan",
5
- "verify_page.title": "Verifikasi Identitas Anda",
6
- "verify_page.subtitle": "Masukkan kode verifikasi Anda untuk melanjutkan.",
7
- "verify_page.error": "Kode tidak valid. Silakan coba lagi.",
8
- "verify_page.submit": "Kirim Kode",
9
- "profile.title": "Autentikasi Dua Faktor",
10
- "profile.subtitle": "Tambahkan lapisan keamanan tambahan ke akun Anda.",
11
- "profile.toggle_label": "Aktifkan Autentikasi Dua Faktor",
12
- "profile.setup": "Siapkan Autentikasi Dua Faktor",
13
- "profile.recovery_codes": "Harap simpan kode pemulihan berikut di tempat yang aman. Setiap kode hanya dapat digunakan sekali untuk mengakses akun Anda jika Anda kehilangan akses ke aplikasi autentikator Anda.",
15
+ "general.use_verification_code": "Gunakan aplikasi autentikator",
16
+ "profile.disable_instruction": "Masukkan kode 6 digit dari aplikasi autentikator Anda untuk menonaktifkan Autentikasi Dua Faktor.",
17
+ "profile.disable_title": "Nonaktifkan Autentikasi Dua Faktor",
18
+ "profile.email_otp_disabled_hint": "Nonaktifkan aplikasi autentikator terlebih dahulu untuk mengaktifkan Email OTP.",
19
+ "profile.email_otp_label": "Aktifkan Email OTP",
20
+ "profile.enter_otp": "Masukkan kode 6 digit dari aplikasi autentikator Anda untuk mengonfirmasi.",
14
21
  "profile.recovery_codes_warning": "Jika Anda kehilangan aplikasi autentikator dan kode pemulihan Anda, Anda perlu menghubungi administrator untuk mendapatkan kembali akses ke akun Anda.",
22
+ "profile.recovery_codes": "Harap simpan kode pemulihan berikut di tempat yang aman. Setiap kode hanya dapat digunakan sekali untuk mengakses akun Anda jika Anda kehilangan akses ke aplikasi autentikator Anda.",
15
23
  "profile.scan_qr": "Anda memerlukan aplikasi autentikator untuk memindai kode QR di bawah ini.",
16
- "profile.enter_otp": "Masukkan kode 6 digit dari aplikasi autentikator Anda untuk mengonfirmasi.",
17
- "profile.disable_title": "Nonaktifkan Autentikasi Dua Faktor",
18
- "profile.disable_instruction": "Masukkan kode 6 digit dari aplikasi autentikator Anda untuk menonaktifkan Autentikasi Dua Faktor.",
19
- "settings.title": "Pengaturan Strapi Identity",
24
+ "profile.setup": "Siapkan Autentikasi Dua Faktor",
25
+ "profile.subtitle": "Tambahkan lapisan keamanan tambahan ke akun Anda.",
26
+ "profile.title": "Autentikasi Dua Faktor",
27
+ "profile.toggle_label": "Aktifkan Autentikasi Dua Faktor",
28
+ "settings.accessibility_message": "Pesan aksesibilitas",
20
29
  "settings.description": "Pengaturan untuk plugin Strapi Identity, memungkinkan Anda mengonfigurasi opsi autentikasi dan pengaturan keamanan.",
21
- "settings.enforced_mfa": "MFA Ditegakkan",
22
- "settings.name": "Strapi Identity",
23
30
  "settings.enabled_hint": "Aktifkan atau nonaktifkan Autentikasi Dua Faktor untuk semua pengguna.",
24
- "settings.enforce": "Wajibkan MFA",
25
31
  "settings.enforce_hint": "Wajibkan Autentikasi Multi-Faktor untuk semua pengguna. Jika diaktifkan, pengguna akan diminta untuk mengatur MFA pada login berikutnya.",
26
- "settings.issuer": "Nama Penerbit",
32
+ "settings.enforce": "Wajibkan MFA",
33
+ "settings.enforced_mfa": "MFA Ditegakkan",
27
34
  "settings.issuer_hint": "Ditampilkan di aplikasi MFA",
28
- "admin.title": "Autentikasi Dua Faktor",
29
- "admin.subtitle": "Setel ulang Autentikasi Dua Faktor untuk pengguna.",
30
- "admin.warn-title": "Setel ulang 2FA untuk pengguna ini?",
31
- "admin.warning": "Menyetel ulang Autentikasi Dua Faktor akan memungkinkan pengguna untuk mengaturnya kembali dengan perangkat baru. Tindakan ini tidak dapat dibatalkan.",
32
- "settings.warning": "Mematikan MFA akan memengaruhi semua pengguna. Harap tinjau pengaturan dengan cermat sebelum menyimpan."
35
+ "settings.issuer": "Nama Penerbit",
36
+ "settings.name": "Strapi Identity",
37
+ "settings.title": "Pengaturan Strapi Identity",
38
+ "settings.warning": "Mematikan MFA akan memengaruhi semua pengguna. Harap tinjau pengaturan dengan cermat sebelum menyimpan.",
39
+ "verify_page.error": "Kode tidak valid. Silakan coba lagi.",
40
+ "verify_page.resend_error": "Gagal mengirim ulang kode. Silakan coba lagi.",
41
+ "verify_page.resend_success": "Kode terkirim!",
42
+ "verify_page.submit": "Kirim Kode",
43
+ "verify_page.subtitle_email": "Masukkan kode yang kami kirimkan ke alamat email Anda.",
44
+ "verify_page.subtitle": "Masukkan kode verifikasi Anda untuk melanjutkan.",
45
+ "verify_page.title": "Verifikasi Identitas Anda"
33
46
  };
34
47
  export {
35
48
  id as default
@@ -1350,6 +1350,9 @@ const VerifyPage = ({ fallbackIcon }) => {
1350
1350
  const { formatMessage } = reactIntl.useIntl();
1351
1351
  const [error, setError] = React.useState(null);
1352
1352
  const [useRecoveryCode, setUseRecoveryCode] = React.useState(false);
1353
+ const [mfaType, setMfaType] = React.useState(null);
1354
+ const [resendLoading, setResendLoading] = React.useState(false);
1355
+ const [resendSuccess, setResendSuccess] = React.useState(false);
1353
1356
  const handleSubmit = async (event) => {
1354
1357
  event.preventDefault();
1355
1358
  const formData = new FormData(event.currentTarget);
@@ -1383,8 +1386,42 @@ const VerifyPage = ({ fallbackIcon }) => {
1383
1386
  const [name, value] = cookie.split("=");
1384
1387
  return name === "strapi_admin_mfa" ? value.trim() : acc;
1385
1388
  }, null);
1386
- if (auth?.token || !mfaToken) window.location.replace("/admin");
1389
+ if (auth?.token || !mfaToken) {
1390
+ window.location.replace("/admin");
1391
+ return;
1392
+ }
1393
+ try {
1394
+ const payloadBase64 = mfaToken.split(".")[1];
1395
+ const decoded = JSON.parse(atob(payloadBase64));
1396
+ setMfaType(decoded.mfaType || null);
1397
+ } catch {
1398
+ }
1387
1399
  }, [auth?.token]);
1400
+ const handleResend = async () => {
1401
+ setResendLoading(true);
1402
+ setResendSuccess(false);
1403
+ setError(null);
1404
+ try {
1405
+ const response = await fetch("/strapi-identity/verify/resend", {
1406
+ method: "POST",
1407
+ headers: { "Content-Type": "application/json" }
1408
+ });
1409
+ if (!response.ok) {
1410
+ const data = await response.json();
1411
+ throw new Error(data.error || "Failed to resend code");
1412
+ }
1413
+ setResendSuccess(true);
1414
+ } catch (err) {
1415
+ setError(
1416
+ formatMessage({
1417
+ id: getTranslation("verify_page.resend_error"),
1418
+ defaultMessage: "Failed to resend the code. Please try again."
1419
+ })
1420
+ );
1421
+ } finally {
1422
+ setResendLoading(false);
1423
+ }
1424
+ };
1388
1425
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1389
1426
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { tag: "header", justifyContent: "flex-end", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 6, paddingRight: admin.RESPONSIVE_DEFAULT_SPACING, children: /* @__PURE__ */ jsxRuntime.jsx(LocaleToggle, {}) }) }),
1390
1427
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1419,7 +1456,10 @@ const VerifyPage = ({ fallbackIcon }) => {
1419
1456
  textColor: "neutral600",
1420
1457
  textAlign: "center",
1421
1458
  display: "block",
1422
- children: formatMessage({
1459
+ children: mfaType === "email" ? formatMessage({
1460
+ id: getTranslation("verify_page.subtitle_email"),
1461
+ defaultMessage: "Enter the code we sent to your email address."
1462
+ }) : formatMessage({
1423
1463
  id: getTranslation("verify_page.subtitle"),
1424
1464
  defaultMessage: "Enter your verification code to continue."
1425
1465
  })
@@ -1459,7 +1499,22 @@ const VerifyPage = ({ fallbackIcon }) => {
1459
1499
  ]
1460
1500
  }
1461
1501
  ),
1462
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 4, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "ghost", onClick: () => setUseRecoveryCode((prev) => !prev), children: useRecoveryCode ? formatMessage({
1502
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 4, children: mfaType === "email" ? /* @__PURE__ */ jsxRuntime.jsx(
1503
+ designSystem.Button,
1504
+ {
1505
+ variant: "ghost",
1506
+ onClick: handleResend,
1507
+ loading: resendLoading,
1508
+ disabled: resendLoading,
1509
+ children: resendSuccess ? formatMessage({
1510
+ id: getTranslation("verify_page.resend_success"),
1511
+ defaultMessage: "Code sent!"
1512
+ }) : formatMessage({
1513
+ id: getTranslation("email_otp.resend_code"),
1514
+ defaultMessage: "Resend code"
1515
+ })
1516
+ }
1517
+ ) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "ghost", onClick: () => setUseRecoveryCode((prev) => !prev), children: useRecoveryCode ? formatMessage({
1463
1518
  id: getTranslation("general.use_verification_code"),
1464
1519
  defaultMessage: "Use verification code"
1465
1520
  }) : formatMessage({
@@ -1485,12 +1540,9 @@ const plugin = {
1485
1540
  defaultMessage: "Strapi Identity Settings"
1486
1541
  },
1487
1542
  id: "strapi-identity-settings",
1488
- to: `/settings/${PLUGIN_ID}`,
1489
- Component: async () => Promise.resolve().then(() => require("./SettingsPage-DyF7YbsX.js")),
1490
- permissions: [
1491
- { action: "plugin::strapi-identity.settings.read" },
1492
- { action: "plugin::strapi-identity.settings.read" }
1493
- ]
1543
+ to: `/${PLUGIN_ID}`,
1544
+ Component: () => Promise.resolve().then(() => require("./SettingsPage-DulEjadb.js")),
1545
+ permissions: [{ action: "plugin::strapi-identity.settings.update" }]
1494
1546
  });
1495
1547
  app.addMiddlewares([mfaRedirect]);
1496
1548
  const injections = strapiAdminPortal.initialiseInjections(app);
@@ -1498,13 +1550,14 @@ const plugin = {
1498
1550
  id: "profile-toggle",
1499
1551
  route: "/admin/me",
1500
1552
  selector: '#main-content form[method="put"] > :nth-child(2) > div > div > div:nth-child(2)',
1501
- Component: async () => Promise.resolve().then(() => require("./ProfileToggle-BFmIWCrN.js"))
1553
+ Component: () => Promise.resolve().then(() => require("./ProfileToggle-H31GHNDA.js"))
1502
1554
  });
1503
1555
  injections.registerRoute({
1504
1556
  id: "admin-reset",
1505
1557
  route: "/admin/settings/users/:id",
1506
1558
  selector: '#main-content form[method="put"] > :nth-child(2) > div > div:nth-child(2)',
1507
- Component: async () => Promise.resolve().then(() => require("./AdminReset-C0QibZXW.js"))
1559
+ permissions: [{ action: "plugin::strapi-identity.settings.update" }],
1560
+ Component: () => Promise.resolve().then(() => require("./AdminReset-QClQP2Il.js"))
1508
1561
  });
1509
1562
  InjectVerify(app);
1510
1563
  },
@@ -1512,7 +1565,7 @@ const plugin = {
1512
1565
  return Promise.all(
1513
1566
  locales.map(async (locale) => {
1514
1567
  try {
1515
- const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => Promise.resolve().then(() => require("./ar-i2eiMZkz.js")), "./translations/ca.json": () => Promise.resolve().then(() => require("./ca-BVpGzY8r.js")), "./translations/cs.json": () => Promise.resolve().then(() => require("./cs-_PZVkwt0.js")), "./translations/de.json": () => Promise.resolve().then(() => require("./de-GItli7en.js")), "./translations/dk.json": () => Promise.resolve().then(() => require("./dk-B7EOsAdU.js")), "./translations/en.json": () => Promise.resolve().then(() => require("./en-D4KP9t1Y.js")), "./translations/es.json": () => Promise.resolve().then(() => require("./es-CHwF7YK-.js")), "./translations/eu.json": () => Promise.resolve().then(() => require("./eu-DvdbwE5E.js")), "./translations/fr.json": () => Promise.resolve().then(() => require("./fr-CbCW6hVD.js")), "./translations/gu.json": () => Promise.resolve().then(() => require("./gu-D2LgVfMp.js")), "./translations/he.json": () => Promise.resolve().then(() => require("./he-DnhYpbvN.js")), "./translations/hi.json": () => Promise.resolve().then(() => require("./hi-DDD2E3A3.js")), "./translations/hu.json": () => Promise.resolve().then(() => require("./hu-C1_YkZHU.js")), "./translations/id.json": () => Promise.resolve().then(() => require("./id-u3wVE6Rv.js")), "./translations/it.json": () => Promise.resolve().then(() => require("./it-CDw6dG9Z.js")), "./translations/ja.json": () => Promise.resolve().then(() => require("./ja-CbMXy2ym.js")), "./translations/ko.json": () => Promise.resolve().then(() => require("./ko-BEtJPpfJ.js")), "./translations/ml.json": () => Promise.resolve().then(() => require("./ml-0fR2_MmA.js")), "./translations/ms.json": () => Promise.resolve().then(() => require("./ms-DLvuGSlk.js")), "./translations/nl.json": () => Promise.resolve().then(() => require("./nl-wj6kn642.js")), "./translations/no.json": () => Promise.resolve().then(() => require("./no-DVBgWt8q.js")), "./translations/pl.json": () => Promise.resolve().then(() => require("./pl-B2ghisbC.js")), "./translations/pt-BR.json": () => Promise.resolve().then(() => require("./pt-BR-CfgNaB1-.js")), "./translations/pt.json": () => Promise.resolve().then(() => require("./pt-DKe8rRWa.js")), "./translations/ru.json": () => Promise.resolve().then(() => require("./ru-BFSm68HC.js")), "./translations/sa.json": () => Promise.resolve().then(() => require("./sa-BOPaqylt.js")), "./translations/sk.json": () => Promise.resolve().then(() => require("./sk-Dd-S1612.js")), "./translations/sv.json": () => Promise.resolve().then(() => require("./sv-lg64Cw78.js")), "./translations/th.json": () => Promise.resolve().then(() => require("./th-DPbm5NrX.js")), "./translations/tr.json": () => Promise.resolve().then(() => require("./tr-Bm1QZr4v.js")), "./translations/uk.json": () => Promise.resolve().then(() => require("./uk-FARzIGx4.js")), "./translations/vi.json": () => Promise.resolve().then(() => require("./vi-Bi9B6eTY.js")), "./translations/zh-Hans.json": () => Promise.resolve().then(() => require("./zh-Hans-BwwKCR6_.js")), "./translations/zh.json": () => Promise.resolve().then(() => require("./zh-DkEx28ZA.js")) }), `./translations/${locale}.json`, 3);
1568
+ const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => Promise.resolve().then(() => require("./ar-BYnI7Tsa.js")), "./translations/ca.json": () => Promise.resolve().then(() => require("./ca-sBRHuaFU.js")), "./translations/cs.json": () => Promise.resolve().then(() => require("./cs-gU7KP3Lx.js")), "./translations/de.json": () => Promise.resolve().then(() => require("./de-CrlCAUuf.js")), "./translations/dk.json": () => Promise.resolve().then(() => require("./dk-BNC3WUzY.js")), "./translations/en.json": () => Promise.resolve().then(() => require("./en-DBj0AD5g.js")), "./translations/es.json": () => Promise.resolve().then(() => require("./es-D5Sn41_H.js")), "./translations/eu.json": () => Promise.resolve().then(() => require("./eu-Qr3RvDPW.js")), "./translations/fr.json": () => Promise.resolve().then(() => require("./fr-C4pmkPYn.js")), "./translations/gu.json": () => Promise.resolve().then(() => require("./gu-BMZL76zM.js")), "./translations/he.json": () => Promise.resolve().then(() => require("./he-H6iBa45A.js")), "./translations/hi.json": () => Promise.resolve().then(() => require("./hi-Be8rPk7I.js")), "./translations/hu.json": () => Promise.resolve().then(() => require("./hu-DKp6kOmc.js")), "./translations/id.json": () => Promise.resolve().then(() => require("./id-DO0bwFgY.js")), "./translations/it.json": () => Promise.resolve().then(() => require("./it-Df6-7-M7.js")), "./translations/ja.json": () => Promise.resolve().then(() => require("./ja-HuAq9ZwT.js")), "./translations/ko.json": () => Promise.resolve().then(() => require("./ko-S9k8KA8K.js")), "./translations/ml.json": () => Promise.resolve().then(() => require("./ml-Bh9GGqcW.js")), "./translations/ms.json": () => Promise.resolve().then(() => require("./ms-hO5YeEg4.js")), "./translations/nl.json": () => Promise.resolve().then(() => require("./nl-BF98NBwL.js")), "./translations/no.json": () => Promise.resolve().then(() => require("./no-bl1OXlfa.js")), "./translations/pl.json": () => Promise.resolve().then(() => require("./pl-DCnOWIDw.js")), "./translations/pt-BR.json": () => Promise.resolve().then(() => require("./pt-BR-D2_UrxTp.js")), "./translations/pt.json": () => Promise.resolve().then(() => require("./pt-DIu8RT_X.js")), "./translations/ru.json": () => Promise.resolve().then(() => require("./ru-BccMCf0l.js")), "./translations/sa.json": () => Promise.resolve().then(() => require("./sa-D3A-fo85.js")), "./translations/sk.json": () => Promise.resolve().then(() => require("./sk-uSLC6KhO.js")), "./translations/sv.json": () => Promise.resolve().then(() => require("./sv-CuKk5tE-.js")), "./translations/th.json": () => Promise.resolve().then(() => require("./th-Bv3NKkYO.js")), "./translations/tr.json": () => Promise.resolve().then(() => require("./tr-Bmvs-Hx-.js")), "./translations/uk.json": () => Promise.resolve().then(() => require("./uk-BDxn-EZU.js")), "./translations/vi.json": () => Promise.resolve().then(() => require("./vi-F_mqQCme.js")), "./translations/zh-Hans.json": () => Promise.resolve().then(() => require("./zh-Hans-4BhSwSQw.js")), "./translations/zh.json": () => Promise.resolve().then(() => require("./zh-CFZJPG5N.js")) }), `./translations/${locale}.json`, 3);
1516
1569
  const newData = {};
1517
1570
  const keys = Object.keys(data);
1518
1571
  for (const key of keys) {
@@ -1330,6 +1330,9 @@ const VerifyPage = ({ fallbackIcon }) => {
1330
1330
  const { formatMessage } = useIntl();
1331
1331
  const [error, setError] = useState(null);
1332
1332
  const [useRecoveryCode, setUseRecoveryCode] = useState(false);
1333
+ const [mfaType, setMfaType] = useState(null);
1334
+ const [resendLoading, setResendLoading] = useState(false);
1335
+ const [resendSuccess, setResendSuccess] = useState(false);
1333
1336
  const handleSubmit = async (event) => {
1334
1337
  event.preventDefault();
1335
1338
  const formData = new FormData(event.currentTarget);
@@ -1363,8 +1366,42 @@ const VerifyPage = ({ fallbackIcon }) => {
1363
1366
  const [name, value] = cookie.split("=");
1364
1367
  return name === "strapi_admin_mfa" ? value.trim() : acc;
1365
1368
  }, null);
1366
- if (auth?.token || !mfaToken) window.location.replace("/admin");
1369
+ if (auth?.token || !mfaToken) {
1370
+ window.location.replace("/admin");
1371
+ return;
1372
+ }
1373
+ try {
1374
+ const payloadBase64 = mfaToken.split(".")[1];
1375
+ const decoded = JSON.parse(atob(payloadBase64));
1376
+ setMfaType(decoded.mfaType || null);
1377
+ } catch {
1378
+ }
1367
1379
  }, [auth?.token]);
1380
+ const handleResend = async () => {
1381
+ setResendLoading(true);
1382
+ setResendSuccess(false);
1383
+ setError(null);
1384
+ try {
1385
+ const response = await fetch("/strapi-identity/verify/resend", {
1386
+ method: "POST",
1387
+ headers: { "Content-Type": "application/json" }
1388
+ });
1389
+ if (!response.ok) {
1390
+ const data = await response.json();
1391
+ throw new Error(data.error || "Failed to resend code");
1392
+ }
1393
+ setResendSuccess(true);
1394
+ } catch (err) {
1395
+ setError(
1396
+ formatMessage({
1397
+ id: getTranslation("verify_page.resend_error"),
1398
+ defaultMessage: "Failed to resend the code. Please try again."
1399
+ })
1400
+ );
1401
+ } finally {
1402
+ setResendLoading(false);
1403
+ }
1404
+ };
1368
1405
  return /* @__PURE__ */ jsxs("div", { children: [
1369
1406
  /* @__PURE__ */ jsx(Flex, { tag: "header", justifyContent: "flex-end", children: /* @__PURE__ */ jsx(Box, { paddingTop: 6, paddingRight: RESPONSIVE_DEFAULT_SPACING, children: /* @__PURE__ */ jsx(LocaleToggle, {}) }) }),
1370
1407
  /* @__PURE__ */ jsx(
@@ -1399,7 +1436,10 @@ const VerifyPage = ({ fallbackIcon }) => {
1399
1436
  textColor: "neutral600",
1400
1437
  textAlign: "center",
1401
1438
  display: "block",
1402
- children: formatMessage({
1439
+ children: mfaType === "email" ? formatMessage({
1440
+ id: getTranslation("verify_page.subtitle_email"),
1441
+ defaultMessage: "Enter the code we sent to your email address."
1442
+ }) : formatMessage({
1403
1443
  id: getTranslation("verify_page.subtitle"),
1404
1444
  defaultMessage: "Enter your verification code to continue."
1405
1445
  })
@@ -1439,7 +1479,22 @@ const VerifyPage = ({ fallbackIcon }) => {
1439
1479
  ]
1440
1480
  }
1441
1481
  ),
1442
- /* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(Box, { paddingTop: 4, children: /* @__PURE__ */ jsx(Button, { variant: "ghost", onClick: () => setUseRecoveryCode((prev) => !prev), children: useRecoveryCode ? formatMessage({
1482
+ /* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(Box, { paddingTop: 4, children: mfaType === "email" ? /* @__PURE__ */ jsx(
1483
+ Button,
1484
+ {
1485
+ variant: "ghost",
1486
+ onClick: handleResend,
1487
+ loading: resendLoading,
1488
+ disabled: resendLoading,
1489
+ children: resendSuccess ? formatMessage({
1490
+ id: getTranslation("verify_page.resend_success"),
1491
+ defaultMessage: "Code sent!"
1492
+ }) : formatMessage({
1493
+ id: getTranslation("email_otp.resend_code"),
1494
+ defaultMessage: "Resend code"
1495
+ })
1496
+ }
1497
+ ) : /* @__PURE__ */ jsx(Button, { variant: "ghost", onClick: () => setUseRecoveryCode((prev) => !prev), children: useRecoveryCode ? formatMessage({
1443
1498
  id: getTranslation("general.use_verification_code"),
1444
1499
  defaultMessage: "Use verification code"
1445
1500
  }) : formatMessage({
@@ -1465,12 +1520,9 @@ const plugin = {
1465
1520
  defaultMessage: "Strapi Identity Settings"
1466
1521
  },
1467
1522
  id: "strapi-identity-settings",
1468
- to: `/settings/${PLUGIN_ID}`,
1469
- Component: async () => import("./SettingsPage-OwMik_IK.mjs"),
1470
- permissions: [
1471
- { action: "plugin::strapi-identity.settings.read" },
1472
- { action: "plugin::strapi-identity.settings.read" }
1473
- ]
1523
+ to: `/${PLUGIN_ID}`,
1524
+ Component: () => import("./SettingsPage-DgPikS3m.mjs"),
1525
+ permissions: [{ action: "plugin::strapi-identity.settings.update" }]
1474
1526
  });
1475
1527
  app.addMiddlewares([mfaRedirect]);
1476
1528
  const injections = initialiseInjections(app);
@@ -1478,13 +1530,14 @@ const plugin = {
1478
1530
  id: "profile-toggle",
1479
1531
  route: "/admin/me",
1480
1532
  selector: '#main-content form[method="put"] > :nth-child(2) > div > div > div:nth-child(2)',
1481
- Component: async () => import("./ProfileToggle-DQeXCx34.mjs")
1533
+ Component: () => import("./ProfileToggle-gPuH6dGP.mjs")
1482
1534
  });
1483
1535
  injections.registerRoute({
1484
1536
  id: "admin-reset",
1485
1537
  route: "/admin/settings/users/:id",
1486
1538
  selector: '#main-content form[method="put"] > :nth-child(2) > div > div:nth-child(2)',
1487
- Component: async () => import("./AdminReset-H453s-DE.mjs")
1539
+ permissions: [{ action: "plugin::strapi-identity.settings.update" }],
1540
+ Component: () => import("./AdminReset-CCGgw-0k.mjs")
1488
1541
  });
1489
1542
  InjectVerify(app);
1490
1543
  },
@@ -1492,7 +1545,7 @@ const plugin = {
1492
1545
  return Promise.all(
1493
1546
  locales.map(async (locale) => {
1494
1547
  try {
1495
- const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => import("./ar-BXaam37U.mjs"), "./translations/ca.json": () => import("./ca-DZ9DbEcQ.mjs"), "./translations/cs.json": () => import("./cs-Gok16KLy.mjs"), "./translations/de.json": () => import("./de-BuYn1AYX.mjs"), "./translations/dk.json": () => import("./dk-CI64Xmli.mjs"), "./translations/en.json": () => import("./en-B_vJwdfS.mjs"), "./translations/es.json": () => import("./es-CqJcXo4j.mjs"), "./translations/eu.json": () => import("./eu-D-snytN8.mjs"), "./translations/fr.json": () => import("./fr-Bt6sS5GX.mjs"), "./translations/gu.json": () => import("./gu-3wJbbAmw.mjs"), "./translations/he.json": () => import("./he-Bjv7eygt.mjs"), "./translations/hi.json": () => import("./hi-CNiDezU7.mjs"), "./translations/hu.json": () => import("./hu-aLaIWmGw.mjs"), "./translations/id.json": () => import("./id-C8WRgGm1.mjs"), "./translations/it.json": () => import("./it-CjoRoJj1.mjs"), "./translations/ja.json": () => import("./ja-CewucIUY.mjs"), "./translations/ko.json": () => import("./ko-D-kAxDtd.mjs"), "./translations/ml.json": () => import("./ml-DR3AaofF.mjs"), "./translations/ms.json": () => import("./ms-COHLS5e5.mjs"), "./translations/nl.json": () => import("./nl-DVtHsM2H.mjs"), "./translations/no.json": () => import("./no-D_0yjyCy.mjs"), "./translations/pl.json": () => import("./pl-C3GNxjVX.mjs"), "./translations/pt-BR.json": () => import("./pt-BR-BbKV8YoX.mjs"), "./translations/pt.json": () => import("./pt-z4K3cCjf.mjs"), "./translations/ru.json": () => import("./ru-C85izLFa.mjs"), "./translations/sa.json": () => import("./sa-B1XoTTrE.mjs"), "./translations/sk.json": () => import("./sk-C48lUPuC.mjs"), "./translations/sv.json": () => import("./sv-BLma_kJl.mjs"), "./translations/th.json": () => import("./th-BJEu5n7q.mjs"), "./translations/tr.json": () => import("./tr-DkIUODKq.mjs"), "./translations/uk.json": () => import("./uk-D7ArtSe3.mjs"), "./translations/vi.json": () => import("./vi-DS0yslPP.mjs"), "./translations/zh-Hans.json": () => import("./zh-Hans-DP2xZyda.mjs"), "./translations/zh.json": () => import("./zh-DwCvIPSz.mjs") }), `./translations/${locale}.json`, 3);
1548
+ const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => import("./ar-DwZqj0qM.mjs"), "./translations/ca.json": () => import("./ca-aKVVc8iQ.mjs"), "./translations/cs.json": () => import("./cs--prflMHS.mjs"), "./translations/de.json": () => import("./de-BT25lv_6.mjs"), "./translations/dk.json": () => import("./dk-Ck3AQYU7.mjs"), "./translations/en.json": () => import("./en-9qzlpde0.mjs"), "./translations/es.json": () => import("./es-lh6XoPb7.mjs"), "./translations/eu.json": () => import("./eu-Cuz6ijBX.mjs"), "./translations/fr.json": () => import("./fr-ChlDcZsG.mjs"), "./translations/gu.json": () => import("./gu-B6zyD1bW.mjs"), "./translations/he.json": () => import("./he-C5V-qZCX.mjs"), "./translations/hi.json": () => import("./hi-czhOWo6-.mjs"), "./translations/hu.json": () => import("./hu-NbZ3aiYV.mjs"), "./translations/id.json": () => import("./id-NH9PvcR5.mjs"), "./translations/it.json": () => import("./it-Cmrey6tg.mjs"), "./translations/ja.json": () => import("./ja-DH3KMqOL.mjs"), "./translations/ko.json": () => import("./ko-DPN28RE8.mjs"), "./translations/ml.json": () => import("./ml-MsHNacm6.mjs"), "./translations/ms.json": () => import("./ms-TjHAaxTd.mjs"), "./translations/nl.json": () => import("./nl-BLILZU8-.mjs"), "./translations/no.json": () => import("./no-BtVZ-siy.mjs"), "./translations/pl.json": () => import("./pl-DCSB6LwZ.mjs"), "./translations/pt-BR.json": () => import("./pt-BR-CeLqmj88.mjs"), "./translations/pt.json": () => import("./pt-fgjdOyW5.mjs"), "./translations/ru.json": () => import("./ru-B_hlpAyP.mjs"), "./translations/sa.json": () => import("./sa-BtuJ_I1t.mjs"), "./translations/sk.json": () => import("./sk-mmuTFlCK.mjs"), "./translations/sv.json": () => import("./sv-BlaHc5ax.mjs"), "./translations/th.json": () => import("./th-BwyhFaeE.mjs"), "./translations/tr.json": () => import("./tr-BLocNlbZ.mjs"), "./translations/uk.json": () => import("./uk-CyZ10xtq.mjs"), "./translations/vi.json": () => import("./vi-Bx_UJ8up.mjs"), "./translations/zh-Hans.json": () => import("./zh-Hans-s7G2GUHU.mjs"), "./translations/zh.json": () => import("./zh-CjJdRa3l.mjs") }), `./translations/${locale}.json`, 3);
1496
1549
  const newData = {};
1497
1550
  const keys = Object.keys(data);
1498
1551
  for (const key of keys) {
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const index = require("./index-BXZI8nMZ.js");
3
+ const index = require("./index-C9K2h5UC.js");
4
4
  require("strapi-admin-portal");
5
5
  exports.default = index.plugin;