diff --git a/package.json b/package.json
index 72879ae6..cbbc833b 100755
--- a/package.json
+++ b/package.json
@@ -54,7 +54,7 @@
"dependencies": {
"scripting-tools": "^0.19.13",
"cheerio": "^1.0.0-rc.5",
- "evt": "^1.9.12",
+ "evt": "2.0.0-beta.15",
"minimal-polyfills": "^2.1.6",
"powerhooks": "^0.0.14",
"tss-react": "^0.0.9"
diff --git a/src/bin/build-keycloak-theme/generateFtl/ftl2js.ftl b/src/bin/build-keycloak-theme/generateFtl/ftl2js.ftl
index c6c816d9..5c060197 100644
--- a/src/bin/build-keycloak-theme/generateFtl/ftl2js.ftl
+++ b/src/bin/build-keycloak-theme/generateFtl/ftl2js.ftl
@@ -6,7 +6,9 @@
"resourcesCommonPath": "${url.resourcesCommonPath}",
"loginRestartFlowUrl": "${url.loginRestartFlowUrl}",
"loginResetCredentialsUrl": "${url.loginResetCredentialsUrl}",
- "registrationUrl": "${url.registrationUrl}"
+ "registrationUrl": "${url.registrationUrl}",
+ "registrationAction": "${url.registrationUrl}",
+ "loginUrl": "${url.loginUrl}"
},
"realm": {
"displayName": "${realm.displayName!''}" || undefined,
@@ -168,6 +170,45 @@
#if>
return false;
- })
+ }),
+ "messagesPerField": {
+ "printIfExists": function (key, x) {
+ switch(key){
+ case "userLabel": "${messagesPerField.printIfExists('userLabel','1'}" ? x : undefined;
+ case "username": "${messagesPerField.printIfExists('username','1'}" ? x : undefined;
+ case "email": "${messagesPerField.printIfExists('email','1'}" ? x : undefined;
+ case "firstName": "${messagesPerField.printIfExists('firstName','1'}" ? x : undefined;
+ case "lastName": "${messagesPerField.printIfExists('lastName','1'}" ? x : undefined;
+ case "password": "${messagesPerField.printIfExists('password','1'}" ? x : undefined;
+ case "password-confirm": "${messagesPerField.printIfExists('password-confirm','1'}" ? x : undefined;
+ }
+ }
+ },
+ "register": {
+ "formData": {
+ "firstName": "${register.formData.firstName!''}" || undefined,
+ "displayName": "${register.formData.displayName!''}" || undefined,
+ "lastName": "${register.formData.lastName!''}" || undefined,
+ "email": "${register.formData.email!''}" || undefined,
+ "username": "${register.formData.username!''}" || undefined
+ }
+ },
+ "passwordRequired": (function (){
+
+ <#if passwordRequired??>
+ return true;
+ #if>
+ return false;
+
+ }),
+ "recaptchaRequired": (function (){
+
+ <#if passwordRequired??>
+ return true;
+ #if>
+ return false;
+
+ }),
+ "recaptchaSiteKey": "${recaptchaSiteKey}"
}
\ No newline at end of file
diff --git a/src/lib/components/KcApp.tsx b/src/lib/components/KcApp.tsx
index 4b743001..c4275aa0 100644
--- a/src/lib/components/KcApp.tsx
+++ b/src/lib/components/KcApp.tsx
@@ -4,6 +4,7 @@ import { kcContext } from "../kcContext";
import { assert } from "evt/tools/typeSafety/assert";
import type { KcPagesProperties } from "./KcProperties";
import { Login } from "./Login";
+import { Register } from "./Register";
export type KcAppProps = {
kcProperties?: KcPagesProperties;
@@ -16,10 +17,8 @@ export const KcApp = memo((props: KcAppProps) => {
assert(kcContext !== undefined, "App is not currently served by a Keycloak server");
switch (kcContext.pageBasename) {
- case "login.ftl": return