keycloakify 10.1.0-rc.0 → 10.1.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 (205) hide show
  1. package/PUBLIC_URL.js +2 -2
  2. package/PUBLIC_URL.js.map +1 -1
  3. package/account/KcContext/kcContextMocks.js +3 -3
  4. package/account/KcContext/kcContextMocks.js.map +1 -1
  5. package/bin/193.index.js +198 -62
  6. package/bin/{365.index.js → 20.index.js} +302 -263
  7. package/bin/31.index.js +15 -23
  8. package/bin/{430.index.js → 33.index.js} +579 -4
  9. package/bin/{678.index.js → 36.index.js} +2 -577
  10. package/bin/{440.index.js → 499.index.js} +259 -181
  11. package/bin/526.index.js +3 -784
  12. package/bin/599.index.js +4 -1
  13. package/bin/780.index.js +1 -1
  14. package/bin/{525.index.js → 903.index.js} +4840 -97
  15. package/bin/932.index.js +115 -886
  16. package/bin/main.js +4 -4
  17. package/bin/shared/buildContext.d.ts +0 -2
  18. package/bin/shared/buildContext.js.map +1 -1
  19. package/bin/shared/constants.d.ts +5 -6
  20. package/bin/shared/constants.js +5 -6
  21. package/bin/shared/constants.js.map +1 -1
  22. package/bin/shared/copyKeycloakResourcesToPublic.d.ts +2 -4
  23. package/bin/shared/copyKeycloakResourcesToPublic.js.map +1 -1
  24. package/login/KcContext/KcContext.d.ts +9 -18
  25. package/login/KcContext/KcContext.js.map +1 -1
  26. package/login/KcContext/kcContextMocks.js +6 -10
  27. package/login/KcContext/kcContextMocks.js.map +1 -1
  28. package/login/Template.js +4 -59
  29. package/login/Template.js.map +1 -1
  30. package/login/Template.useStylesAndScripts.d.ts +17 -0
  31. package/login/Template.useStylesAndScripts.js +69 -0
  32. package/login/Template.useStylesAndScripts.js.map +1 -0
  33. package/login/pages/Login.js +1 -1
  34. package/login/pages/Login.js.map +1 -1
  35. package/login/pages/LoginIdpLinkConfirmOverride.js +0 -1
  36. package/login/pages/LoginIdpLinkConfirmOverride.js.map +1 -1
  37. package/login/pages/LoginPasskeysConditionalAuthenticate.js +6 -49
  38. package/login/pages/LoginPasskeysConditionalAuthenticate.js.map +1 -1
  39. package/login/pages/LoginPasskeysConditionalAuthenticate.useScript.d.ts +20 -0
  40. package/login/pages/LoginPasskeysConditionalAuthenticate.useScript.js +49 -0
  41. package/login/pages/LoginPasskeysConditionalAuthenticate.useScript.js.map +1 -0
  42. package/login/pages/LoginRecoveryAuthnCodeConfig.js +4 -126
  43. package/login/pages/LoginRecoveryAuthnCodeConfig.js.map +1 -1
  44. package/login/pages/LoginRecoveryAuthnCodeConfig.useScript.d.ts +9 -0
  45. package/login/pages/LoginRecoveryAuthnCodeConfig.useScript.js +133 -0
  46. package/login/pages/LoginRecoveryAuthnCodeConfig.useScript.js.map +1 -0
  47. package/login/pages/LoginUsername.js +1 -1
  48. package/login/pages/LoginUsername.js.map +1 -1
  49. package/login/pages/Register.js +6 -3
  50. package/login/pages/Register.js.map +1 -1
  51. package/login/pages/WebauthnAuthenticate.js +13 -116
  52. package/login/pages/WebauthnAuthenticate.js.map +1 -1
  53. package/login/pages/WebauthnAuthenticate.useScript.d.ts +21 -0
  54. package/login/pages/WebauthnAuthenticate.useScript.js +41 -0
  55. package/login/pages/WebauthnAuthenticate.useScript.js.map +1 -0
  56. package/login/pages/WebauthnRegister.js +8 -178
  57. package/login/pages/WebauthnRegister.js.map +1 -1
  58. package/login/pages/WebauthnRegister.useScript.d.ts +27 -0
  59. package/login/pages/WebauthnRegister.useScript.js +49 -0
  60. package/login/pages/WebauthnRegister.useScript.js.map +1 -0
  61. package/package.json +125 -15
  62. package/res/account-v1/account.ftl +70 -0
  63. package/res/account-v1/applications.ftl +76 -0
  64. package/res/account-v1/federatedIdentity.ftl +42 -0
  65. package/res/account-v1/log.ftl +35 -0
  66. package/res/account-v1/messages/messages_ar.properties +406 -0
  67. package/res/account-v1/messages/messages_ca.properties +147 -0
  68. package/res/account-v1/messages/messages_cs.properties +171 -0
  69. package/res/account-v1/messages/messages_da.properties +339 -0
  70. package/res/account-v1/messages/messages_de.properties +353 -0
  71. package/res/account-v1/messages/messages_en.properties +404 -0
  72. package/res/account-v1/messages/messages_es.properties +147 -0
  73. package/res/account-v1/messages/messages_fi.properties +400 -0
  74. package/res/account-v1/messages/messages_fr.properties +180 -0
  75. package/res/account-v1/messages/messages_hu.properties +334 -0
  76. package/res/account-v1/messages/messages_it.properties +336 -0
  77. package/res/account-v1/messages/messages_ja.properties +335 -0
  78. package/res/account-v1/messages/messages_lt.properties +154 -0
  79. package/res/account-v1/messages/messages_lv.properties +197 -0
  80. package/res/account-v1/messages/messages_nl.properties +371 -0
  81. package/res/account-v1/messages/messages_no.properties +152 -0
  82. package/res/account-v1/messages/messages_pl.properties +248 -0
  83. package/res/account-v1/messages/messages_pt_BR.properties +349 -0
  84. package/res/account-v1/messages/messages_ru.properties +235 -0
  85. package/res/account-v1/messages/messages_sk.properties +196 -0
  86. package/res/account-v1/messages/messages_sv.properties +150 -0
  87. package/res/account-v1/messages/messages_tr.properties +315 -0
  88. package/res/account-v1/messages/messages_zh_CN.properties +153 -0
  89. package/res/account-v1/password.ftl +59 -0
  90. package/res/account-v1/resource-detail.ftl +277 -0
  91. package/res/account-v1/resources/css/account.css +277 -0
  92. package/res/account-v1/resources/img/icon-sidebar-active.png +0 -0
  93. package/res/account-v1/resources/img/keycloak-logo.png +0 -0
  94. package/res/account-v1/resources/img/logo.png +0 -0
  95. package/res/account-v1/resources/resources-common/img/favicon.ico +0 -0
  96. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/css/patternfly-additions.min.css +5 -0
  97. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/css/patternfly.min.css +8 -0
  98. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff2 +0 -0
  99. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.woff2 +0 -0
  100. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Regular-webfont.woff2 +0 -0
  101. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff2 +0 -0
  102. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf +0 -0
  103. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.woff +0 -0
  104. package/res/account-v1/resources.ftl +403 -0
  105. package/res/account-v1/sessions.ftl +44 -0
  106. package/res/account-v1/template.ftl +88 -0
  107. package/res/account-v1/theme.properties +14 -0
  108. package/res/account-v1/totp.ftl +141 -0
  109. package/res/public/.keycloakify/account/css/account.css +277 -0
  110. package/res/public/.keycloakify/account/img/icon-sidebar-active.png +0 -0
  111. package/res/public/.keycloakify/account/img/keycloak-logo.png +0 -0
  112. package/res/public/.keycloakify/account/img/logo.png +0 -0
  113. package/res/public/.keycloakify/account/resources-common/img/favicon.ico +0 -0
  114. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/css/patternfly-additions.min.css +5 -0
  115. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/css/patternfly.min.css +8 -0
  116. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff2 +0 -0
  117. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.woff2 +0 -0
  118. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Regular-webfont.woff2 +0 -0
  119. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff2 +0 -0
  120. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf +0 -0
  121. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.woff +0 -0
  122. package/res/public/.keycloakify/login/css/login.css +629 -0
  123. package/res/public/.keycloakify/login/img/feedback-error-arrow-down.png +0 -0
  124. package/res/public/.keycloakify/login/img/feedback-error-sign.png +0 -0
  125. package/res/public/.keycloakify/login/img/feedback-success-arrow-down.png +0 -0
  126. package/res/public/.keycloakify/login/img/feedback-success-sign.png +0 -0
  127. package/res/public/.keycloakify/login/img/feedback-warning-arrow-down.png +0 -0
  128. package/res/public/.keycloakify/login/img/feedback-warning-sign.png +0 -0
  129. package/res/public/.keycloakify/login/img/keycloak-bg.png +0 -0
  130. package/res/public/.keycloakify/login/img/keycloak-logo-text.png +0 -0
  131. package/res/public/.keycloakify/login/img/keycloak-logo.png +0 -0
  132. package/res/public/.keycloakify/login/js/authChecker.js +49 -0
  133. package/res/public/.keycloakify/login/js/common.js +48 -0
  134. package/res/public/.keycloakify/login/js/kcMultivalued.js +106 -0
  135. package/res/public/.keycloakify/login/js/kcNumberFormat.js +21 -0
  136. package/res/public/.keycloakify/login/js/kcNumberUnFormat.js +19 -0
  137. package/res/public/.keycloakify/login/js/menu-button-links.js +315 -0
  138. package/{src/bin/shared/downloadKeycloakDefaultTheme/extra-assets → res/public/.keycloakify/login/js}/passkeysConditionalAuth.js +1 -1
  139. package/res/public/.keycloakify/login/js/passwordVisibility.js +15 -0
  140. package/res/public/.keycloakify/login/js/userProfile.js +71 -0
  141. package/res/public/.keycloakify/login/js/webauthnRegister.js +140 -0
  142. package/res/public/.keycloakify/login/resources-common/img/favicon.ico +0 -0
  143. package/res/public/.keycloakify/login/resources-common/lib/pficon/pficon.css +22 -0
  144. package/res/public/.keycloakify/login/resources-common/lib/pficon/pficon.woff2 +0 -0
  145. package/res/public/.keycloakify/login/resources-common/node_modules/@patternfly/patternfly/patternfly.min.css +2 -0
  146. package/res/public/.keycloakify/login/resources-common/node_modules/jquery/dist/jquery.min.js +2 -0
  147. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/css/patternfly-additions.min.css +5 -0
  148. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/css/patternfly.min.css +8 -0
  149. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.ttf +0 -0
  150. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff +0 -0
  151. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff2 +0 -0
  152. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.woff2 +0 -0
  153. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Regular-webfont.woff2 +0 -0
  154. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff2 +0 -0
  155. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf +0 -0
  156. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.woff +0 -0
  157. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/fontawesome-webfont.woff2 +0 -0
  158. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/img/bg-login.jpg +0 -0
  159. package/res/public/.keycloakify/login/resources-common/node_modules/rfc4648/lib/rfc4648.js +178 -0
  160. package/src/PUBLIC_URL.ts +5 -3
  161. package/src/account/KcContext/kcContextMocks.ts +3 -3
  162. package/src/bin/copy-keycloak-resources-to-public.ts +1 -1
  163. package/src/bin/initialize-account-theme/initializeAccountTheme_singlePage.ts +4 -1
  164. package/src/bin/initialize-email-theme.ts +28 -8
  165. package/src/bin/keycloakify/buildJars/buildJar.ts +3 -7
  166. package/src/bin/keycloakify/generateFtl/generateFtl.ts +3 -7
  167. package/src/bin/keycloakify/generateResources/generateResourcesForMainTheme.ts +65 -90
  168. package/src/bin/keycloakify/keycloakify.ts +38 -21
  169. package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +2 -2
  170. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +3 -3
  171. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +3 -3
  172. package/src/bin/shared/buildContext.ts +1 -8
  173. package/src/bin/shared/constants.ts +5 -7
  174. package/src/bin/shared/copyKeycloakResourcesToPublic.ts +30 -40
  175. package/src/bin/start-keycloak/start-keycloak.ts +3 -7
  176. package/src/login/KcContext/KcContext.ts +9 -18
  177. package/src/login/KcContext/kcContextMocks.ts +5 -13
  178. package/src/login/Template.tsx +4 -67
  179. package/src/login/Template.useStylesAndScripts.ts +94 -0
  180. package/src/login/pages/Login.tsx +1 -1
  181. package/src/login/pages/LoginIdpLinkConfirmOverride.tsx +0 -1
  182. package/src/login/pages/LoginPasskeysConditionalAuthenticate.tsx +6 -81
  183. package/src/login/pages/LoginPasskeysConditionalAuthenticate.useScript.tsx +72 -0
  184. package/src/login/pages/LoginRecoveryAuthnCodeConfig.tsx +4 -126
  185. package/src/login/pages/LoginRecoveryAuthnCodeConfig.useScript.tsx +142 -0
  186. package/src/login/pages/LoginUsername.tsx +1 -1
  187. package/src/login/pages/Register.tsx +35 -13
  188. package/src/login/pages/WebauthnAuthenticate.tsx +20 -133
  189. package/src/login/pages/WebauthnAuthenticate.useScript.tsx +64 -0
  190. package/src/login/pages/WebauthnRegister.tsx +8 -195
  191. package/src/login/pages/WebauthnRegister.useScript.tsx +93 -0
  192. package/src/tools/useInsertScriptTags.ts +14 -4
  193. package/src/vite-plugin/vite-plugin.ts +11 -15
  194. package/tools/useInsertScriptTags.d.ts +2 -2
  195. package/tools/useInsertScriptTags.js +8 -2
  196. package/tools/useInsertScriptTags.js.map +1 -1
  197. package/vite-plugin/index.js +3357 -47132
  198. package/bin/697.index.js +0 -4749
  199. package/bin/shared/downloadKeycloakStaticResources.d.ts +0 -9
  200. package/bin/shared/downloadKeycloakStaticResources.js.map +0 -1
  201. package/src/bin/keycloakify/generateResources/bringInAccountV1.ts +0 -89
  202. package/src/bin/shared/downloadKeycloakDefaultTheme/downloadKeycloakDefaultTheme.ts +0 -337
  203. package/src/bin/shared/downloadKeycloakDefaultTheme/index.ts +0 -1
  204. package/src/bin/shared/downloadKeycloakStaticResources.ts +0 -53
  205. /package/{src/bin/shared/downloadKeycloakDefaultTheme/extra-assets → res/public/.keycloakify/login/js}/webauthnAuthenticate.js +0 -0
@@ -0,0 +1,629 @@
1
+ /* Patternfly CSS places a "bg-login.jpg" as the background on this ".login-pf" class.
2
+ This clashes with the "keycloak-bg.png' background defined on the body below.
3
+ Therefore the Patternfly background must be set to none. */
4
+ .login-pf {
5
+ background: none;
6
+ }
7
+
8
+ .login-pf body {
9
+ background: url("../img/keycloak-bg.png") no-repeat center center fixed;
10
+ background-size: cover;
11
+ height: 100%;
12
+ }
13
+
14
+ textarea.pf-c-form-control {
15
+ height: auto;
16
+ }
17
+
18
+ .pf-c-alert__title {
19
+ font-size: var(--pf-global--FontSize--xs);
20
+ }
21
+
22
+ p.instruction {
23
+ margin: 5px 0;
24
+ }
25
+
26
+ .pf-c-button.pf-m-control {
27
+ border-color: rgba(230, 230, 230, 0.5);
28
+ }
29
+
30
+ h1#kc-page-title {
31
+ margin-top: 10px;
32
+ }
33
+
34
+ #kc-locale ul {
35
+ background-color: var(--pf-global--BackgroundColor--100);
36
+ display: none;
37
+ top: 20px;
38
+ min-width: 100px;
39
+ padding: 0;
40
+ }
41
+
42
+ #kc-locale-dropdown{
43
+ display: inline-block;
44
+ }
45
+
46
+ #kc-locale-dropdown:hover ul {
47
+ display:block;
48
+ }
49
+
50
+ #kc-locale-dropdown a {
51
+ color: var(--pf-global--Color--200);
52
+ text-align: right;
53
+ font-size: var(--pf-global--FontSize--sm);
54
+ }
55
+
56
+ #kc-locale-dropdown button {
57
+ background: none;
58
+ border: none;
59
+ padding: 0;
60
+ cursor: pointer;
61
+ color: var(--pf-global--Color--200);
62
+ text-align: right;
63
+ font-size: var(--pf-global--FontSize--sm);
64
+ }
65
+
66
+ button#kc-current-locale-link::after {
67
+ content: "\2c5";
68
+ margin-left: var(--pf-global--spacer--xs)
69
+ }
70
+
71
+ .login-pf .container {
72
+ padding-top: 40px;
73
+ }
74
+
75
+ .login-pf a:hover {
76
+ color: #0099d3;
77
+ }
78
+
79
+ #kc-logo {
80
+ width: 100%;
81
+ }
82
+
83
+ div.kc-logo-text {
84
+ background-image: url(../img/keycloak-logo-text.png);
85
+ background-repeat: no-repeat;
86
+ height: 63px;
87
+ width: 300px;
88
+ margin: 0 auto;
89
+ }
90
+
91
+ div.kc-logo-text span {
92
+ display: none;
93
+ }
94
+
95
+ #kc-header {
96
+ color: #ededed;
97
+ overflow: visible;
98
+ white-space: nowrap;
99
+ }
100
+
101
+ #kc-header-wrapper {
102
+ font-size: 29px;
103
+ text-transform: uppercase;
104
+ letter-spacing: 3px;
105
+ line-height: 1.2em;
106
+ padding: 62px 10px 20px;
107
+ white-space: normal;
108
+ }
109
+
110
+ #kc-content {
111
+ width: 100%;
112
+ }
113
+
114
+ #kc-attempted-username {
115
+ font-size: 20px;
116
+ font-family: inherit;
117
+ font-weight: normal;
118
+ padding-right: 10px;
119
+ }
120
+
121
+ #kc-username {
122
+ text-align: center;
123
+ margin-bottom:-10px;
124
+ }
125
+
126
+ #kc-webauthn-settings-form {
127
+ padding-top: 8px;
128
+ }
129
+
130
+ #kc-form-webauthn .select-auth-box-parent {
131
+ pointer-events: none;
132
+ }
133
+
134
+ #kc-form-webauthn .select-auth-box-desc {
135
+ color: var(--pf-global--palette--black-600);
136
+ }
137
+
138
+ #kc-form-webauthn .select-auth-box-headline {
139
+ color: var(--pf-global--Color--300);
140
+ }
141
+
142
+ #kc-form-webauthn .select-auth-box-icon {
143
+ flex: 0 0 3em;
144
+ }
145
+
146
+ #kc-form-webauthn .select-auth-box-icon-properties {
147
+ margin-top: 10px;
148
+ font-size: 1.8em;
149
+ }
150
+
151
+ #kc-form-webauthn .select-auth-box-icon-properties.unknown-transport-class {
152
+ margin-top: 3px;
153
+ }
154
+
155
+ #kc-form-webauthn .pf-l-stack__item {
156
+ margin: -1px 0;
157
+ }
158
+
159
+ #kc-content-wrapper {
160
+ margin-top: 20px;
161
+ }
162
+
163
+ #kc-form-wrapper {
164
+ margin-top: 10px;
165
+ }
166
+
167
+ #kc-info {
168
+ margin: 20px -40px -30px;
169
+ }
170
+
171
+ #kc-info-wrapper {
172
+ font-size: 13px;
173
+ padding: 15px 35px;
174
+ background-color: #F0F0F0;
175
+ }
176
+
177
+ #kc-form-options span {
178
+ display: block;
179
+ }
180
+
181
+ #kc-form-options .checkbox {
182
+ margin-top: 0;
183
+ color: #72767b;
184
+ }
185
+
186
+ #kc-terms-text {
187
+ margin-bottom: 20px;
188
+ }
189
+
190
+ #kc-registration-terms-text {
191
+ max-height: 100px;
192
+ overflow-y: auto;
193
+ overflow-x: hidden;
194
+ margin: 5px;
195
+ }
196
+
197
+ #kc-registration {
198
+ margin-bottom: 0;
199
+ }
200
+
201
+ /* TOTP */
202
+
203
+ .subtitle {
204
+ text-align: right;
205
+ margin-top: 30px;
206
+ color: #909090;
207
+ }
208
+
209
+ .required {
210
+ color: var(--pf-global--danger-color--200);
211
+ }
212
+
213
+ ol#kc-totp-settings {
214
+ margin: 0;
215
+ padding-left: 20px;
216
+ }
217
+
218
+ ul#kc-totp-supported-apps {
219
+ margin-bottom: 10px;
220
+ }
221
+
222
+ #kc-totp-secret-qr-code {
223
+ max-width:150px;
224
+ max-height:150px;
225
+ }
226
+
227
+ #kc-totp-secret-key {
228
+ background-color: #fff;
229
+ color: #333333;
230
+ font-size: 16px;
231
+ padding: 10px 0;
232
+ }
233
+
234
+ /* OAuth */
235
+
236
+ #kc-oauth h3 {
237
+ margin-top: 0;
238
+ }
239
+
240
+ #kc-oauth ul {
241
+ list-style: none;
242
+ padding: 0;
243
+ margin: 0;
244
+ }
245
+
246
+ #kc-oauth ul li {
247
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
248
+ font-size: 12px;
249
+ padding: 10px 0;
250
+ }
251
+
252
+ #kc-oauth ul li:first-of-type {
253
+ border-top: 0;
254
+ }
255
+
256
+ #kc-oauth .kc-role {
257
+ display: inline-block;
258
+ width: 50%;
259
+ }
260
+
261
+ /* Code */
262
+ #kc-code textarea {
263
+ width: 100%;
264
+ height: 8em;
265
+ }
266
+
267
+ /* Social */
268
+ .kc-social-links {
269
+ margin-top: 20px;
270
+ }
271
+
272
+ .kc-social-links li {
273
+ width: 100%;
274
+ }
275
+
276
+ .kc-social-provider-logo {
277
+ font-size: 23px;
278
+ width: 30px;
279
+ height: 25px;
280
+ float: left;
281
+ }
282
+
283
+ .kc-social-gray {
284
+ color: var(--pf-global--Color--200);
285
+ }
286
+
287
+ .kc-social-gray h2 {
288
+ font-size: 1em;
289
+ }
290
+
291
+ .kc-social-item {
292
+ margin-bottom: var(--pf-global--spacer--sm);
293
+ font-size: 15px;
294
+ text-align: center;
295
+ }
296
+
297
+ .kc-social-provider-name {
298
+ position: relative;
299
+ }
300
+
301
+ .kc-social-icon-text {
302
+ left: -15px;
303
+ }
304
+
305
+ .kc-social-grid {
306
+ display:grid;
307
+ grid-column-gap: 10px;
308
+ grid-row-gap: 5px;
309
+ grid-column-end: span 6;
310
+ --pf-l-grid__item--GridColumnEnd: span 6;
311
+ }
312
+
313
+ .kc-social-grid .kc-social-icon-text {
314
+ left: -10px;
315
+ }
316
+
317
+ .kc-login-tooltip {
318
+ position: relative;
319
+ display: inline-block;
320
+ }
321
+
322
+ .kc-social-section {
323
+ text-align: center;
324
+ }
325
+
326
+ .kc-social-section hr{
327
+ margin-bottom: 10px
328
+ }
329
+
330
+ .kc-login-tooltip .kc-tooltip-text{
331
+ top:-3px;
332
+ left:160%;
333
+ background-color: black;
334
+ visibility: hidden;
335
+ color: #fff;
336
+
337
+ min-width:130px;
338
+ text-align: center;
339
+ border-radius: 2px;
340
+ box-shadow:0 1px 8px rgba(0,0,0,0.6);
341
+ padding: 5px;
342
+
343
+ position: absolute;
344
+ opacity:0;
345
+ transition:opacity 0.5s;
346
+ }
347
+
348
+ /* Show tooltip */
349
+ .kc-login-tooltip:hover .kc-tooltip-text {
350
+ visibility: visible;
351
+ opacity:0.7;
352
+ }
353
+
354
+ /* Arrow for tooltip */
355
+ .kc-login-tooltip .kc-tooltip-text::after {
356
+ content: " ";
357
+ position: absolute;
358
+ top: 15px;
359
+ right: 100%;
360
+ margin-top: -5px;
361
+ border-width: 5px;
362
+ border-style: solid;
363
+ border-color: transparent black transparent transparent;
364
+ }
365
+
366
+ @media (min-width: 768px) {
367
+ #kc-container-wrapper {
368
+ position: absolute;
369
+ width: 100%;
370
+ }
371
+
372
+ .login-pf .container {
373
+ padding-right: 80px;
374
+ }
375
+
376
+ #kc-locale {
377
+ position: relative;
378
+ text-align: right;
379
+ z-index: 9999;
380
+ }
381
+ }
382
+
383
+ @media (max-width: 767px) {
384
+
385
+ .login-pf body {
386
+ background: white;
387
+ }
388
+
389
+ #kc-header {
390
+ padding-left: 15px;
391
+ padding-right: 15px;
392
+ float: none;
393
+ text-align: left;
394
+ }
395
+
396
+ #kc-header-wrapper {
397
+ font-size: 16px;
398
+ font-weight: bold;
399
+ padding: 20px 60px 0 0;
400
+ color: #72767b;
401
+ letter-spacing: 0;
402
+ }
403
+
404
+ div.kc-logo-text {
405
+ margin: 0;
406
+ width: 150px;
407
+ height: 32px;
408
+ background-size: 100%;
409
+ }
410
+
411
+ #kc-form {
412
+ float: none;
413
+ }
414
+
415
+ #kc-info-wrapper {
416
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
417
+ background-color: transparent;
418
+ }
419
+
420
+ .login-pf .container {
421
+ padding-top: 15px;
422
+ padding-bottom: 15px;
423
+ }
424
+
425
+ #kc-locale {
426
+ position: absolute;
427
+ width: 200px;
428
+ top: 20px;
429
+ right: 20px;
430
+ text-align: right;
431
+ z-index: 9999;
432
+ }
433
+ }
434
+
435
+ @media (min-height: 646px) {
436
+ #kc-container-wrapper {
437
+ bottom: 12%;
438
+ }
439
+ }
440
+
441
+ @media (max-height: 645px) {
442
+ #kc-container-wrapper {
443
+ padding-top: 50px;
444
+ top: 20%;
445
+ }
446
+ }
447
+
448
+ .card-pf form.form-actions .btn {
449
+ float: right;
450
+ margin-left: 10px;
451
+ }
452
+
453
+ #kc-form-buttons {
454
+ margin-top: 20px;
455
+ }
456
+
457
+ .login-pf-page .login-pf-brand {
458
+ margin-top: 20px;
459
+ max-width: 360px;
460
+ width: 40%;
461
+ }
462
+
463
+ .select-auth-box-arrow{
464
+ display: flex;
465
+ align-items: center;
466
+ margin-right: 2rem;
467
+ }
468
+
469
+ .select-auth-box-icon{
470
+ display: flex;
471
+ flex: 0 0 2em;
472
+ justify-content: center;
473
+ margin-right: 1rem;
474
+ margin-left: 3rem;
475
+ }
476
+
477
+ .select-auth-box-parent{
478
+ border-top: 1px solid var(--pf-global--palette--black-200);
479
+ padding-top: 1rem;
480
+ padding-bottom: 1rem;
481
+ cursor: pointer;
482
+ text-align: left;
483
+ align-items: unset;
484
+ background-color: unset;
485
+ border-right: unset;
486
+ border-bottom: unset;
487
+ border-left: unset;
488
+ }
489
+
490
+ .select-auth-box-parent:hover{
491
+ background-color: #f7f8f8;
492
+ }
493
+
494
+ .select-auth-container {
495
+ padding-bottom: 0px !important;
496
+ }
497
+
498
+ .select-auth-box-headline {
499
+ font-size: var(--pf-global--FontSize--md);
500
+ color: var(--pf-global--primary-color--100);
501
+ font-weight: bold;
502
+ }
503
+
504
+ .select-auth-box-desc {
505
+ font-size: var(--pf-global--FontSize--sm);
506
+ }
507
+
508
+ .select-auth-box-paragraph {
509
+ text-align: center;
510
+ font-size: var(--pf-global--FontSize--md);
511
+ margin-bottom: 5px;
512
+ }
513
+
514
+ .card-pf {
515
+ margin: 0 auto;
516
+ box-shadow: var(--pf-global--BoxShadow--lg);
517
+ padding: 0 20px;
518
+ max-width: 500px;
519
+ border-top: 4px solid;
520
+ border-color: var(--pf-global--primary-color--100);
521
+ }
522
+
523
+ /*phone*/
524
+ @media (max-width: 767px) {
525
+ .login-pf-page .card-pf {
526
+ max-width: none;
527
+ margin-left: 0;
528
+ margin-right: 0;
529
+ padding-top: 0;
530
+ border-top: 0;
531
+ box-shadow: 0 0;
532
+ }
533
+
534
+ .kc-social-grid {
535
+ grid-column-end: 12;
536
+ --pf-l-grid__item--GridColumnEnd: span 12;
537
+ }
538
+
539
+ .kc-social-grid .kc-social-icon-text {
540
+ left: -15px;
541
+ }
542
+ }
543
+
544
+ .login-pf-page .login-pf-signup {
545
+ font-size: 15px;
546
+ color: #72767b;
547
+ }
548
+ #kc-content-wrapper .row {
549
+ margin-left: 0;
550
+ margin-right: 0;
551
+ }
552
+
553
+ .login-pf-page.login-pf-page-accounts {
554
+ margin-left: auto;
555
+ margin-right: auto;
556
+ }
557
+
558
+ .login-pf-page .btn-primary {
559
+ margin-top: 0;
560
+ }
561
+
562
+ .login-pf-page .list-view-pf .list-group-item {
563
+ border-bottom: 1px solid #ededed;
564
+ }
565
+
566
+ .login-pf-page .list-view-pf-description {
567
+ width: 100%;
568
+ }
569
+
570
+ #kc-form-login div.form-group:last-of-type,
571
+ #kc-register-form div.form-group:last-of-type,
572
+ #kc-update-profile-form div.form-group:last-of-type,
573
+ #kc-update-email-form div.form-group:last-of-type{
574
+ margin-bottom: 0px;
575
+ }
576
+
577
+ .no-bottom-margin {
578
+ margin-bottom: 0;
579
+ }
580
+
581
+ #kc-back {
582
+ margin-top: 5px;
583
+ }
584
+
585
+ /* Recovery codes */
586
+ .kc-recovery-codes-warning {
587
+ margin-bottom: 32px;
588
+ }
589
+ .kc-recovery-codes-warning .pf-c-alert__description p {
590
+ font-size: 0.875rem;
591
+ }
592
+ .kc-recovery-codes-list {
593
+ list-style: none;
594
+ columns: 2;
595
+ margin: 16px 0;
596
+ padding: 16px 16px 8px 16px;
597
+ border: 1px solid #D2D2D2;
598
+ }
599
+ .kc-recovery-codes-list li {
600
+ margin-bottom: 8px;
601
+ font-size: 11px;
602
+ }
603
+ .kc-recovery-codes-list li span {
604
+ color: #6A6E73;
605
+ width: 16px;
606
+ text-align: right;
607
+ display: inline-block;
608
+ margin-right: 1px;
609
+ }
610
+
611
+ .kc-recovery-codes-actions {
612
+ margin-bottom: 24px;
613
+ }
614
+ .kc-recovery-codes-actions button {
615
+ padding-left: 0;
616
+ }
617
+ .kc-recovery-codes-actions button i {
618
+ margin-right: 8px;
619
+ }
620
+
621
+ .kc-recovery-codes-confirmation {
622
+ align-items: baseline;
623
+ margin-bottom: 16px;
624
+ }
625
+
626
+ #certificate_subjectDN {
627
+ overflow-wrap: break-word
628
+ }
629
+ /* End Recovery codes */
@@ -0,0 +1,49 @@
1
+ const CHECK_INTERVAL_MILLISECS = 2000;
2
+ const initialSession = getSession();
3
+
4
+ let timeout;
5
+
6
+ // Remove the timeout when unloading to avoid execution of the
7
+ // checkCookiesAndSetTimer when the page is already submitted
8
+ addEventListener("beforeunload", () => {
9
+ if (timeout) {
10
+ clearTimeout(timeout);
11
+ timeout = undefined;
12
+ }
13
+ });
14
+
15
+ export function checkCookiesAndSetTimer(loginRestartUrl) {
16
+ if (initialSession) {
17
+ // We started with a session, so there is nothing to do, exit.
18
+ return;
19
+ }
20
+
21
+ const session = getSession();
22
+
23
+ if (!session) {
24
+ // The session is not present, check again later.
25
+ timeout = setTimeout(
26
+ () => checkCookiesAndSetTimer(loginRestartUrl),
27
+ CHECK_INTERVAL_MILLISECS,
28
+ );
29
+ } else {
30
+ // Redirect to the login restart URL. This can typically automatically login user due the SSO
31
+ location.href = loginRestartUrl;
32
+ }
33
+ }
34
+
35
+ function getSession() {
36
+ return getCookieByName("KEYCLOAK_SESSION");
37
+ }
38
+
39
+ function getCookieByName(name) {
40
+ for (const cookie of document.cookie.split(";")) {
41
+ const [key, value] = cookie.split("=").map((value) => value.trim());
42
+ if (key === name) {
43
+ return value.startsWith('"') && value.endsWith('"')
44
+ ? value.slice(1, -1)
45
+ : value;
46
+ }
47
+ }
48
+ return null;
49
+ }