UNPKG

angular-auth-oidc-client

Version:
76 lines 14 kB
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==