Fully deprecate function-style constructor for Keycloak JS (#19438)
This commit is contained in:
parent
85c0b47c31
commit
bdc019b02c
5 changed files with 30 additions and 4 deletions
|
@ -49,3 +49,19 @@ try {
|
||||||
alert('failed to initialize');
|
alert('failed to initialize');
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
= Keycloak JS adapter must be instanciated with the `new` operator
|
||||||
|
|
||||||
|
Historically it has been possible to create an instance of the Keycloak JS adapter by calling the `Keycloak()` function directly:
|
||||||
|
|
||||||
|
```js
|
||||||
|
const keycloak = Keycloak();
|
||||||
|
```
|
||||||
|
|
||||||
|
To align this with modern conventions in the JavaScript world it has been possible to use the https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new[`new` operator] to create an instance instead:
|
||||||
|
|
||||||
|
```js
|
||||||
|
const keycloak = new Keycloak();
|
||||||
|
```
|
||||||
|
|
||||||
|
The function-style constructor has been deprecated for a while, but starting this version we will actively log a deprecation message when it used. This style of constructor will be removed in a future version so make sure to migrate your code to use the `new` operator.
|
||||||
|
|
|
@ -130,7 +130,7 @@
|
||||||
document.getElementById('events').innerHTML = new Date().toLocaleString() + "\t" + event + "\n" + e;
|
document.getElementById('events').innerHTML = new Date().toLocaleString() + "\t" + event + "\n" + e;
|
||||||
}
|
}
|
||||||
|
|
||||||
var keycloak = Keycloak();
|
var keycloak = new Keycloak();
|
||||||
|
|
||||||
keycloak.onAuthSuccess = function () {
|
keycloak.onAuthSuccess = function () {
|
||||||
event('Auth Success');
|
event('Auth Success');
|
||||||
|
|
|
@ -21,8 +21,18 @@ if (typeof Promise === 'undefined') {
|
||||||
throw Error('Keycloak requires an environment that supports Promises. Make sure that you include the appropriate polyfill.');
|
throw Error('Keycloak requires an environment that supports Promises. Make sure that you include the appropriate polyfill.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var loggedConstructorDeprecation = false;
|
||||||
|
|
||||||
|
function logConstructorDeprecation() {
|
||||||
|
if (!loggedConstructorDeprecation) {
|
||||||
|
loggedConstructorDeprecation = true;
|
||||||
|
console.warn('[KEYCLOAK] Instantiation using the `Keycloak` function has been deprecated and support will be removed in future versions. Use the `new` operator to create an instance instead.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function Keycloak (config) {
|
function Keycloak (config) {
|
||||||
if (!(this instanceof Keycloak)) {
|
if (!(this instanceof Keycloak)) {
|
||||||
|
logConstructorDeprecation();
|
||||||
return new Keycloak(config);
|
return new Keycloak(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -167,10 +167,10 @@ public class JavascriptTestExecutor {
|
||||||
jsExecutor.executeScript("console.warn = event;");
|
jsExecutor.executeScript("console.warn = event;");
|
||||||
|
|
||||||
if (argumentsBuilder == null) {
|
if (argumentsBuilder == null) {
|
||||||
jsExecutor.executeScript("window.keycloak = Keycloak();");
|
jsExecutor.executeScript("window.keycloak = new Keycloak();");
|
||||||
} else {
|
} else {
|
||||||
String configArguments = argumentsBuilder.build();
|
String configArguments = argumentsBuilder.build();
|
||||||
jsExecutor.executeScript("window.keycloak = Keycloak(" + configArguments + ");");
|
jsExecutor.executeScript("window.keycloak = new Keycloak(" + configArguments + ");");
|
||||||
}
|
}
|
||||||
|
|
||||||
jsExecutor.executeScript("window.keycloak.onAuthSuccess = function () {event('Auth Success')};"); // event function is declared in index.html
|
jsExecutor.executeScript("window.keycloak.onAuthSuccess = function () {event('Auth Success')};"); // event function is declared in index.html
|
||||||
|
|
|
@ -124,7 +124,7 @@
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var keycloak = Keycloak({
|
var keycloak = new Keycloak({
|
||||||
authServerUrl: authUrl,
|
authServerUrl: authUrl,
|
||||||
realm: realm,
|
realm: realm,
|
||||||
clientId: 'account-console'
|
clientId: 'account-console'
|
||||||
|
|
Loading…
Reference in a new issue