From 0f4b055a12ad5819da4e49d08d2b74d69722dcc7 Mon Sep 17 00:00:00 2001 From: Alex Mikhalev Date: Sun, 8 Jul 2018 20:44:45 -0700 Subject: [PATCH] Improved auth flow --- app/state/AppState.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/app/state/AppState.ts b/app/state/AppState.ts index c770e03..f74049b 100644 --- a/app/state/AppState.ts +++ b/app/state/AppState.ts @@ -1,10 +1,12 @@ -import { WebSocketRpcClient } from "@app/sprinklersRpc/websocketClient"; -import HttpApi from "@app/state/HttpApi"; -import { UiStore } from "@app/state/UiStore"; import { createBrowserHistory, History } from "history"; import { computed } from "mobx"; import { RouterStore, syncHistoryWithStore } from "mobx-react-router"; +import { WebSocketRpcClient } from "@app/sprinklersRpc/websocketClient"; +import HttpApi from "@app/state/HttpApi"; +import { UiStore } from "@app/state/UiStore"; +import log from "@common/logger"; + const isDev = process.env.NODE_ENV === "development"; const websocketPort = isDev ? 8080 : location.port; @@ -28,7 +30,13 @@ export default class AppState { if (!this.httpApi.tokenStore.accessToken.isValid) { if (this.httpApi.tokenStore.refreshToken.isValid) { - await this.httpApi.tokenStore.grantRefresh(); + try { + await this.httpApi.tokenStore.grantRefresh(); + } catch (err) { + log.warn({ err }, "could not refresh access token. erasing token"); + this.tokenStore.clear(); + this.history.push("/login"); + } } else { this.history.push("/login"); }