keycloakify 4.7.0 → 4.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ ### **4.7.3** (2022-04-08)
2
+
3
+ - Mention that there is still problems with M1 Mac
4
+
5
+ ### **4.7.2** (2022-04-06)
6
+
7
+ - #43: M1 Mac support
8
+
9
+ ### **4.7.1** (2022-03-30)
10
+
11
+ - Improve browser autofill
12
+ - factorization
13
+
1
14
  ## **4.7.0** (2022-03-17)
2
15
 
3
16
  - Add support for options validator
package/README.md CHANGED
@@ -30,10 +30,6 @@
30
30
  <img src="https://user-images.githubusercontent.com/6702424/110260457-a1c3d380-7fac-11eb-853a-80459b65626b.png">
31
31
  </p>
32
32
 
33
- > New in v4.7:
34
- > Register with user profile enabled: Out of the box `options` validator support.
35
- > [Example](https://user-images.githubusercontent.com/6702424/158911163-81e6bbe8-feb0-4dc8-abff-de199d7a678e.mov)
36
-
37
33
  # Motivations
38
34
 
39
35
  Keycloak provides [theme support](https://www.keycloak.org/docs/latest/server_development/#_themes) for web pages. This allows customizing the look and feel of end-user facing pages so they can be integrated with your applications.
@@ -478,6 +474,12 @@ and `kcRegisterContext["authorizedMailDomains"]` to validate on.
478
474
 
479
475
  # Changelog highlights
480
476
 
477
+ # v4.7.2
478
+
479
+ > WARNING: This is broken.
480
+ > Testing with local Keycloak container working with M1 Mac. Thanks to [@eduardosanzb](https://github.com/InseeFrLab/keycloakify/issues/43#issuecomment-975699658).
481
+ > Be aware: When running M1s you are testing with Keycloak v15 else the local container spun will be a Keycloak v16.1.0.
482
+
481
483
  # v4.7.0
482
484
 
483
485
  Register with user profile enabled: Out of the box `options` validator support.
@@ -39,6 +39,7 @@ var child_process = __importStar(require("child_process"));
39
39
  var generateDebugFiles_1 = require("./generateDebugFiles");
40
40
  var url_1 = require("url");
41
41
  var fs = __importStar(require("fs"));
42
+ var isM1_1 = require("../tools/isM1");
42
43
  var reactProjectDirPath = process.cwd();
43
44
  var doUseExternalAssets = ((_a = process.argv[2]) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === "--external-assets";
44
45
  var parsedPackageJson = require((0, path_1.join)(reactProjectDirPath, "package.json"));
@@ -97,7 +98,9 @@ function main() {
97
98
  keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath,
98
99
  themeName: themeName,
99
100
  //We want, however to test in a container running the latest Keycloak version
100
- "keycloakVersion": "16.1.0",
101
+ //Except on M1 where we can't use the default image and we only have
102
+ //https://github.com/InseeFrLab/keycloakify/issues/43#issuecomment-975699658
103
+ "keycloakVersion": (0, isM1_1.getIsM1)() ? "15.0.2" : "16.1.0",
101
104
  });
102
105
  console.log([
103
106
  "",
@@ -1 +1 @@
1
- {"version":3,"file":"build-keycloak-theme.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/build-keycloak-theme.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mFAAkF;AAClF,mEAAkE;AAClE,6BAA4F;AAC5F,2DAA+C;AAC/C,2DAAyF;AACzF,2BAA0B;AAC1B,qCAAyB;AAQzB,IAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAE1C,IAAM,mBAAmB,GAAG,CAAA,MAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAE,MAAK,mBAAmB,CAAC;AAEnF,IAAM,iBAAiB,GAAsB,OAAO,CAAC,IAAA,WAAQ,EAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC;AAEvF,QAAA,4BAA4B,GAAG,IAAA,WAAQ,EAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;AAE5F,SAAS,iBAAiB,CAAC,IAAY;IACnC,OAAO,IAAI;SACN,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;SACvB,KAAK,CAAC,GAAG,CAAC;SACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAgB,IAAI;;IAChB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAElD,IAAM,YAAY,GAAa,MAAA,MAAC,iBAAyB,CAAC,aAAa,CAAC,0CAAG,YAAY,CAAC,mCAAI,EAAE,CAAC;IAC/F,IAAM,oBAAoB,GAAa,MAAA,MAAC,iBAAyB,CAAC,aAAa,CAAC,0CAAG,sBAAsB,CAAC,mCAAI,EAAE,CAAC;IACjH,IAAM,SAAS,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAE5D,IAAA,+DAA8B,sBAC1B,4BAA4B,sCAAA,EAC5B,sBAAsB,EAAE,IAAA,WAAQ,EAAC,mBAAmB,EAAE,OAAO,CAAC,EAC9D,SAAS,WAAA,IACN,CAAC;QACA,IAAM,GAAG,GAAG,CAAC;YACD,IAAA,QAAQ,GAAK,iBAAiB,SAAtB,CAAuB;YAEvC,IAAI,QAAQ,KAAK,SAAS,EAAE;gBACxB,OAAO,IAAI,SAAG,CAAC,QAAQ,CAAC,CAAC;aAC5B;YAED,IAAM,aAAa,GAAG,IAAA,WAAQ,EAAC,mBAAmB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEvE,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;gBAC9B,OAAO,IAAI,SAAG,CAAC,aAAW,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAG,CAAC,CAAC;aACpG;YAED,OAAO,SAAS,CAAC;QACrB,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO;YACH,aAAa,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;YAC/E,WAAW,EAAE,CAAC,mBAAmB;gBAC7B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC;oBACG,IAAI,GAAG,KAAK,SAAS,EAAE;wBACnB,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;wBACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;qBACpB;oBAED,OAAO,GAAG,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,EAAE;SACb,CAAC;IACN,CAAC,CAAC,EAAE,KACJ,YAAY,cAAA,EACZ,oBAAoB,sBAAA;QACpB,mEAAmE;QACnE,+DAA+D;QAC/D,wDAAwD;QACxD,iBAAiB,EAAE,QAAQ,IAC7B,CAAC;IAEK,IAAA,WAAW,GAAK,IAAA,+CAAsB,EAAC;QAC3C,OAAO,EAAE,iBAAiB,CAAC,OAAO;QAClC,SAAS,WAAA;QACT,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;QACpC,4BAA4B,sCAAA;KAC/B,CAAC,YALiB,CAKhB;IAEH,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE;QAClC,KAAK,EAAE,oCAA4B;KACtC,CAAC,CAAC;IAEH,IAAA,uCAAkB,EAAC;QACf,4BAA4B,sCAAA;QAC5B,SAAS,WAAA;QACT,6EAA6E;QAC7E,iBAAiB,EAAE,QAAQ;KAC9B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CACP;QACI,EAAE;QACF,sEAA+D,IAAA,eAAY,EAAC,mBAAmB,EAAE,WAAW,CAAC,kBAAK;QAClH,8HAA4H;QAC5H,EAAE;QACF,2EAA2E;QAC3E,EAAE;QACF,cAAc;QACd,4BAA4B;QAC5B,oCAAoC;QACpC,kCAAkC;QAClC,yCAAyC;QACzC,oBAAoB;QACpB,kBAAkB;QAClB,iBAAiB;QACjB,kBAAkB;QAClB,gDAA8C,IAAA,eAAY,EAAC,WAAW,CAAC,4BAAuB,IAAA,eAAY,EAAC,WAAW,CAAG;QACzH,yBAAyB;QACzB,gCAAgC;QAChC,sCAAsC;QACtC,UAAU;QACV,8BAA8B;QAC9B,gCAAgC;QAChC,qEAAqE;QACrE,iBAAiB;QACjB,2BAA2B;QAC3B,oBAAoB;QACpB,+BAA+B;QAC/B,wBAAwB;QACxB,uBAAuB;QACvB,yCAAyC;QACzC,EAAE;QACF,EAAE;QACF,8HAA8H;QAC9H,EAAE;QACF,sBAAU,IAAA,eAAY,EAAC,mBAAmB,EAAE,IAAA,WAAQ,EAAC,oCAA4B,EAAE,kDAA6B,CAAC,CAAC,kBAAK;QACvH,EAAE;QACF,yCAAyC;QACzC,2FAA2F;QAC3F,kCAAkC;QAClC,oFAAoF;QACpF,2BAAyB,SAAS,sDAAmD;QACrF,iIAAyG;QACzG,EAAE;QACF,0DAA0D;QAC1D,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CACf,CAAC;AACN,CAAC;AArHD,oBAqHC"}
1
+ {"version":3,"file":"build-keycloak-theme.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/build-keycloak-theme.ts"],"names":[],"mappings":"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"}
@@ -22,12 +22,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
22
22
  exports.generateDebugFiles = exports.containerLaunchScriptBasename = void 0;
23
23
  var fs = __importStar(require("fs"));
24
24
  var path_1 = require("path");
25
+ var isM1_1 = require("../../tools/isM1");
25
26
  exports.containerLaunchScriptBasename = "start_keycloak_testing_container.sh";
26
27
  /** Files for being able to run a hot reload keycloak container */
27
28
  function generateDebugFiles(params) {
28
29
  var themeName = params.themeName, keycloakThemeBuildingDirPath = params.keycloakThemeBuildingDirPath, keycloakVersion = params.keycloakVersion;
29
30
  fs.writeFileSync((0, path_1.join)(keycloakThemeBuildingDirPath, "Dockerfile"), Buffer.from([
30
- "FROM jboss/keycloak:" + keycloakVersion,
31
+ "FROM " + ((0, isM1_1.getIsM1)()
32
+ ? "eduardosanzb/keycloak@sha256:b1f5bc674eaff6f4e7b37808b9863440310ff93c282fc9bff812377be48bf519"
33
+ : "jboss/keycloak:" + keycloakVersion),
31
34
  "",
32
35
  "USER root",
33
36
  "",
@@ -1 +1 @@
1
- {"version":3,"file":"generateDebugFiles.js","sourceRoot":"","sources":["../../../src/bin/build-keycloak-theme/generateDebugFiles/generateDebugFiles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyB;AACzB,6BAAgE;AAGnD,QAAA,6BAA6B,GAAG,qCAAqC,CAAC;AAEnF,kEAAkE;AAClE,SAAgB,kBAAkB,CAAC,MAAqG;IAC5H,IAAA,SAAS,GAAoD,MAAM,UAA1D,EAAE,4BAA4B,GAAsB,MAAM,6BAA5B,EAAE,eAAe,GAAK,MAAM,gBAAX,CAAY;IAE5E,EAAE,CAAC,aAAa,CACZ,IAAA,WAAQ,EAAC,4BAA4B,EAAE,YAAY,CAAC,EACpD,MAAM,CAAC,IAAI,CACP;QACI,yBAAuB,eAAiB;QACxC,EAAE;QACF,WAAW;QACX,EAAE;QACF,WAAW;QACX,EAAE;QACF,iEAAiE;QACjE,EAAE;QACF,wDAAwD;KAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACT,CACJ,CAAC;IAEF,IAAM,WAAW,GAAM,SAAS,yBAAsB,CAAC;IACvD,IAAM,aAAa,GAAG,4BAA4B,CAAC;IAEnD,EAAE,CAAC,aAAa,CACZ,IAAA,WAAQ,EAAC,4BAA4B,EAAE,qCAA6B,CAAC,EACrE,MAAM,CAAC,IAAI,CACP;QACI,aAAa;QACb,EAAE;QACF,QAAM,4BAA8B;QACpC,EAAE;QACF,eAAa,aAAa,aAAU;QACpC,EAAE;QACF,uBAAqB,WAAa;QAClC,EAAE;QACF,eAAe;QACf,oBAAoB;QACpB,eAAa,aAAa,QAAK;QAC/B,8BAA8B;QAC9B,kCAAkC;QAClC,+CAA+C;QAC/C,WAAS,IAAA,WAAQ,EACb,4BAA4B,EAC5B,KAAK,EACL,MAAM,EACN,WAAW,EACX,OAAO,EACP,SAAS,CACZ,oCAA+B,SAAS,WAAQ;QACjD,YAAU,WAAW,YAAS;QAC9B,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACT,EACD,EAAE,MAAM,EAAE,GAAK,EAAE,CACpB,CAAC;IAEF,IAAM,oBAAoB,GAAG,IAAA,WAAQ,EAAC,4BAA4B,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAE1G,IAAI;QACA,EAAE,CAAC,SAAS,CAAC,IAAA,cAAW,EAAC,oBAAoB,CAAC,CAAC,CAAC;KACnD;IAAC,WAAM,GAAE;IAEV,EAAE,CAAC,aAAa,CACZ,oBAAoB,EACpB,EAAE;SACG,YAAY,CAAC,IAAA,WAAQ,EAAC,SAAS,EAAE,mBAAiB,eAAe,SAAM,CAAC,CAAC;SACzE,QAAQ,CAAC,MAAM,CAAC;SAChB,OAAO,CACJ,IAAI,MAAM,CACN,CAAC,sCAAsC,EAAE,iCAAiC,EAAE,uCAAuC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EACjI,GAAG,CACN,EACD,CAAC,iCAAiC,EAAE,kCAAkC,EAAE,wCAAwC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/H,CACR,CAAC;AACN,CAAC;AA7ED,gDA6EC"}
1
+ {"version":3,"file":"generateDebugFiles.js","sourceRoot":"","sources":["../../../src/bin/build-keycloak-theme/generateDebugFiles/generateDebugFiles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyB;AACzB,6BAAgE;AAEhE,yCAA2C;AAE9B,QAAA,6BAA6B,GAAG,qCAAqC,CAAC;AAEnF,kEAAkE;AAClE,SAAgB,kBAAkB,CAAC,MAAqG;IAC5H,IAAA,SAAS,GAAoD,MAAM,UAA1D,EAAE,4BAA4B,GAAsB,MAAM,6BAA5B,EAAE,eAAe,GAAK,MAAM,gBAAX,CAAY;IAE5E,EAAE,CAAC,aAAa,CACZ,IAAA,WAAQ,EAAC,4BAA4B,EAAE,YAAY,CAAC,EACpD,MAAM,CAAC,IAAI,CACP;QACI,WACI,IAAA,cAAO,GAAE;YACL,CAAC,CAAC,+FAA+F;YACjG,CAAC,CAAC,oBAAkB,eAAiB,CAC3C;QACF,EAAE;QACF,WAAW;QACX,EAAE;QACF,WAAW;QACX,EAAE;QACF,iEAAiE;QACjE,EAAE;QACF,wDAAwD;KAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACT,CACJ,CAAC;IAEF,IAAM,WAAW,GAAM,SAAS,yBAAsB,CAAC;IACvD,IAAM,aAAa,GAAG,4BAA4B,CAAC;IAEnD,EAAE,CAAC,aAAa,CACZ,IAAA,WAAQ,EAAC,4BAA4B,EAAE,qCAA6B,CAAC,EACrE,MAAM,CAAC,IAAI,CACP;QACI,aAAa;QACb,EAAE;QACF,QAAM,4BAA8B;QACpC,EAAE;QACF,eAAa,aAAa,aAAU;QACpC,EAAE;QACF,uBAAqB,WAAa;QAClC,EAAE;QACF,eAAe;QACf,oBAAoB;QACpB,eAAa,aAAa,QAAK;QAC/B,8BAA8B;QAC9B,kCAAkC;QAClC,+CAA+C;QAC/C,WAAS,IAAA,WAAQ,EACb,4BAA4B,EAC5B,KAAK,EACL,MAAM,EACN,WAAW,EACX,OAAO,EACP,SAAS,CACZ,oCAA+B,SAAS,WAAQ;QACjD,YAAU,WAAW,YAAS;QAC9B,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACT,EACD,EAAE,MAAM,EAAE,GAAK,EAAE,CACpB,CAAC;IAEF,IAAM,oBAAoB,GAAG,IAAA,WAAQ,EAAC,4BAA4B,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAE1G,IAAI;QACA,EAAE,CAAC,SAAS,CAAC,IAAA,cAAW,EAAC,oBAAoB,CAAC,CAAC,CAAC;KACnD;IAAC,WAAM,GAAE;IAEV,EAAE,CAAC,aAAa,CACZ,oBAAoB,EACpB,EAAE;SACG,YAAY,CAAC,IAAA,WAAQ,EAAC,SAAS,EAAE,mBAAiB,eAAe,SAAM,CAAC,CAAC;SACzE,QAAQ,CAAC,MAAM,CAAC;SAChB,OAAO,CACJ,IAAI,MAAM,CACN,CAAC,sCAAsC,EAAE,iCAAiC,EAAE,uCAAuC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EACjI,GAAG,CACN,EACD,CAAC,iCAAiC,EAAE,kCAAkC,EAAE,wCAAwC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/H,CACR,CAAC;AACN,CAAC;AAjFD,gDAiFC"}
@@ -0,0 +1 @@
1
+ export declare function getIsM1(): boolean;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.getIsM1 = void 0;
23
+ var os = __importStar(require("os"));
24
+ function getIsM1() {
25
+ return os.cpus()[0].model.includes("Apple M1");
26
+ }
27
+ exports.getIsM1 = getIsM1;
28
+ //# sourceMappingURL=isM1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isM1.js","sourceRoot":"","sources":["../../src/bin/tools/isM1.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyB;AAEzB,SAAgB,OAAO;IACnB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACnD,CAAC;AAFD,0BAEC"}
@@ -46,23 +46,40 @@ var useKcMessage_1 = require("../i18n/useKcMessage");
46
46
  var tss_react_1 = require("tss-react");
47
47
  var useConstCallback_1 = require("powerhooks/useConstCallback");
48
48
  exports.Login = (0, react_1.memo)(function (_a) {
49
- var _b;
50
49
  var kcContext = _a.kcContext, props = __rest(_a, ["kcContext"]);
51
50
  var social = kcContext.social, realm = kcContext.realm, url = kcContext.url, usernameEditDisabled = kcContext.usernameEditDisabled, login = kcContext.login, auth = kcContext.auth, registrationDisabled = kcContext.registrationDisabled;
52
- var _c = (0, useKcMessage_1.useKcMessage)(), msg = _c.msg, msgStr = _c.msgStr;
51
+ var _b = (0, useKcMessage_1.useKcMessage)(), msg = _b.msg, msgStr = _b.msgStr;
53
52
  var cx = (0, tss_react_1.useCssAndCx)().cx;
54
- var _d = __read((0, react_1.useState)(false), 2), isLoginButtonDisabled = _d[0], setIsLoginButtonDisabled = _d[1];
55
- var onSubmit = (0, useConstCallback_1.useConstCallback)(function () { return (setIsLoginButtonDisabled(true), true); });
56
- return ((0, jsx_runtime_1.jsx)(Template_1.Template, __assign({}, __assign({ kcContext: kcContext }, props), { doFetchDefaultThemeResources: true, displayInfo: social.displayInfo, displayWide: realm.password && social.providers !== undefined, headerNode: msg("doLogIn"), formNode: (0, jsx_runtime_1.jsxs)("div", __assign({ id: "kc-form", className: cx(realm.password && social.providers !== undefined && props.kcContentWrapperClass) }, { children: [(0, jsx_runtime_1.jsx)("div", __assign({ id: "kc-form-wrapper", className: cx(realm.password && social.providers && [props.kcFormSocialAccountContentClass, props.kcFormSocialAccountClass]) }, { children: realm.password && ((0, jsx_runtime_1.jsxs)("form", __assign({ id: "kc-form-login", onSubmit: onSubmit, action: url.loginAction, method: "post" }, { children: [(0, jsx_runtime_1.jsxs)("div", __assign({ className: cx(props.kcFormGroupClass) }, { children: [(0, jsx_runtime_1.jsx)("label", __assign({ htmlFor: "username", className: cx(props.kcLabelClass) }, { children: !realm.loginWithEmailAllowed
57
- ? msg("username")
58
- : !realm.registrationEmailAsUsername
59
- ? msg("usernameOrEmail")
60
- : msg("email") }), void 0), (0, jsx_runtime_1.jsx)("input", __assign({ tabIndex: 1, id: "username", className: cx(props.kcInputClass), name: "username", defaultValue: (_b = login.username) !== null && _b !== void 0 ? _b : "", type: "text" }, (usernameEditDisabled
61
- ? { "disabled": true }
62
- : {
63
- "autoFocus": true,
64
- "autoComplete": "off",
65
- })), void 0)] }), void 0), (0, jsx_runtime_1.jsxs)("div", __assign({ className: cx(props.kcFormGroupClass) }, { children: [(0, jsx_runtime_1.jsx)("label", __assign({ htmlFor: "password", className: cx(props.kcLabelClass) }, { children: msg("password") }), void 0), (0, jsx_runtime_1.jsx)("input", { tabIndex: 2, id: "password", className: cx(props.kcInputClass), name: "password", type: "password", autoComplete: "off" }, void 0)] }), void 0), (0, jsx_runtime_1.jsxs)("div", __assign({ className: cx(props.kcFormGroupClass, props.kcFormSettingClass) }, { children: [(0, jsx_runtime_1.jsx)("div", __assign({ id: "kc-form-options" }, { children: realm.rememberMe && !usernameEditDisabled && ((0, jsx_runtime_1.jsx)("div", __assign({ className: "checkbox" }, { children: (0, jsx_runtime_1.jsxs)("label", { children: [(0, jsx_runtime_1.jsx)("input", __assign({ tabIndex: 3, id: "rememberMe", name: "rememberMe", type: "checkbox" }, (login.rememberMe
53
+ var _c = __read((0, react_1.useState)(false), 2), isLoginButtonDisabled = _c[0], setIsLoginButtonDisabled = _c[1];
54
+ var onSubmit = (0, useConstCallback_1.useConstCallback)(function (e) {
55
+ var _a;
56
+ e.preventDefault();
57
+ setIsLoginButtonDisabled(true);
58
+ var formElement = e.target;
59
+ //NOTE: Even if we login with email Keycloak expect username and password in
60
+ //the POST request.
61
+ (_a = formElement.querySelector("input[name='email']")) === null || _a === void 0 ? void 0 : _a.setAttribute("name", "username");
62
+ formElement.submit();
63
+ });
64
+ return ((0, jsx_runtime_1.jsx)(Template_1.Template, __assign({}, __assign({ kcContext: kcContext }, props), { doFetchDefaultThemeResources: true, displayInfo: social.displayInfo, displayWide: realm.password && social.providers !== undefined, headerNode: msg("doLogIn"), formNode: (0, jsx_runtime_1.jsxs)("div", __assign({ id: "kc-form", className: cx(realm.password && social.providers !== undefined && props.kcContentWrapperClass) }, { children: [(0, jsx_runtime_1.jsx)("div", __assign({ id: "kc-form-wrapper", className: cx(realm.password && social.providers && [props.kcFormSocialAccountContentClass, props.kcFormSocialAccountClass]) }, { children: realm.password && ((0, jsx_runtime_1.jsxs)("form", __assign({ id: "kc-form-login", onSubmit: onSubmit, action: url.loginAction, method: "post" }, { children: [(0, jsx_runtime_1.jsx)("div", __assign({ className: cx(props.kcFormGroupClass) }, { children: (function () {
65
+ var _a;
66
+ var label = !realm.loginWithEmailAllowed
67
+ ? "username"
68
+ : realm.registrationEmailAsUsername
69
+ ? "email"
70
+ : "usernameOrEmail";
71
+ var autoCompleteHelper = label === "usernameOrEmail" ? "username" : label;
72
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("label", __assign({ htmlFor: autoCompleteHelper, className: cx(props.kcLabelClass) }, { children: msg(label) }), void 0), (0, jsx_runtime_1.jsx)("input", __assign({ tabIndex: 1, id: autoCompleteHelper, className: cx(props.kcInputClass),
73
+ //NOTE: This is used by Google Chrome auto fill so we use it to tell
74
+ //the browser how to pre fill the form but before submit we put it back
75
+ //to username because it is what keycloak expects.
76
+ name: autoCompleteHelper, defaultValue: (_a = login.username) !== null && _a !== void 0 ? _a : "", type: "text" }, (usernameEditDisabled
77
+ ? { "disabled": true }
78
+ : {
79
+ "autoFocus": true,
80
+ "autoComplete": "off",
81
+ })), void 0)] }, void 0));
82
+ })() }), void 0), (0, jsx_runtime_1.jsxs)("div", __assign({ className: cx(props.kcFormGroupClass) }, { children: [(0, jsx_runtime_1.jsx)("label", __assign({ htmlFor: "password", className: cx(props.kcLabelClass) }, { children: msg("password") }), void 0), (0, jsx_runtime_1.jsx)("input", { tabIndex: 2, id: "password", className: cx(props.kcInputClass), name: "password", type: "password", autoComplete: "off" }, void 0)] }), void 0), (0, jsx_runtime_1.jsxs)("div", __assign({ className: cx(props.kcFormGroupClass, props.kcFormSettingClass) }, { children: [(0, jsx_runtime_1.jsx)("div", __assign({ id: "kc-form-options" }, { children: realm.rememberMe && !usernameEditDisabled && ((0, jsx_runtime_1.jsx)("div", __assign({ className: "checkbox" }, { children: (0, jsx_runtime_1.jsxs)("label", { children: [(0, jsx_runtime_1.jsx)("input", __assign({ tabIndex: 3, id: "rememberMe", name: "rememberMe", type: "checkbox" }, (login.rememberMe
66
83
  ? {
67
84
  "checked": true,
68
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Login.js","sourceRoot":"","sources":["../../src/lib/components/Login.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Login.js","sourceRoot":"","sources":["../../src/lib/components/Login.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keycloakify",
3
- "version": "4.7.0",
3
+ "version": "4.7.3",
4
4
  "description": "Keycloak theme generator for Reacts app",
5
5
  "repository": {
6
6
  "type": "git",
@@ -48,6 +48,7 @@
48
48
  "src/bin/tools/getProjectRoot.ts",
49
49
  "src/bin/tools/grant-exec-perms.ts",
50
50
  "src/bin/tools/isInside.ts",
51
+ "src/bin/tools/isM1.ts",
51
52
  "src/bin/tools/rm.ts",
52
53
  "src/bin/tools/transformCodebase.ts",
53
54
  "src/lib/components/Error.tsx",
@@ -162,6 +163,9 @@
162
163
  "bin/tools/isInside.d.ts",
163
164
  "bin/tools/isInside.js",
164
165
  "bin/tools/isInside.js.map",
166
+ "bin/tools/isM1.d.ts",
167
+ "bin/tools/isM1.js",
168
+ "bin/tools/isM1.js.map",
165
169
  "bin/tools/rm.d.ts",
166
170
  "bin/tools/rm.js",
167
171
  "bin/tools/rm.js.map",
@@ -5,6 +5,7 @@ import * as child_process from "child_process";
5
5
  import { generateDebugFiles, containerLaunchScriptBasename } from "./generateDebugFiles";
6
6
  import { URL } from "url";
7
7
  import * as fs from "fs";
8
+ import { getIsM1 } from "../tools/isM1";
8
9
 
9
10
  type ParsedPackageJson = {
10
11
  name: string;
@@ -92,7 +93,9 @@ export function main() {
92
93
  keycloakThemeBuildingDirPath,
93
94
  themeName,
94
95
  //We want, however to test in a container running the latest Keycloak version
95
- "keycloakVersion": "16.1.0",
96
+ //Except on M1 where we can't use the default image and we only have
97
+ //https://github.com/InseeFrLab/keycloakify/issues/43#issuecomment-975699658
98
+ "keycloakVersion": getIsM1() ? "15.0.2" : "16.1.0",
96
99
  });
97
100
 
98
101
  console.log(
@@ -1,6 +1,7 @@
1
1
  import * as fs from "fs";
2
2
  import { join as pathJoin, dirname as pathDirname } from "path";
3
3
  import type { KeycloakVersion } from "../../KeycloakVersion";
4
+ import { getIsM1 } from "../../tools/isM1";
4
5
 
5
6
  export const containerLaunchScriptBasename = "start_keycloak_testing_container.sh";
6
7
 
@@ -12,7 +13,11 @@ export function generateDebugFiles(params: { keycloakVersion: KeycloakVersion; t
12
13
  pathJoin(keycloakThemeBuildingDirPath, "Dockerfile"),
13
14
  Buffer.from(
14
15
  [
15
- `FROM jboss/keycloak:${keycloakVersion}`,
16
+ `FROM ${
17
+ getIsM1()
18
+ ? "eduardosanzb/keycloak@sha256:b1f5bc674eaff6f4e7b37808b9863440310ff93c282fc9bff812377be48bf519"
19
+ : `jboss/keycloak:${keycloakVersion}`
20
+ }`,
16
21
  "",
17
22
  "USER root",
18
23
  "",
@@ -0,0 +1,5 @@
1
+ import * as os from "os";
2
+
3
+ export function getIsM1() {
4
+ return os.cpus()[0].model.includes("Apple M1");
5
+ }
@@ -5,6 +5,7 @@ import type { KcContextBase } from "../getKcContext/KcContextBase";
5
5
  import { useKcMessage } from "../i18n/useKcMessage";
6
6
  import { useCssAndCx } from "tss-react";
7
7
  import { useConstCallback } from "powerhooks/useConstCallback";
8
+ import type { FormEventHandler } from "react";
8
9
 
9
10
  export const Login = memo(({ kcContext, ...props }: { kcContext: KcContextBase.Login } & KcProps) => {
10
11
  const { social, realm, url, usernameEditDisabled, login, auth, registrationDisabled } = kcContext;
@@ -15,7 +16,19 @@ export const Login = memo(({ kcContext, ...props }: { kcContext: KcContextBase.L
15
16
 
16
17
  const [isLoginButtonDisabled, setIsLoginButtonDisabled] = useState(false);
17
18
 
18
- const onSubmit = useConstCallback(() => (setIsLoginButtonDisabled(true), true));
19
+ const onSubmit = useConstCallback<FormEventHandler<HTMLFormElement>>(e => {
20
+ e.preventDefault();
21
+
22
+ setIsLoginButtonDisabled(true);
23
+
24
+ const formElement = e.target as HTMLFormElement;
25
+
26
+ //NOTE: Even if we login with email Keycloak expect username and password in
27
+ //the POST request.
28
+ formElement.querySelector("input[name='email']")?.setAttribute("name", "username");
29
+
30
+ formElement.submit();
31
+ });
19
32
 
20
33
  return (
21
34
  <Template
@@ -33,27 +46,40 @@ export const Login = memo(({ kcContext, ...props }: { kcContext: KcContextBase.L
33
46
  {realm.password && (
34
47
  <form id="kc-form-login" onSubmit={onSubmit} action={url.loginAction} method="post">
35
48
  <div className={cx(props.kcFormGroupClass)}>
36
- <label htmlFor="username" className={cx(props.kcLabelClass)}>
37
- {!realm.loginWithEmailAllowed
38
- ? msg("username")
39
- : !realm.registrationEmailAsUsername
40
- ? msg("usernameOrEmail")
41
- : msg("email")}
42
- </label>
43
- <input
44
- tabIndex={1}
45
- id="username"
46
- className={cx(props.kcInputClass)}
47
- name="username"
48
- defaultValue={login.username ?? ""}
49
- type="text"
50
- {...(usernameEditDisabled
51
- ? { "disabled": true }
52
- : {
53
- "autoFocus": true,
54
- "autoComplete": "off",
55
- })}
56
- />
49
+ {(() => {
50
+ const label = !realm.loginWithEmailAllowed
51
+ ? "username"
52
+ : realm.registrationEmailAsUsername
53
+ ? "email"
54
+ : "usernameOrEmail";
55
+
56
+ const autoCompleteHelper: typeof label = label === "usernameOrEmail" ? "username" : label;
57
+
58
+ return (
59
+ <>
60
+ <label htmlFor={autoCompleteHelper} className={cx(props.kcLabelClass)}>
61
+ {msg(label)}
62
+ </label>
63
+ <input
64
+ tabIndex={1}
65
+ id={autoCompleteHelper}
66
+ className={cx(props.kcInputClass)}
67
+ //NOTE: This is used by Google Chrome auto fill so we use it to tell
68
+ //the browser how to pre fill the form but before submit we put it back
69
+ //to username because it is what keycloak expects.
70
+ name={autoCompleteHelper}
71
+ defaultValue={login.username ?? ""}
72
+ type="text"
73
+ {...(usernameEditDisabled
74
+ ? { "disabled": true }
75
+ : {
76
+ "autoFocus": true,
77
+ "autoComplete": "off",
78
+ })}
79
+ />
80
+ </>
81
+ );
82
+ })()}
57
83
  </div>
58
84
  <div className={cx(props.kcFormGroupClass)}>
59
85
  <label htmlFor="password" className={cx(props.kcLabelClass)}>