Improve error handling for OIDC discovery and registration

This commit is contained in:
Hugh Nimmo-Smith 2022-07-25 09:22:06 +01:00 committed by Quentin Gliech
parent 83843f62b1
commit 87bbba0253
No known key found for this signature in database
GPG Key ID: 22D62B84552719FC
2 changed files with 18 additions and 3 deletions

View File

@ -172,7 +172,12 @@ export class LoginViewModel extends ViewModel<SegmentType, Options> {
new StartOIDCLoginViewModel(this.childOptions({loginOptions: this._loginOptions}))
);
this.emitChange("startOIDCLoginViewModel");
this._startOIDCLoginViewModel.discover();
try {
await this._startOIDCLoginViewModel.discover();
} catch (err) {
this._showError(err.message);
this._disposeViewModels();
}
}
private _showError(message: string): void {

View File

@ -41,8 +41,18 @@ export class StartOIDCLoginViewModel extends ViewModel {
async discover() {
// Ask for the metadata once so it gets discovered and cached
await this._api.metadata()
await this._api.registration();
try {
await this._api.metadata()
} catch (err) {
this.logger.log("Failed to discover OIDC metadata: " + err);
throw new Error("Failed to discover OIDC metadata: " + err.message );
}
try {
await this._api.registration();
} catch (err) {
this.logger.log("Failed to register OIDC client: " + err);
throw new Error("Failed to register OIDC client: " + err.message );
}
}
async startOIDCLogin() {