keycloakify 11.12.0 → 11.13.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 (144) hide show
  1. package/bin/main.js +1 -0
  2. package/bin/shared/constants.d.ts +1 -1
  3. package/bin/shared/constants.js +1 -0
  4. package/bin/shared/constants.js.map +1 -1
  5. package/login/DefaultPage.js +3 -0
  6. package/login/DefaultPage.js.map +1 -1
  7. package/login/KcContext/KcContext.d.ts +5 -1
  8. package/login/KcContext/KcContext.js.map +1 -1
  9. package/login/KcContext/getKcContextMock.d.ts +1 -1
  10. package/login/KcContext/kcContextMocks.d.ts +1 -1
  11. package/login/KcContext/kcContextMocks.js +1 -0
  12. package/login/KcContext/kcContextMocks.js.map +1 -1
  13. package/login/i18n/messages_defaultSet/ar.d.ts +2 -0
  14. package/login/i18n/messages_defaultSet/ar.js +3 -1
  15. package/login/i18n/messages_defaultSet/ar.js.map +1 -1
  16. package/login/i18n/messages_defaultSet/ca.d.ts +2 -0
  17. package/login/i18n/messages_defaultSet/ca.js +3 -1
  18. package/login/i18n/messages_defaultSet/ca.js.map +1 -1
  19. package/login/i18n/messages_defaultSet/cs.d.ts +2 -0
  20. package/login/i18n/messages_defaultSet/cs.js +3 -1
  21. package/login/i18n/messages_defaultSet/cs.js.map +1 -1
  22. package/login/i18n/messages_defaultSet/da.d.ts +2 -0
  23. package/login/i18n/messages_defaultSet/da.js +3 -1
  24. package/login/i18n/messages_defaultSet/da.js.map +1 -1
  25. package/login/i18n/messages_defaultSet/de.d.ts +2 -0
  26. package/login/i18n/messages_defaultSet/de.js +3 -1
  27. package/login/i18n/messages_defaultSet/de.js.map +1 -1
  28. package/login/i18n/messages_defaultSet/el.d.ts +2 -0
  29. package/login/i18n/messages_defaultSet/el.js +3 -1
  30. package/login/i18n/messages_defaultSet/el.js.map +1 -1
  31. package/login/i18n/messages_defaultSet/en.d.ts +2 -0
  32. package/login/i18n/messages_defaultSet/en.js +3 -1
  33. package/login/i18n/messages_defaultSet/en.js.map +1 -1
  34. package/login/i18n/messages_defaultSet/es.d.ts +2 -0
  35. package/login/i18n/messages_defaultSet/es.js +3 -1
  36. package/login/i18n/messages_defaultSet/es.js.map +1 -1
  37. package/login/i18n/messages_defaultSet/fa.d.ts +2 -0
  38. package/login/i18n/messages_defaultSet/fa.js +3 -1
  39. package/login/i18n/messages_defaultSet/fa.js.map +1 -1
  40. package/login/i18n/messages_defaultSet/fi.d.ts +2 -0
  41. package/login/i18n/messages_defaultSet/fi.js +3 -1
  42. package/login/i18n/messages_defaultSet/fi.js.map +1 -1
  43. package/login/i18n/messages_defaultSet/fr.d.ts +2 -0
  44. package/login/i18n/messages_defaultSet/fr.js +3 -1
  45. package/login/i18n/messages_defaultSet/fr.js.map +1 -1
  46. package/login/i18n/messages_defaultSet/hu.d.ts +2 -0
  47. package/login/i18n/messages_defaultSet/hu.js +3 -1
  48. package/login/i18n/messages_defaultSet/hu.js.map +1 -1
  49. package/login/i18n/messages_defaultSet/index.d.ts +20 -0
  50. package/login/i18n/messages_defaultSet/it.d.ts +2 -0
  51. package/login/i18n/messages_defaultSet/it.js +3 -1
  52. package/login/i18n/messages_defaultSet/it.js.map +1 -1
  53. package/login/i18n/messages_defaultSet/ja.d.ts +2 -0
  54. package/login/i18n/messages_defaultSet/ja.js +3 -1
  55. package/login/i18n/messages_defaultSet/ja.js.map +1 -1
  56. package/login/i18n/messages_defaultSet/ka.d.ts +2 -0
  57. package/login/i18n/messages_defaultSet/ka.js +3 -1
  58. package/login/i18n/messages_defaultSet/ka.js.map +1 -1
  59. package/login/i18n/messages_defaultSet/lt.d.ts +2 -0
  60. package/login/i18n/messages_defaultSet/lt.js +3 -1
  61. package/login/i18n/messages_defaultSet/lt.js.map +1 -1
  62. package/login/i18n/messages_defaultSet/lv.d.ts +2 -0
  63. package/login/i18n/messages_defaultSet/lv.js +3 -1
  64. package/login/i18n/messages_defaultSet/lv.js.map +1 -1
  65. package/login/i18n/messages_defaultSet/nl.d.ts +2 -0
  66. package/login/i18n/messages_defaultSet/nl.js +3 -1
  67. package/login/i18n/messages_defaultSet/nl.js.map +1 -1
  68. package/login/i18n/messages_defaultSet/no.d.ts +2 -0
  69. package/login/i18n/messages_defaultSet/no.js +3 -1
  70. package/login/i18n/messages_defaultSet/no.js.map +1 -1
  71. package/login/i18n/messages_defaultSet/pl.d.ts +2 -0
  72. package/login/i18n/messages_defaultSet/pl.js +3 -1
  73. package/login/i18n/messages_defaultSet/pl.js.map +1 -1
  74. package/login/i18n/messages_defaultSet/pt-BR.d.ts +2 -0
  75. package/login/i18n/messages_defaultSet/pt-BR.js +3 -1
  76. package/login/i18n/messages_defaultSet/pt-BR.js.map +1 -1
  77. package/login/i18n/messages_defaultSet/pt.d.ts +2 -0
  78. package/login/i18n/messages_defaultSet/pt.js +3 -1
  79. package/login/i18n/messages_defaultSet/pt.js.map +1 -1
  80. package/login/i18n/messages_defaultSet/ru.d.ts +2 -0
  81. package/login/i18n/messages_defaultSet/ru.js +3 -1
  82. package/login/i18n/messages_defaultSet/ru.js.map +1 -1
  83. package/login/i18n/messages_defaultSet/sk.d.ts +2 -0
  84. package/login/i18n/messages_defaultSet/sk.js +3 -1
  85. package/login/i18n/messages_defaultSet/sk.js.map +1 -1
  86. package/login/i18n/messages_defaultSet/sv.d.ts +2 -0
  87. package/login/i18n/messages_defaultSet/sv.js +3 -1
  88. package/login/i18n/messages_defaultSet/sv.js.map +1 -1
  89. package/login/i18n/messages_defaultSet/th.d.ts +2 -0
  90. package/login/i18n/messages_defaultSet/th.js +3 -1
  91. package/login/i18n/messages_defaultSet/th.js.map +1 -1
  92. package/login/i18n/messages_defaultSet/tr.d.ts +2 -0
  93. package/login/i18n/messages_defaultSet/tr.js +3 -1
  94. package/login/i18n/messages_defaultSet/tr.js.map +1 -1
  95. package/login/i18n/messages_defaultSet/uk.d.ts +2 -0
  96. package/login/i18n/messages_defaultSet/uk.js +3 -1
  97. package/login/i18n/messages_defaultSet/uk.js.map +1 -1
  98. package/login/i18n/messages_defaultSet/zh-CN.d.ts +2 -0
  99. package/login/i18n/messages_defaultSet/zh-CN.js +3 -1
  100. package/login/i18n/messages_defaultSet/zh-CN.js.map +1 -1
  101. package/login/i18n/messages_defaultSet/zh-TW.d.ts +2 -0
  102. package/login/i18n/messages_defaultSet/zh-TW.js +3 -1
  103. package/login/i18n/messages_defaultSet/zh-TW.js.map +1 -1
  104. package/login/pages/LinkIdpAction.d.ts +7 -0
  105. package/login/pages/LinkIdpAction.js +13 -0
  106. package/login/pages/LinkIdpAction.js.map +1 -0
  107. package/package.json +6 -1
  108. package/src/bin/shared/constants.ts +1 -0
  109. package/src/login/DefaultPage.tsx +3 -0
  110. package/src/login/KcContext/KcContext.ts +6 -0
  111. package/src/login/KcContext/kcContextMocks.ts +5 -0
  112. package/src/login/i18n/messages_defaultSet/ar.ts +3 -1
  113. package/src/login/i18n/messages_defaultSet/ca.ts +3 -1
  114. package/src/login/i18n/messages_defaultSet/cs.ts +3 -1
  115. package/src/login/i18n/messages_defaultSet/da.ts +3 -1
  116. package/src/login/i18n/messages_defaultSet/de.ts +3 -1
  117. package/src/login/i18n/messages_defaultSet/el.ts +3 -1
  118. package/src/login/i18n/messages_defaultSet/en.ts +3 -1
  119. package/src/login/i18n/messages_defaultSet/es.ts +3 -1
  120. package/src/login/i18n/messages_defaultSet/fa.ts +3 -1
  121. package/src/login/i18n/messages_defaultSet/fi.ts +3 -1
  122. package/src/login/i18n/messages_defaultSet/fr.ts +3 -1
  123. package/src/login/i18n/messages_defaultSet/hu.ts +3 -1
  124. package/src/login/i18n/messages_defaultSet/it.ts +3 -1
  125. package/src/login/i18n/messages_defaultSet/ja.ts +3 -1
  126. package/src/login/i18n/messages_defaultSet/ka.ts +3 -1
  127. package/src/login/i18n/messages_defaultSet/lt.ts +3 -1
  128. package/src/login/i18n/messages_defaultSet/lv.ts +3 -1
  129. package/src/login/i18n/messages_defaultSet/nl.ts +3 -1
  130. package/src/login/i18n/messages_defaultSet/no.ts +3 -1
  131. package/src/login/i18n/messages_defaultSet/pl.ts +3 -1
  132. package/src/login/i18n/messages_defaultSet/pt-BR.ts +3 -1
  133. package/src/login/i18n/messages_defaultSet/pt.ts +3 -1
  134. package/src/login/i18n/messages_defaultSet/ru.ts +3 -1
  135. package/src/login/i18n/messages_defaultSet/sk.ts +3 -1
  136. package/src/login/i18n/messages_defaultSet/sv.ts +3 -1
  137. package/src/login/i18n/messages_defaultSet/th.ts +3 -1
  138. package/src/login/i18n/messages_defaultSet/tr.ts +3 -1
  139. package/src/login/i18n/messages_defaultSet/uk.ts +3 -1
  140. package/src/login/i18n/messages_defaultSet/zh-CN.ts +3 -1
  141. package/src/login/i18n/messages_defaultSet/zh-TW.ts +3 -1
  142. package/src/login/pages/LinkIdpAction.tsx +53 -0
  143. package/stories/login/pages/LinkIdpAction.stories.tsx +36 -0
  144. package/vite-plugin/index.js +1 -0
@@ -34,6 +34,7 @@ export const LOGIN_THEME_PAGE_IDS = [
34
34
  "login-otp.ftl",
35
35
  "login-update-profile.ftl",
36
36
  "login-update-password.ftl",
37
+ "link-idp-action.ftl",
37
38
  "login-idp-link-confirm.ftl",
38
39
  "login-idp-link-email.ftl",
39
40
  "login-page-expired.ftl",
@@ -22,6 +22,7 @@ const LoginUsername = lazy(() => import("keycloakify/login/pages/LoginUsername")
22
22
  const WebauthnAuthenticate = lazy(() => import("keycloakify/login/pages/WebauthnAuthenticate"));
23
23
  const WebauthnRegister = lazy(() => import("keycloakify/login/pages/WebauthnRegister"));
24
24
  const LoginUpdatePassword = lazy(() => import("keycloakify/login/pages/LoginUpdatePassword"));
25
+ const LinkIdpAction = lazy(() => import("keycloakify/login/pages/LinkIdpAction"));
25
26
  const LoginUpdateProfile = lazy(() => import("keycloakify/login/pages/LoginUpdateProfile"));
26
27
  const LoginIdpLinkConfirm = lazy(() => import("keycloakify/login/pages/LoginIdpLinkConfirm"));
27
28
  const LoginPageExpired = lazy(() => import("keycloakify/login/pages/LoginPageExpired"));
@@ -87,6 +88,8 @@ export default function DefaultPage(props: DefaultPageProps) {
87
88
  return <WebauthnRegister kcContext={kcContext} {...rest} />;
88
89
  case "login-update-password.ftl":
89
90
  return <LoginUpdatePassword kcContext={kcContext} {...rest} />;
91
+ case "link-idp-action.ftl":
92
+ return <LinkIdpAction kcContext={kcContext} {...rest} />;
90
93
  case "login-update-profile.ftl":
91
94
  return <LoginUpdateProfile kcContext={kcContext} {...rest} />;
92
95
  case "login-idp-link-confirm.ftl":
@@ -41,6 +41,7 @@ export type KcContext =
41
41
  | KcContext.WebauthnRegister
42
42
  | KcContext.LoginPassword
43
43
  | KcContext.LoginUpdatePassword
44
+ | KcContext.LinkIdpAction
44
45
  | KcContext.LoginUpdateProfile
45
46
  | KcContext.LoginIdpLinkConfirm
46
47
  | KcContext.LoginIdpLinkEmail
@@ -441,6 +442,11 @@ export declare namespace KcContext {
441
442
  pageId: "login-update-password.ftl";
442
443
  };
443
444
 
445
+ export type LinkIdpAction = Common & {
446
+ pageId: "link-idp-action.ftl";
447
+ idpDisplayName: string;
448
+ };
449
+
444
450
  export type LoginIdpLinkConfirm = Common & {
445
451
  pageId: "login-idp-link-confirm.ftl";
446
452
  idpAlias: string;
@@ -402,6 +402,11 @@ export const kcContextMocks = [
402
402
  ...kcContextCommonMock,
403
403
  pageId: "login-update-password.ftl"
404
404
  }),
405
+ id<KcContext.LinkIdpAction>({
406
+ ...kcContextCommonMock,
407
+ pageId: "link-idp-action.ftl",
408
+ idpDisplayName: "FranceConnect"
409
+ }),
405
410
  id<KcContext.LoginUpdateProfile>({
406
411
  ...kcContextCommonMock,
407
412
  pageId: "login-update-profile.ftl",
@@ -479,7 +479,9 @@ const messages = {
479
479
  remove: "إزالة",
480
480
  addValue: "أضف قيمة",
481
481
  languages: "اللغات",
482
- "organization.select": "اختر مؤسسة للمتابعة:"
482
+ "organization.select": "اختر مؤسسة للمتابعة:",
483
+ linkIdpActionTitle: "ربط {0}",
484
+ linkIdpActionMessage: "هل تريد ربط حسابك مع {0}؟"
483
485
  };
484
486
 
485
487
  export default messages;
@@ -511,7 +511,9 @@ const messages = {
511
511
  remove: "Elimina",
512
512
  addValue: "Afegeix valor",
513
513
  languages: "Idiomes",
514
- "organization.select": "Selecciona una organització per continuar:"
514
+ "organization.select": "Selecciona una organització per continuar:",
515
+ linkIdpActionTitle: "Enllaçant {0}",
516
+ linkIdpActionMessage: "Vols enllaçar el teu compte amb {0}?"
515
517
  };
516
518
 
517
519
  export default messages;
@@ -488,7 +488,9 @@ const messages = {
488
488
  remove: "Odstranit",
489
489
  addValue: "Přidat hodnotu",
490
490
  languages: "Jazyky",
491
- "organization.select": "Vyberte organizaci pro pokračování:"
491
+ "organization.select": "Vyberte organizaci pro pokračování:",
492
+ linkIdpActionTitle: "Propojení {0}",
493
+ linkIdpActionMessage: "Chcete propojit svůj účet s {0}?"
492
494
  };
493
495
 
494
496
  export default messages;
@@ -350,7 +350,9 @@ const messages = {
350
350
  remove: "Fjern",
351
351
  addValue: "Tilføj værdi",
352
352
  languages: "Sprog",
353
- "organization.select": "Vælg en organisation for at fortsætte:"
353
+ "organization.select": "Vælg en organisation for at fortsætte:",
354
+ linkIdpActionTitle: "Linker {0}",
355
+ linkIdpActionMessage: "Vil du forbinde din konto med {0}?"
354
356
  };
355
357
 
356
358
  export default messages;
@@ -537,7 +537,9 @@ const messages = {
537
537
  remove: "Entfernen",
538
538
  addValue: "Wert hinzufügen",
539
539
  languages: "Sprachen",
540
- "organization.select": "Wählen Sie eine Organisation, um fortzufahren:"
540
+ "organization.select": "Wählen Sie eine Organisation, um fortzufahren:",
541
+ linkIdpActionTitle: "Verknüpfe {0}",
542
+ linkIdpActionMessage: "Möchten Sie Ihr Konto mit {0} verknüpfen?"
541
543
  };
542
544
 
543
545
  export default messages;
@@ -506,7 +506,9 @@ const messages = {
506
506
  remove: "Αφαίρεση",
507
507
  addValue: "Προσθήκη τιμής",
508
508
  languages: "Γλώσσες",
509
- "organization.select": "Επιλέξτε έναν οργανισμό για να συνεχίσετε:"
509
+ "organization.select": "Επιλέξτε έναν οργανισμό για να συνεχίσετε:",
510
+ linkIdpActionTitle: "Σύνδεση {0}",
511
+ linkIdpActionMessage: "Θέλετε να συνδέσετε τον λογαριασμό σας με {0};"
510
512
  };
511
513
 
512
514
  export default messages;
@@ -522,7 +522,9 @@ const messages = {
522
522
  remove: "Remove",
523
523
  addValue: "Add value",
524
524
  languages: "Languages",
525
- "organization.select": "Select an organization to proceed:"
525
+ "organization.select": "Select an organization to proceed:",
526
+ linkIdpActionTitle: "Linking {0}",
527
+ linkIdpActionMessage: "Do you want to link your account with {0}?"
526
528
  };
527
529
 
528
530
  export default messages;
@@ -519,7 +519,9 @@ const messages = {
519
519
  remove: "Eliminar",
520
520
  addValue: "Añadir valor",
521
521
  languages: "Idiomas",
522
- "organization.select": "Selecciona una organización para continuar:"
522
+ "organization.select": "Selecciona una organización para continuar:",
523
+ linkIdpActionTitle: "Vinculando {0}",
524
+ linkIdpActionMessage: "¿Quieres vincular tu cuenta con {0}?"
523
525
  };
524
526
 
525
527
  export default messages;
@@ -474,7 +474,9 @@ const messages = {
474
474
  remove: "حذف",
475
475
  addValue: "افزودن مقدار",
476
476
  languages: "زبان‌ها",
477
- "organization.select": "یک سازمان را برای ادامه انتخاب کنید:"
477
+ "organization.select": "یک سازمان را برای ادامه انتخاب کنید:",
478
+ linkIdpActionTitle: "در حال اتصال {0}",
479
+ linkIdpActionMessage: "آیا می‌خواهید حساب خود را با {0} لینک کنید؟"
478
480
  };
479
481
 
480
482
  export default messages;
@@ -420,7 +420,9 @@ const messages = {
420
420
  remove: "Poista",
421
421
  addValue: "Lisää arvo",
422
422
  languages: "Kielet",
423
- "organization.select": "Valitse organisaatio jatkaaksesi:"
423
+ "organization.select": "Valitse organisaatio jatkaaksesi:",
424
+ linkIdpActionTitle: "Linkitetään {0}",
425
+ linkIdpActionMessage: "Haluatko yhdistää tilisi {0}:n kanssa?"
424
426
  };
425
427
 
426
428
  export default messages;
@@ -452,7 +452,9 @@ const messages = {
452
452
  remove: "Supprimer",
453
453
  addValue: "Ajouter une valeur",
454
454
  languages: "Langues",
455
- "organization.select": "Sélectionnez une organisation pour continuer :"
455
+ "organization.select": "Sélectionnez une organisation pour continuer :",
456
+ linkIdpActionTitle: "Association à {0}",
457
+ linkIdpActionMessage: "Voulez-vous lier votre compte à {0} ?"
456
458
  };
457
459
 
458
460
  export default messages;
@@ -506,7 +506,9 @@ const messages = {
506
506
  remove: "Eltávolítás",
507
507
  addValue: "Érték hozzáadása",
508
508
  languages: "Nyelvek",
509
- "organization.select": "Válasszon egy szervezetet a folytatáshoz:"
509
+ "organization.select": "Válasszon egy szervezetet a folytatáshoz:",
510
+ linkIdpActionTitle: "Összekapcsolás: {0}",
511
+ linkIdpActionMessage: "Össze kívánod kapcsolni a fiókodat a(z) {0} szolgáltatással?"
510
512
  };
511
513
 
512
514
  export default messages;
@@ -360,7 +360,9 @@ const messages = {
360
360
  remove: "Rimuovi",
361
361
  addValue: "Aggiungi valore",
362
362
  languages: "Lingue",
363
- "organization.select": "Seleziona un'organizzazione per continuare:"
363
+ "organization.select": "Seleziona un'organizzazione per continuare:",
364
+ linkIdpActionTitle: "Collegamento a {0}",
365
+ linkIdpActionMessage: "Vuoi collegare il tuo account con {0}?"
364
366
  };
365
367
 
366
368
  export default messages;
@@ -363,7 +363,9 @@ const messages = {
363
363
  remove: "削除",
364
364
  addValue: "値を追加",
365
365
  languages: "言語",
366
- "organization.select": "続行する組織を選択してください:"
366
+ "organization.select": "続行する組織を選択してください:",
367
+ linkIdpActionTitle: "{0} をリンク",
368
+ linkIdpActionMessage: "アカウントを{0}にリンクしますか?"
367
369
  };
368
370
 
369
371
  export default messages;
@@ -531,7 +531,9 @@ const messages = {
531
531
  remove: "წაშალეთ",
532
532
  addValue: "დაამატეთ მნიშვნელობა",
533
533
  languages: "ენები",
534
- "organization.select": "აირჩიეთ ორგანიზაცია გაგრძელებისთვის:"
534
+ "organization.select": "აირჩიეთ ორგანიზაცია გაგრძელებისთვის:",
535
+ linkIdpActionTitle: "კავშირის დამყარება {0}",
536
+ linkIdpActionMessage: "გსურთ თქვენი ანგარიშის {0}-თან დაკავშირება?"
535
537
  };
536
538
 
537
539
  export default messages;
@@ -227,7 +227,9 @@ const messages = {
227
227
  remove: "Pašalinti",
228
228
  addValue: "Pridėti reikšmę",
229
229
  languages: "Kalbos",
230
- "organization.select": "Pasirinkite organizaciją, kad galėtumėte tęsti:"
230
+ "organization.select": "Pasirinkite organizaciją, kad galėtumėte tęsti:",
231
+ linkIdpActionTitle: "Prijungiama {0}",
232
+ linkIdpActionMessage: "Ar norite susieti savo paskyrą su {0}?"
231
233
  };
232
234
 
233
235
  export default messages;
@@ -223,7 +223,9 @@ const messages = {
223
223
  remove: "Noņemt",
224
224
  addValue: "Pievienot vērtību",
225
225
  languages: "Valodas",
226
- "organization.select": "Izvēlieties organizāciju, lai turpinātu:"
226
+ "organization.select": "Izvēlieties organizāciju, lai turpinātu:",
227
+ linkIdpActionTitle: "Saistīšana ar {0}",
228
+ linkIdpActionMessage: "Vai vēlaties sasaistīt savu kontu ar {0}?"
227
229
  };
228
230
 
229
231
  export default messages;
@@ -318,7 +318,9 @@ const messages = {
318
318
  remove: "Verwijderen",
319
319
  addValue: "Waarde toevoegen",
320
320
  languages: "Talen",
321
- "organization.select": "Selecteer een organisatie om door te gaan:"
321
+ "organization.select": "Selecteer een organisatie om door te gaan:",
322
+ linkIdpActionTitle: "Koppelen met {0}",
323
+ linkIdpActionMessage: "Wil je je account koppelen aan {0}?"
322
324
  };
323
325
 
324
326
  export default messages;
@@ -222,7 +222,9 @@ const messages = {
222
222
  remove: "Fjern",
223
223
  addValue: "Legg til verdi",
224
224
  languages: "Språk",
225
- "organization.select": "Velg en organisasjon for å fortsette:"
225
+ "organization.select": "Velg en organisasjon for å fortsette:",
226
+ linkIdpActionTitle: "Kobler til {0}",
227
+ linkIdpActionMessage: "Vil du koble kontoen din til {0}?"
226
228
  };
227
229
 
228
230
  export default messages;
@@ -322,7 +322,9 @@ const messages = {
322
322
  remove: "Usuń",
323
323
  addValue: "Dodaj wartość",
324
324
  languages: "Języki",
325
- "organization.select": "Wybierz organizację, aby kontynuować:"
325
+ "organization.select": "Wybierz organizację, aby kontynuować:",
326
+ linkIdpActionTitle: "Łączenie z {0}",
327
+ linkIdpActionMessage: "Czy chcesz połączyć swoje konto z {0}?"
326
328
  };
327
329
 
328
330
  export default messages;
@@ -392,7 +392,9 @@ const messages = {
392
392
  remove: "Remover",
393
393
  addValue: "Adicionar valor",
394
394
  languages: "Idiomas",
395
- "organization.select": "Selecione uma organização para continuar:"
395
+ "organization.select": "Selecione uma organização para continuar:",
396
+ linkIdpActionTitle: "Associando {0}",
397
+ linkIdpActionMessage: "Deseja vincular sua conta ao {0}?"
396
398
  };
397
399
 
398
400
  export default messages;
@@ -513,7 +513,9 @@ const messages = {
513
513
  remove: "Remover",
514
514
  addValue: "Adicionar valor",
515
515
  languages: "Idiomas",
516
- "organization.select": "Selecione uma organização para continuar:"
516
+ "organization.select": "Selecione uma organização para continuar:",
517
+ linkIdpActionTitle: "Associando {0}",
518
+ linkIdpActionMessage: "Deseja associar sua conta a {0}?"
517
519
  };
518
520
 
519
521
  export default messages;
@@ -253,7 +253,9 @@ const messages = {
253
253
  remove: "Удалить",
254
254
  addValue: "Добавить значение",
255
255
  languages: "Языки",
256
- "organization.select": "Выберите организацию, чтобы продолжить:"
256
+ "organization.select": "Выберите организацию, чтобы продолжить:",
257
+ linkIdpActionTitle: "Связать с {0}",
258
+ linkIdpActionMessage: "Хотите связать свою учетную запись с {0}?"
257
259
  };
258
260
 
259
261
  export default messages;
@@ -497,7 +497,9 @@ const messages = {
497
497
  remove: "Odstrániť",
498
498
  addValue: "Pridať hodnotu",
499
499
  languages: "Jazyky",
500
- "organization.select": "Vyberte organizáciu, aby ste pokračovali:"
500
+ "organization.select": "Vyberte organizáciu, aby ste pokračovali:",
501
+ linkIdpActionTitle: "Prepájanie {0}",
502
+ linkIdpActionMessage: "Chcete prepojiť svoj účet s {0}?"
501
503
  };
502
504
 
503
505
  export default messages;
@@ -223,7 +223,9 @@ const messages = {
223
223
  remove: "Ta bort",
224
224
  addValue: "Lägg till värde",
225
225
  languages: "Språk",
226
- "organization.select": "Välj en organisation för att fortsätta:"
226
+ "organization.select": "Välj en organisation för att fortsätta:",
227
+ linkIdpActionTitle: "Länkar {0}",
228
+ linkIdpActionMessage: "Vill du länka ditt konto med {0}?"
227
229
  };
228
230
 
229
231
  export default messages;
@@ -485,7 +485,9 @@ const messages = {
485
485
  remove: "ลบ",
486
486
  addValue: "เพิ่มค่า",
487
487
  languages: "ภาษา",
488
- "organization.select": "เลือกองค์กรเพื่อดำเนินการต่อ:"
488
+ "organization.select": "เลือกองค์กรเพื่อดำเนินการต่อ:",
489
+ linkIdpActionTitle: "กำลังเชื่อมต่อ {0}",
490
+ linkIdpActionMessage: "คุณต้องการเชื่อมบัญชีของคุณกับ {0} หรือไม่?"
489
491
  };
490
492
 
491
493
  export default messages;
@@ -300,7 +300,9 @@ const messages = {
300
300
  remove: "Kaldır",
301
301
  addValue: "Değer ekle",
302
302
  languages: "Diller",
303
- "organization.select": "Devam etmek için bir organizasyon seçin:"
303
+ "organization.select": "Devam etmek için bir organizasyon seçin:",
304
+ linkIdpActionTitle: "Bağlanıyor: {0}",
305
+ linkIdpActionMessage: "Hesabınızı {0} ile bağlamak ister misiniz?"
304
306
  };
305
307
 
306
308
  export default messages;
@@ -511,7 +511,9 @@ const messages = {
511
511
  remove: "Видалити",
512
512
  addValue: "Додати значення",
513
513
  languages: "Мови",
514
- "organization.select": "Виберіть організацію, щоб продовжити:"
514
+ "organization.select": "Виберіть організацію, щоб продовжити:",
515
+ linkIdpActionTitle: "Зв'язування з {0}",
516
+ linkIdpActionMessage: "Бажаєте прив'язати свій обліковий запис до {0}?"
515
517
  };
516
518
 
517
519
  export default messages;
@@ -456,7 +456,9 @@ const messages = {
456
456
  remove: "移除",
457
457
  addValue: "添加值",
458
458
  languages: "语言",
459
- "organization.select": "选择一个组织以继续:"
459
+ "organization.select": "选择一个组织以继续:",
460
+ linkIdpActionTitle: "正在关联 {0}",
461
+ linkIdpActionMessage: "是否将您的账户与 {0} 关联?"
460
462
  };
461
463
 
462
464
  export default messages;
@@ -465,7 +465,9 @@ const messages = {
465
465
  remove: "移除",
466
466
  addValue: "添加值",
467
467
  languages: "語言",
468
- "organization.select": "選擇一個組織以繼續:"
468
+ "organization.select": "選擇一個組織以繼續:",
469
+ linkIdpActionTitle: "正在連結 {0}",
470
+ linkIdpActionMessage: "是否要將您的帳戶與 {0} 連結?"
469
471
  };
470
472
 
471
473
  export default messages;
@@ -0,0 +1,53 @@
1
+ import { getKcClsx } from "keycloakify/login/lib/kcClsx";
2
+ import type { PageProps } from "keycloakify/login/pages/PageProps";
3
+ import type { KcContext } from "../KcContext";
4
+ import type { I18n } from "../i18n";
5
+
6
+ export default function LinkIdpAction(props: PageProps<Extract<KcContext, { pageId: "link-idp-action.ftl" }>, I18n>) {
7
+ const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
8
+
9
+ const { kcClsx } = getKcClsx({
10
+ doUseDefaultCss,
11
+ classes
12
+ });
13
+
14
+ const { idpDisplayName, url } = kcContext;
15
+
16
+ const { msg, msgStr } = i18n;
17
+
18
+ return (
19
+ <Template
20
+ kcContext={kcContext}
21
+ i18n={i18n}
22
+ doUseDefaultCss={doUseDefaultCss}
23
+ classes={classes}
24
+ headerNode={msg("linkIdpActionTitle", idpDisplayName)}
25
+ displayMessage={false}
26
+ >
27
+ <div id="kc-link-text" className={kcClsx("kcContentWrapperClass")}>
28
+ {msg("linkIdpActionMessage", idpDisplayName)}
29
+ </div>
30
+ <form className={kcClsx("kcFormClass")} action={url.loginAction} method="post">
31
+ <div className={kcClsx("kcFormGroupClass")}>
32
+ <div id="kc-form-buttons" className={kcClsx("kcFormButtonsClass")}>
33
+ <input
34
+ className={kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonLargeClass")}
35
+ name="continue"
36
+ id="kc-continue"
37
+ type="submit"
38
+ value={msgStr("doContinue")}
39
+ />
40
+ <input
41
+ className={kcClsx("kcButtonClass", "kcButtonDefaultClass", "kcButtonLargeClass")}
42
+ name="cancel-aia"
43
+ id="kc-cancel"
44
+ type="submit"
45
+ value={msgStr("doCancel")}
46
+ />
47
+ </div>
48
+ </div>
49
+ </form>
50
+ <div className="clearfix" />
51
+ </Template>
52
+ );
53
+ }
@@ -0,0 +1,36 @@
1
+ import React from "react";
2
+ import type { Meta, StoryObj } from "@storybook/react";
3
+ import { createKcPageStory } from "../KcPageStory";
4
+
5
+ const { KcPageStory } = createKcPageStory({ pageId: "link-idp-action.ftl" });
6
+
7
+ const meta = {
8
+ title: "login/link-idp-action.ftl",
9
+ component: KcPageStory
10
+ } satisfies Meta<typeof KcPageStory>;
11
+
12
+ export default meta;
13
+
14
+ type Story = StoryObj<typeof meta>;
15
+
16
+ export const Default: Story = {
17
+ render: () => (
18
+ <KcPageStory
19
+ kcContext={{
20
+ idpDisplayName: "GitHub",
21
+ url: { loginAction: "/mock-login-action" }
22
+ }}
23
+ />
24
+ )
25
+ };
26
+
27
+ export const DifferentProvider: Story = {
28
+ render: () => (
29
+ <KcPageStory
30
+ kcContext={{
31
+ idpDisplayName: "Google",
32
+ url: { loginAction: "/custom-login-action" }
33
+ }}
34
+ />
35
+ )
36
+ };
@@ -1057,6 +1057,7 @@ const LOGIN_THEME_PAGE_IDS = [
1057
1057
  "login-otp.ftl",
1058
1058
  "login-update-profile.ftl",
1059
1059
  "login-update-password.ftl",
1060
+ "link-idp-action.ftl",
1060
1061
  "login-idp-link-confirm.ftl",
1061
1062
  "login-idp-link-email.ftl",
1062
1063
  "login-page-expired.ftl",