UNPKG

angular-simple-oidc

Version:

Angular Library implementing Open Id Connect specification. Code Flow, Refresh Tokens, Session Management, Discovery Document.

33 lines 4.23 kB
import { Injectable } from '@angular/core'; import { map, take, switchMap } from 'rxjs/operators'; import { of } from 'rxjs'; import { AuthService } from '../auth.service'; import { EventsService, SimpleOidcInfoEvent } from 'angular-simple-oidc/events'; export class AuthGuard { constructor(auth, events) { this.auth = auth; this.events = events; } canActivate(next, state) { return this.auth.isLoggedIn$ .pipe(take(1), switchMap(authenticated => { if (!authenticated) { this.events.dispatch(new SimpleOidcInfoEvent(`Route requires auth. No token or it's expired.`, { route: state.url })); return this.auth.startCodeFlow({ returnUrlAfterCallback: state.url }) // return false so that route change does not happen .pipe(map(() => false)); } return of(true); })); } } AuthGuard.decorators = [ { type: Injectable } ]; AuthGuard.ctorParameters = () => [ { type: AuthService }, { type: EventsService } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2ltcGxlLW9pZGMvc3JjL2xpYi9ndWFyZHMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdoRixNQUFNLE9BQU8sU0FBUztJQUVwQixZQUNxQixJQUFpQixFQUNqQixNQUFxQjtRQURyQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQWU7SUFDdEMsQ0FBQztJQUVFLFdBQVcsQ0FDaEIsSUFBNEIsRUFDNUIsS0FBMEI7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7YUFDekIsSUFBSSxDQUNILElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxnREFBZ0QsRUFDM0YsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztvQkFDN0Isc0JBQXNCLEVBQUUsS0FBSyxDQUFDLEdBQUc7aUJBQ2xDLENBQUM7b0JBQ0Esb0RBQW9EO3FCQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDM0I7WUFFRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQzs7O1lBNUJGLFVBQVU7OztZQUhGLFdBQVc7WUFDWCxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgbWFwLCB0YWtlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXZlbnRzU2VydmljZSwgU2ltcGxlT2lkY0luZm9FdmVudCB9IGZyb20gJ2FuZ3VsYXItc2ltcGxlLW9pZGMvZXZlbnRzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXV0aDogQXV0aFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGV2ZW50czogRXZlbnRzU2VydmljZSxcbiAgKSB7IH1cblxuICBwdWJsaWMgY2FuQWN0aXZhdGUoXG4gICAgbmV4dDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkge1xuICAgIHJldHVybiB0aGlzLmF1dGguaXNMb2dnZWRJbiRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAoYXV0aGVudGljYXRlZCA9PiB7XG4gICAgICAgICAgaWYgKCFhdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmV2ZW50cy5kaXNwYXRjaChuZXcgU2ltcGxlT2lkY0luZm9FdmVudChgUm91dGUgcmVxdWlyZXMgYXV0aC4gTm8gdG9rZW4gb3IgaXQncyBleHBpcmVkLmAsXG4gICAgICAgICAgICAgIHsgcm91dGU6IHN0YXRlLnVybCB9KSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdXRoLnN0YXJ0Q29kZUZsb3coe1xuICAgICAgICAgICAgICByZXR1cm5VcmxBZnRlckNhbGxiYWNrOiBzdGF0ZS51cmxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC8vIHJldHVybiBmYWxzZSBzbyB0aGF0IHJvdXRlIGNoYW5nZSBkb2VzIG5vdCBoYXBwZW5cbiAgICAgICAgICAgICAgLnBpcGUobWFwKCgpID0+IGZhbHNlKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxufVxuIl19