angular-auth-oidc-client
Version:
Angular Lib for OpenID Connect & OAuth2
76 lines • 14 kB
JavaScript
import { Injectable, inject } from '@angular/core';
import { Router, } from '@angular/router';
import { map } from 'rxjs/operators';
import { AuthStateService } from '../auth-state/auth-state.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";
export class AutoLoginPartialRoutesGuard {
constructor() {
this.autoLoginService = inject(AutoLoginService);
this.authStateService = inject(AuthStateService);
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.authStateService, this.autoLoginService, this.loginService);
}
canActivate(route, state) {
const authOptions = route?.data
? { customParams: route.data }
: undefined;
return checkAuth(state.url, this.configurationService, this.authStateService, this.autoLoginService, this.loginService, authOptions);
}
canActivateChild(route, state) {
const authOptions = route?.data
? { customParams: route.data }
: undefined;
return checkAuth(state.url, this.configurationService, this.authStateService, this.autoLoginService, this.loginService, authOptions);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutoLoginPartialRoutesGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutoLoginPartialRoutesGuard, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutoLoginPartialRoutesGuard, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}] });
export function autoLoginPartialRoutesGuard(route, state, configId) {
const configurationService = inject(ConfigurationService);
const authStateService = inject(AuthStateService);
const loginService = inject(LoginService);
const autoLoginService = inject(AutoLoginService);
const router = inject(Router);
const authOptions = route?.data
? { customParams: route.data }
: undefined;
const url = router.getCurrentNavigation()?.extractedUrl.toString().substring(1) ?? '';
return checkAuth(url, configurationService, authStateService, autoLoginService, loginService, authOptions, configId);
}
export function autoLoginPartialRoutesGuardWithConfig(configId) {
return (route, state) => autoLoginPartialRoutesGuard(route, state, configId);
}
function checkAuth(url, configurationService, authStateService, autoLoginService, loginService, authOptions, configId) {
return configurationService.getOpenIDConfiguration(configId).pipe(map((configuration) => {
const isAuthenticated = authStateService.areAuthStorageTokensValid(configuration);
if (isAuthenticated) {
autoLoginService.checkSavedRedirectRouteAndNavigate(configuration);
}
if (!isAuthenticated) {
autoLoginService.saveRedirectRoute(configuration, url);
if (authOptions) {
loginService.login(configuration, authOptions);
}
else {
loginService.login(configuration);
}
}
return isAuthenticated;
}));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1sb2dpbi1wYXJ0aWFsLXJvdXRlcy5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvbGliL2F1dG8tbG9naW4vYXV0by1sb2dpbi1wYXJ0aWFsLXJvdXRlcy5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBRUwsTUFBTSxHQUVQLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFHeEQsTUFBTSxPQUFPLDJCQUEyQjtJQUR4QztRQUVtQixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU1QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU1QyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVwQyx5QkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUVwRCxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBcUQxQztJQW5EQyxPQUFPO1FBQ0wsTUFBTSxHQUFHLEdBQ1AsSUFBSSxDQUFDLE1BQU07YUFDUixvQkFBb0IsRUFBRTtZQUN2QixFQUFFLFlBQVksQ0FBQyxRQUFRLEVBQUU7YUFDeEIsU0FBUyxDQUFDLENBQUMsQ0FB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LENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtRQUNwQixNQUFNLGVBQWUsR0FDbkIsZ0JBQWdCLENBQUMseUJBQXlCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFNUQsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixnQkFBZ0IsQ0FBQyxrQ0FBa0MsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JCLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN2RCxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixZQUFZLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNqRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sWUFBWSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNwQyxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBSb3V0ZXIsXHJcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcclxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQXV0aE9wdGlvbnMgfSBmcm9tICcuLi9hdXRoLW9wdGlvbnMnO1xyXG5pbXBvcnQgeyBBdXRoU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC1zdGF0ZS9hdXRoLXN0YXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZy9jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRvTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9hdXRvLWxvZ2luLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEF1dG9Mb2dpblBhcnRpYWxSb3V0ZXNHdWFyZCB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRvTG9naW5TZXJ2aWNlID0gaW5qZWN0KEF1dG9Mb2dpblNlcnZpY2UpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTdGF0ZVNlcnZpY2UgPSBpbmplY3QoQXV0aFN0YXRlU2VydmljZSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9naW5TZXJ2aWNlID0gaW5qZWN0KExvZ2luU2VydmljZSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlndXJhdGlvblNlcnZpY2UgPSBpbmplY3QoQ29uZmlndXJhdGlvblNlcnZpY2UpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cclxuICBjYW5Mb2FkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3QgdXJsID1cclxuICAgICAgdGhpcy5yb3V0ZXJcclxuICAgICAgICAuZ2V0Q3VycmVudE5hdmlnYXRpb24oKVxyXG4gICAgICAgID8uZXh0cmFjdGVkVXJsLnRvU3RyaW5nKClcclxuICAgICAgICAuc3Vic3RyaW5nKDEpID8/ICcnO1xyXG5cclxuICAgIHJldHVybiBjaGVja0F1dGgoXHJcbiAgICAgIHVybCxcclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgICAgdGhpcy5hdXRoU3RhdGVTZXJ2aWNlLFxyXG4gICAgICB0aGlzLmF1dG9Mb2dpblNlcnZpY2UsXHJcbiAgICAgIHRoaXMubG9naW5TZXJ2aWNlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2FuQWN0aXZhdGUoXHJcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XHJcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCBhdXRoT3B0aW9uczogQXV0aE9wdGlvbnMgfCB1bmRlZmluZWQgPSByb3V0ZT8uZGF0YVxyXG4gICAgICA/IHsgY3VzdG9tUGFyYW1zOiByb3V0ZS5kYXRhIH1cclxuICAgICAgOiB1bmRlZmluZWQ7XHJcblxyXG4gICAgcmV0dXJuIGNoZWNrQXV0aChcclxuICAgICAgc3RhdGUudXJsLFxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgICB0aGlzLmF1dGhTdGF0ZVNlcnZpY2UsXHJcbiAgICAgIHRoaXMuYXV0b0xvZ2luU2VydmljZSxcclxuICAgICAgdGhpcy5sb2dpblNlcnZpY2UsXHJcbiAgICAgIGF1dGhPcHRpb25zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2FuQWN0aXZhdGVDaGlsZChcclxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcclxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IGF1dGhPcHRpb25zOiBBdXRoT3B0aW9ucyB8IHVuZGVmaW5lZCA9IHJvdXRlPy5kYXRhXHJcbiAgICAgID8geyBjdXN0b21QYXJhbXM6IHJvdXRlLmRhdGEgfVxyXG4gICAgICA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICByZXR1cm4gY2hlY2tBdXRoKFxyXG4gICAgICBzdGF0ZS51cmwsXHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICAgIHRoaXMuYXV0aFN0YXRlU2VydmljZSxcclxuICAgICAgdGhpcy5hdXRvTG9naW5TZXJ2aWNlLFxyXG4gICAgICB0aGlzLmxvZ2luU2VydmljZSxcclxuICAgICAgYXV0aE9wdGlvbnNcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYXV0b0xvZ2luUGFydGlhbFJvdXRlc0d1YXJkKFxyXG4gIHJvdXRlPzogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBzdGF0ZT86IFJvdXRlclN0YXRlU25hcHNob3QsXHJcbiAgY29uZmlnSWQ/OiBzdHJpbmdcclxuKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgY29uc3QgY29uZmlndXJhdGlvblNlcnZpY2UgPSBpbmplY3QoQ29uZmlndXJhdGlvblNlcnZpY2UpO1xyXG4gIGNvbnN0IGF1dGhTdGF0ZVNlcnZpY2UgPSBpbmplY3QoQXV0aFN0YXRlU2VydmljZSk7XHJcbiAgY29uc3QgbG9naW5TZXJ2aWNlID0gaW5qZWN0KExvZ2luU2VydmljZSk7XHJcbiAgY29uc3QgYXV0b0xvZ2luU2VydmljZSA9IGluamVjdChBdXRvTG9naW5TZXJ2aWNlKTtcclxuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICBjb25zdCBhdXRoT3B0aW9uczogQXV0aE9wdGlvbnMgfCB1bmRlZmluZWQgPSByb3V0ZT8uZGF0YVxyXG4gICAgPyB7IGN1c3RvbVBhcmFtczogcm91dGUuZGF0YSB9XHJcbiAgICA6IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3QgdXJsID1cclxuICAgIHJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpPy5leHRyYWN0ZWRVcmwudG9TdHJpbmcoKS5zdWJzdHJpbmcoMSkgPz8gJyc7XHJcblxyXG4gIHJldHVybiBjaGVja0F1dGgoXHJcbiAgICB1cmwsXHJcbiAgICBjb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIGF1dGhTdGF0ZVNlcnZpY2UsXHJcbiAgICBhdXRvTG9naW5TZXJ2aWNlLFxyXG4gICAgbG9naW5TZXJ2aWNlLFxyXG4gICAgYXV0aE9wdGlvbnMsXHJcbiAgICBjb25maWdJZFxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhdXRvTG9naW5QYXJ0aWFsUm91dGVzR3VhcmRXaXRoQ29uZmlnKFxyXG4gIGNvbmZpZ0lkOiBzdHJpbmdcclxuKTogKFxyXG4gIHJvdXRlPzogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBzdGF0ZT86IFJvdXRlclN0YXRlU25hcHNob3RcclxuKSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICByZXR1cm4gKHJvdXRlPzogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSA9PlxyXG4gICAgYXV0b0xvZ2luUGFydGlhbFJvdXRlc0d1YXJkKHJvdXRlLCBzdGF0ZSwgY29uZmlnSWQpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjaGVja0F1dGgoXHJcbiAgdXJsOiBzdHJpbmcsXHJcbiAgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gIGF1dGhTdGF0ZVNlcnZpY2U6IEF1dGhTdGF0ZVNlcnZpY2UsXHJcbiAgYXV0b0xvZ2luU2VydmljZTogQXV0b0xvZ2luU2VydmljZSxcclxuICBsb2dpblNlcnZpY2U6IExvZ2luU2VydmljZSxcclxuICBhdXRoT3B0aW9ucz86IEF1dGhPcHRpb25zLFxyXG4gIGNvbmZpZ0lkPzogc3RyaW5nXHJcbik6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gIHJldHVybiBjb25maWd1cmF0aW9uU2VydmljZS5nZXRPcGVuSURDb25maWd1cmF0aW9uKGNvbmZpZ0lkKS5waXBlKFxyXG4gICAgbWFwKChjb25maWd1cmF0aW9uKSA9PiB7XHJcbiAgICAgIGNvbnN0IGlzQXV0aGVudGljYXRlZCA9XHJcbiAgICAgICAgYXV0aFN0YXRlU2VydmljZS5hcmVBdXRoU3RvcmFnZVRva2Vuc1ZhbGlkKGNvbmZpZ3VyYXRpb24pO1xyXG5cclxuICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xyXG4gICAgICAgIGF1dG9Mb2dpblNlcnZpY2UuY2hlY2tTYXZlZFJlZGlyZWN0Um91dGVBbmROYXZpZ2F0ZShjb25maWd1cmF0aW9uKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFpc0F1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgICBhdXRvTG9naW5TZXJ2aWNlLnNhdmVSZWRpcmVjdFJvdXRlKGNvbmZpZ3VyYXRpb24sIHVybCk7XHJcbiAgICAgICAgaWYgKGF1dGhPcHRpb25zKSB7XHJcbiAgICAgICAgICBsb2dpblNlcnZpY2UubG9naW4oY29uZmlndXJhdGlvbiwgYXV0aE9wdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsb2dpblNlcnZpY2UubG9naW4oY29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gaXNBdXRoZW50aWNhdGVkO1xyXG4gICAgfSlcclxuICApO1xyXG59XHJcbiJdfQ==