[EC-178] Logout on Key Connector error (#816)

This commit is contained in:
Thomas Rittson 2022-05-26 06:18:14 +10:00 committed by GitHub
parent cc751e0287
commit a6fe5c7900
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 7 deletions

View File

@ -218,11 +218,13 @@ export class SsoComponent {
}
} catch (e) {
this.logService.error(e);
if (e.message === "Unable to reach key connector") {
// TODO: Key Connector Service should pass this error message to the logout callback instead of displaying here
if (e.message === "Key Connector error") {
this.platformUtilsService.showToast(
"error",
null,
this.i18nService.t("ssoKeyConnectorUnavailable")
this.i18nService.t("ssoKeyConnectorError")
);
}
}

View File

@ -399,6 +399,7 @@ export const SYSTEM_LANGUAGE = new InjectionToken<string>("SYSTEM_LANGUAGE");
LogService,
OrganizationServiceAbstraction,
CryptoFunctionServiceAbstraction,
LOGOUT_CALLBACK,
],
},
{

View File

@ -22,7 +22,8 @@ export class KeyConnectorService implements KeyConnectorServiceAbstraction {
private tokenService: TokenService,
private logService: LogService,
private organizationService: OrganizationService,
private cryptoFunctionService: CryptoFunctionService
private cryptoFunctionService: CryptoFunctionService,
private logoutCallback: (expired: boolean, userId?: string) => void
) {}
setUsesKeyConnector(usesKeyConnector: boolean) {
@ -52,7 +53,7 @@ export class KeyConnectorService implements KeyConnectorServiceAbstraction {
keyConnectorRequest
);
} catch (e) {
throw new Error("Unable to reach key connector");
this.handleKeyConnectorError(e);
}
await this.apiService.postConvertToKeyConnector();
@ -65,8 +66,7 @@ export class KeyConnectorService implements KeyConnectorServiceAbstraction {
const k = new SymmetricCryptoKey(keyArr);
await this.cryptoService.setKey(k);
} catch (e) {
this.logService.error(e);
throw new Error("Unable to reach key connector");
this.handleKeyConnectorError(e);
}
}
@ -102,7 +102,7 @@ export class KeyConnectorService implements KeyConnectorServiceAbstraction {
try {
await this.apiService.postUserKeyToKeyConnector(keyConnectorUrl, keyConnectorRequest);
} catch (e) {
throw new Error("Unable to reach key connector");
this.handleKeyConnectorError(e);
}
const keys = new KeysRequest(pubKey, privKey.encryptedString);
@ -131,4 +131,12 @@ export class KeyConnectorService implements KeyConnectorServiceAbstraction {
async clear() {
await this.removeConvertAccountRequired();
}
private handleKeyConnectorError(e: any) {
this.logService.error(e);
if (this.logoutCallback != null) {
this.logoutCallback(false);
}
throw new Error("Key Connector error");
}
}