mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-16 13:56:35 +00:00
Add revoke token to (external) auth (#1639)
* Add revoke token to external auth * Lint * Update to HAWS 3.1.1 * Fix constant
This commit is contained in:
parent
300425e698
commit
0d7979a72f
@ -68,7 +68,7 @@
|
||||
"es6-object-assign": "^1.1.0",
|
||||
"eslint-import-resolver-webpack": "^0.10.0",
|
||||
"fecha": "^2.3.3",
|
||||
"home-assistant-js-websocket": "^3.0.0",
|
||||
"home-assistant-js-websocket": "^3.1.1",
|
||||
"intl-messageformat": "^2.2.0",
|
||||
"js-yaml": "^3.12.0",
|
||||
"leaflet": "^1.3.1",
|
||||
|
@ -3,7 +3,8 @@
|
||||
*/
|
||||
import { Auth } from 'home-assistant-js-websocket';
|
||||
|
||||
const CALLBACK_METHOD = 'externalAuthSetToken';
|
||||
const CALLBACK_SET_TOKEN = 'externalAuthSetToken';
|
||||
const CALLBACK_REVOKE_TOKEN = 'externalAuthRevokeToken';
|
||||
|
||||
if (!window.externalApp && !window.webkit) {
|
||||
throw new Error('External auth requires either externalApp or webkit defined on Window object.');
|
||||
@ -22,12 +23,12 @@ export default class ExternalAuth extends Auth {
|
||||
}
|
||||
|
||||
async refreshAccessToken() {
|
||||
const responseProm = new Promise((resolve) => { window[CALLBACK_METHOD] = resolve; });
|
||||
const responseProm = new Promise((resolve) => { window[CALLBACK_SET_TOKEN] = resolve; });
|
||||
|
||||
// Allow promise to set resolve on window object.
|
||||
await 0;
|
||||
|
||||
const callbackPayload = { callback: CALLBACK_METHOD };
|
||||
const callbackPayload = { callback: CALLBACK_SET_TOKEN };
|
||||
|
||||
if (window.externalApp) {
|
||||
window.externalApp.getExternalAuth(callbackPayload);
|
||||
@ -45,4 +46,21 @@ export default class ExternalAuth extends Auth {
|
||||
this.data.access_token = tokens.access_token;
|
||||
this.data.expires = (tokens.expires_in * 1000) + Date.now();
|
||||
}
|
||||
|
||||
async revoke() {
|
||||
const responseProm = new Promise((resolve) => { window[CALLBACK_REVOKE_TOKEN] = resolve; });
|
||||
|
||||
// Allow promise to set resolve on window object.
|
||||
await 0;
|
||||
|
||||
const callbackPayload = { callback: CALLBACK_REVOKE_TOKEN };
|
||||
|
||||
if (window.externalApp) {
|
||||
window.externalApp.revokeExternalAuth(callbackPayload);
|
||||
} else {
|
||||
window.webkit.messageHandlers.revokeExternalAuth.postMessage(callbackPayload);
|
||||
}
|
||||
|
||||
await responseProm;
|
||||
}
|
||||
}
|
||||
|
@ -27,9 +27,16 @@ export default superClass => class extends superClass {
|
||||
});
|
||||
}
|
||||
|
||||
_handleLogout() {
|
||||
this.hass.connection.close();
|
||||
clearState();
|
||||
document.location.href = '/';
|
||||
async _handleLogout() {
|
||||
try {
|
||||
await this.hass.auth.revoke();
|
||||
this.hass.connection.close();
|
||||
clearState();
|
||||
document.location.href = '/';
|
||||
} catch (err) {
|
||||
// eslint-disable-next-line
|
||||
console.error(err);
|
||||
alert('Log out failed');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -6561,9 +6561,9 @@ hoek@4.x.x:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb"
|
||||
|
||||
home-assistant-js-websocket@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/home-assistant-js-websocket/-/home-assistant-js-websocket-3.0.0.tgz#498828a29827bdd1f3e99cf3b5e152694cededbf"
|
||||
home-assistant-js-websocket@^3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/home-assistant-js-websocket/-/home-assistant-js-websocket-3.1.1.tgz#264f9efdafdff1053294b07bcaa5629e51a22b73"
|
||||
|
||||
home-or-tmp@^2.0.0:
|
||||
version "2.0.0"
|
||||
|
Loading…
x
Reference in New Issue
Block a user