Skip to content

Commit

Permalink
Crash OIDC lib neatly when running without OIDC config.
Browse files Browse the repository at this point in the history
  • Loading branch information
fredx30 committed Mar 3, 2022
1 parent c4c574a commit 66b7d05
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 21 deletions.
4 changes: 2 additions & 2 deletions src/app/nav/nav.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -85,9 +85,9 @@ <h3>WHARF</h3>
<div pTooltip='This feature has not yet been implemented. Stay tuned!' tooltipPosition="bottom">
<p-menu styleClass="menu-item" [model]="items"></p-menu>
</div>
<p-menu styleClass="menu-item" [model]="loginItem"></p-menu>
<p-menu styleClass="menu-item" *ngIf="!isUsingPlaceholderOidcConfig" [model]="loginItem"></p-menu>
<p-menu styleClass="menu-item" [model]="documentationItem"></p-menu>
</div>
<p-menu styleClass="menu-item" [model]="userItem"></p-menu>
<p-menu styleClass="menu-item" *ngIf="!isUsingPlaceholderOidcConfig" [model]="userItem"></p-menu>
</div>
</nav>
6 changes: 6 additions & 0 deletions src/app/nav/nav.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { LicensesService } from '../shared/licenses/licenses.service';
import { Router } from '@angular/router';
import { OidcSecurityService } from 'angular-auth-oidc-client';
import { takeUntil } from 'rxjs/operators';
import { ConfigService } from '../shared/config/config.service';

enum RemoteVersionStatus {
Pending,
Expand Down Expand Up @@ -70,6 +71,7 @@ export class NavComponent implements OnInit, OnDestroy {
private licensesService: LicensesService,
private router: Router,
private oidcSecurityService: OidcSecurityService,
private configService: ConfigService,
) {
}

Expand Down Expand Up @@ -99,6 +101,10 @@ export class NavComponent implements OnInit, OnDestroy {
this.setMenuOptsAuth();
}

public isUsingPlaceholderOidcConfig(): Observable<boolean> {
return this.configService.isPlaceHolderOidcConfig$;
}

public ngOnDestroy() {
this.isDestroyed$.next(true);
this.isDestroyed$.complete();
Expand Down
19 changes: 16 additions & 3 deletions src/app/shared/config/config.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { Config } from './config';
import { Configuration } from 'api-client';
import { Configuration as GitlabConfiguration } from 'import-gitlab-client';
import { Configuration as AzureDevOpsConfiguration } from 'import-azuredevops-client';
import { OpenIdConfiguration } from 'angular-auth-oidc-client';
import { config, Observable, of, pluck } from 'rxjs';
import { LogLevel, OpenIdConfiguration } from 'angular-auth-oidc-client';
import { BehaviorSubject, config, Observable, of, pluck } from 'rxjs';
import { catchError, map, tap } from 'rxjs/operators';
import { resolve } from '@angular/compiler-cli/src/ngtsc/file_system';
import { HttpClient } from '@angular/common/http';
Expand Down Expand Up @@ -45,12 +45,19 @@ export const lowClone = <T>(obj: T): T => {
return clone;
};

const defaultOidcConfig = {
authority: 'https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration',
redirectUrl: window.location.origin,
clientId: 'placeholder',
};

const configUrl = 'assets/config.json';

@Injectable({
providedIn: 'root',
})
export class ConfigService {
public isPlaceHolderOidcConfig$ = new BehaviorSubject<boolean>(true);
private config: Config;

constructor(
Expand Down Expand Up @@ -99,7 +106,13 @@ export class ConfigService {

public getOidcConfig$(): Observable<OpenIdConfiguration> {
return this.getConfig$().pipe(
map<Config,OpenIdConfiguration>((configuration: Config) => configuration.oidcConfig),
map<Config,OpenIdConfiguration>((configuration: Config) => {
if (!configuration?.oidcConfig){
return defaultOidcConfig;
this.isPlaceHolderOidcConfig$.next(true);
}
return configuration.oidcConfig;
}),
);
}

Expand Down
2 changes: 1 addition & 1 deletion src/app/shared/config/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { OpenIdConfiguration } from 'angular-auth-oidc-client';
export interface Config {
environment: EnvironmentConfig;
backendUrls: BackendUrlsConfig;
oidcConfig: OpenIdConfiguration;
oidcConfig?: OpenIdConfiguration;
}

interface EnvironmentConfig {
Expand Down
15 changes: 0 additions & 15 deletions src/assets/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,5 @@
"GitlabImport": "http://localhost:4200/import",
"GithubImport": "http://localhost:4200/import",
"AzureDevopsImport": "http://localhost:4200/import"
},
"oidcConfig": {
"authority": "https://login.microsoftonline.com/841df554-ef9d-48b1-bc6e-44cf8543a8fc/v2.0/.well-known/openid-configuration",
"redirectUrl": "http://localhost:4200",
"postLogoutRedirectUri": "http://localhost:4200",
"clientId": "01fcb3dc-7a2b-4b1c-a7d6-d7033089c779",
"scope": "openid profile email offline_access api://wharf-internal/read api://wharf-internal/admin api://wharf-internal/deploy",
"responseType": "id_token token",
"ignoreNonceAfterRefresh": true,
"silentRenew": true,
"useRefreshToken": true,
"logLevel": "debug",
"maxIdTokenIatOffsetAllowedInSeconds": 600,
"issValidationOff": false,
"autoUserInfo": false
}
}

0 comments on commit 66b7d05

Please sign in to comment.