angular-auth-oidc-client
Version:
Angular Lib for OpenID Connect & OAuth2
55 lines • 10 kB
JavaScript
import { Injectable, inject } from '@angular/core';
import { Router, } from '@angular/router';
import { map, switchMap, take } from 'rxjs/operators';
import { CheckAuthService } from '../auth-state/check-auth.service';
import { ConfigurationService } from '../config/config.service';
import { LoginService } from '../login/login.service';
import { AutoLoginService } from './auto-login.service';
import * as i0 from "@angular/core";
/**
* @deprecated Please do not use the `AutoLoginAllRoutesGuard` anymore as it is not recommended anymore, deprecated and will be removed in future versions of this library. More information [Why is AutoLoginAllRoutesGuard not recommended?](https://github.com/damienbod/angular-auth-oidc-client/issues/1549)
*/
export class AutoLoginAllRoutesGuard {
constructor() {
this.autoLoginService = inject(AutoLoginService);
this.checkAuthService = inject(CheckAuthService);
this.loginService = inject(LoginService);
this.configurationService = inject(ConfigurationService);
this.router = inject(Router);
}
canLoad() {
const url = this.router
.getCurrentNavigation()
?.extractedUrl.toString()
.substring(1) ?? '';
return checkAuth(url, this.configurationService, this.checkAuthService, this.autoLoginService, this.loginService);
}
canActivate(route, state) {
return checkAuth(state.url, this.configurationService, this.checkAuthService, this.autoLoginService, this.loginService);
}
canActivateChild(route, state) {
return checkAuth(state.url, this.configurationService, this.checkAuthService, this.autoLoginService, this.loginService);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutoLoginAllRoutesGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutoLoginAllRoutesGuard, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutoLoginAllRoutesGuard, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}] });
function checkAuth(url, configurationService, checkAuthService, autoLoginService, loginService) {
return configurationService.getOpenIDConfiguration().pipe(switchMap((config) => {
const allConfigs = configurationService.getAllConfigurations();
return checkAuthService.checkAuth(config, allConfigs).pipe(take(1), map(({ isAuthenticated }) => {
if (isAuthenticated) {
autoLoginService.checkSavedRedirectRouteAndNavigate(config);
}
if (!isAuthenticated) {
autoLoginService.saveRedirectRoute(config, url);
loginService.login(config);
}
return isAuthenticated;
}));
}));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1sb2dpbi1hbGwtcm91dGVzLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy9saWIvYXV0by1sb2dpbi9hdXRvLWxvZ2luLWFsbC1yb3V0ZXMuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUVMLE1BQU0sR0FHUCxNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFeEQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sdUJBQXVCO0lBRHBDO1FBRW1CLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTVDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTVDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXBDLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXBELFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0EyQzFDO0lBekNDLE9BQU87UUFDTCxNQUFNLEdBQUcsR0FDUCxJQUFJLENBQUMsTUFBTTthQUNSLG9CQUFvQixFQUFFO1lBQ3ZCLEVBQUUsWUFBWSxDQUFDLFFBQVEsRUFBRTthQUN4QixTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXhCLE9BQU8sU0FBUyxDQUNkLEdBQUcsRUFDSCxJQUFJLENBQUMsb0JBQW9CLEVBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsRUFDckIsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsWUFBWSxDQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FDVCxLQUE2QixFQUM3QixLQUEwQjtRQUUxQixPQUFPLFNBQVMsQ0FDZCxLQUFLLENBQUMsR0FBRyxFQUNULElBQUksQ0FBQyxvQkFBb0IsRUFDekIsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksQ0FBQyxZQUFZLENBQ2xCLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQ2QsS0FBNkIsRUFDN0IsS0FBMEI7UUFFMUIsT0FBTyxTQUFTLENBQ2QsS0FBSyxDQUFDLEdBQUcsRUFDVCxJQUFJLENBQUMsb0JBQW9CLEVBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsRUFDckIsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsWUFBWSxDQUNsQixDQUFDO0lBQ0osQ0FBQzs4R0FuRFUsdUJBQXVCO2tIQUF2Qix1QkFBdUIsY0FEVixNQUFNOzsyRkFDbkIsdUJBQXVCO2tCQURuQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUF1RGxDLFNBQVMsU0FBUyxDQUNoQixHQUFXLEVBQ1gsb0JBQTBDLEVBQzFDLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDbEMsWUFBMEI7SUFFMUIsT0FBTyxvQkFBb0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLElBQUksQ0FDdkQsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDbkIsTUFBTSxVQUFVLEdBQUcsb0JBQW9CLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUUvRCxPQUFPLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUN4RCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLENBQUMsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFO1lBQzFCLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLGdCQUFnQixDQUFDLGtDQUFrQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlELENBQUM7WUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3JCLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDaEQsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QixDQUFDO1lBRUQsT0FBTyxlQUFlLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBSb3V0ZXIsXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXG4gIFVybFRyZWUsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENoZWNrQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoLXN0YXRlL2NoZWNrLWF1dGguc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dG9Mb2dpblNlcnZpY2UgfSBmcm9tICcuL2F1dG8tbG9naW4uc2VydmljZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgUGxlYXNlIGRvIG5vdCB1c2UgdGhlIGBBdXRvTG9naW5BbGxSb3V0ZXNHdWFyZGAgYW55bW9yZSBhcyBpdCBpcyBub3QgcmVjb21tZW5kZWQgYW55bW9yZSwgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGlzIGxpYnJhcnkuIE1vcmUgaW5mb3JtYXRpb24gW1doeSBpcyBBdXRvTG9naW5BbGxSb3V0ZXNHdWFyZCBub3QgcmVjb21tZW5kZWQ/XShodHRwczovL2dpdGh1Yi5jb20vZGFtaWVuYm9kL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9pc3N1ZXMvMTU0OSlcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdXRvTG9naW5BbGxSb3V0ZXNHdWFyZCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0b0xvZ2luU2VydmljZSA9IGluamVjdChBdXRvTG9naW5TZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNoZWNrQXV0aFNlcnZpY2UgPSBpbmplY3QoQ2hlY2tBdXRoU2VydmljZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dpblNlcnZpY2UgPSBpbmplY3QoTG9naW5TZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25TZXJ2aWNlID0gaW5qZWN0KENvbmZpZ3VyYXRpb25TZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gIGNhbkxvYWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgdXJsID1cbiAgICAgIHRoaXMucm91dGVyXG4gICAgICAgIC5nZXRDdXJyZW50TmF2aWdhdGlvbigpXG4gICAgICAgID8uZXh0cmFjdGVkVXJsLnRvU3RyaW5nKClcbiAgICAgICAgLnN1YnN0cmluZygxKSA/PyAnJztcblxuICAgIHJldHVybiBjaGVja0F1dGgoXG4gICAgICB1cmwsXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgICAgdGhpcy5jaGVja0F1dGhTZXJ2aWNlLFxuICAgICAgdGhpcy5hdXRvTG9naW5TZXJ2aWNlLFxuICAgICAgdGhpcy5sb2dpblNlcnZpY2VcbiAgICApO1xuICB9XG5cbiAgY2FuQWN0aXZhdGUoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4ge1xuICAgIHJldHVybiBjaGVja0F1dGgoXG4gICAgICBzdGF0ZS51cmwsXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgICAgdGhpcy5jaGVja0F1dGhTZXJ2aWNlLFxuICAgICAgdGhpcy5hdXRvTG9naW5TZXJ2aWNlLFxuICAgICAgdGhpcy5sb2dpblNlcnZpY2VcbiAgICApO1xuICB9XG5cbiAgY2FuQWN0aXZhdGVDaGlsZChcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XG4gICAgcmV0dXJuIGNoZWNrQXV0aChcbiAgICAgIHN0YXRlLnVybCxcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgICB0aGlzLmNoZWNrQXV0aFNlcnZpY2UsXG4gICAgICB0aGlzLmF1dG9Mb2dpblNlcnZpY2UsXG4gICAgICB0aGlzLmxvZ2luU2VydmljZVxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tBdXRoKFxuICB1cmw6IHN0cmluZyxcbiAgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICBjaGVja0F1dGhTZXJ2aWNlOiBDaGVja0F1dGhTZXJ2aWNlLFxuICBhdXRvTG9naW5TZXJ2aWNlOiBBdXRvTG9naW5TZXJ2aWNlLFxuICBsb2dpblNlcnZpY2U6IExvZ2luU2VydmljZVxuKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gIHJldHVybiBjb25maWd1cmF0aW9uU2VydmljZS5nZXRPcGVuSURDb25maWd1cmF0aW9uKCkucGlwZShcbiAgICBzd2l0Y2hNYXAoKGNvbmZpZykgPT4ge1xuICAgICAgY29uc3QgYWxsQ29uZmlncyA9IGNvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldEFsbENvbmZpZ3VyYXRpb25zKCk7XG5cbiAgICAgIHJldHVybiBjaGVja0F1dGhTZXJ2aWNlLmNoZWNrQXV0aChjb25maWcsIGFsbENvbmZpZ3MpLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIG1hcCgoeyBpc0F1dGhlbnRpY2F0ZWQgfSkgPT4ge1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIGF1dG9Mb2dpblNlcnZpY2UuY2hlY2tTYXZlZFJlZGlyZWN0Um91dGVBbmROYXZpZ2F0ZShjb25maWcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICBhdXRvTG9naW5TZXJ2aWNlLnNhdmVSZWRpcmVjdFJvdXRlKGNvbmZpZywgdXJsKTtcbiAgICAgICAgICAgIGxvZ2luU2VydmljZS5sb2dpbihjb25maWcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBpc0F1dGhlbnRpY2F0ZWQ7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pXG4gICk7XG59XG4iXX0=