@isaiahiroko/ng-guards
Version:
Angular routes guards to detect authenticated or unauthenticated users
116 lines (109 loc) • 7.56 kB
JavaScript
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { of } from 'rxjs';
import { tap, catchError, map } from 'rxjs/operators';
import { AuthService } from '@isaiahiroko/ng-utils';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
class AuthGuard {
/**
* @param {?} router
* @param {?} auth
*/
constructor(router, auth) {
this.router = router;
this.auth = auth;
}
/**
* @param {?} route
* @param {?} state
* @return {?}
*/
canActivate(route, state) {
return this.auth.check().pipe(tap((status) => {
if (!status) {
this.router.navigate([this.auth.signInUrl]);
}
}), catchError((e) => {
return of(false);
}));
}
/**
* @param {?} route
* @param {?} state
* @return {?}
*/
canActivateChild(route, state) {
return this.canActivate(route, state);
}
}
AuthGuard.decorators = [
{ type: Injectable },
];
/** @nocollapse */
AuthGuard.ctorParameters = () => [
{ type: Router },
{ type: AuthService }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
class UnauthGuard {
/**
* @param {?} router
* @param {?} auth
*/
constructor(router, auth) {
this.router = router;
this.auth = auth;
}
/**
* @param {?} route
* @param {?} state
* @return {?}
*/
canActivate(route, state) {
return this.auth.check().pipe(tap((status) => {
if (status) {
this.router.navigate([this.auth.intendedUrl]);
}
}), map((status) => {
return !status;
}), catchError((e) => {
return of(true);
}));
}
/**
* @param {?} route
* @param {?} state
* @return {?}
*/
canActivateChild(route, state) {
return this.canActivate(route, state);
}
}
UnauthGuard.decorators = [
{ type: Injectable },
];
/** @nocollapse */
UnauthGuard.ctorParameters = () => [
{ type: Router },
{ type: AuthService }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
export { AuthGuard, UnauthGuard };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNhaWFoaXJva28tbmctZ3VhcmRzLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9AaXNhaWFoaXJva28vbmctZ3VhcmRzL2xpYi9hdXRoLmd1YXJkLnRzIiwibmc6Ly9AaXNhaWFoaXJva28vbmctZ3VhcmRzL2xpYi91bmF1dGguZ3VhcmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7XHJcbiAgQ2FuQWN0aXZhdGUsXHJcbiAgQ2FuQWN0aXZhdGVDaGlsZCxcclxuICBSb3V0ZXIsXHJcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUgLCAgb2YgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyB0YXAgLCAgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5cclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICdAaXNhaWFoaXJva28vbmctdXRpbHMnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBdXRoR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCB7XHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLCBwcm90ZWN0ZWQgYXV0aDogQXV0aFNlcnZpY2UpIHt9XHJcblxyXG4gIGNhbkFjdGl2YXRlKFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcclxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmF1dGguY2hlY2soKS5waXBlKFxyXG4gICAgICB0YXAoKHN0YXR1cykgPT4ge1xyXG4gICAgICAgIGlmICghc3RhdHVzKSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5hdXRoLnNpZ25JblVybF0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBvZihmYWxzZSlcclxuICAgICAgfSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBjYW5BY3RpdmF0ZUNoaWxkKFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcclxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKHJvdXRlLCBzdGF0ZSlcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7XHJcbiAgQ2FuQWN0aXZhdGUsXHJcbiAgQ2FuQWN0aXZhdGVDaGlsZCxcclxuICBSb3V0ZXIsXHJcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xyXG4gIFxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlICwgIG9mIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgbWFwICwgIHRhcCAsICBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcblxyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0Bpc2FpYWhpcm9rby9uZy11dGlscydcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFVuYXV0aEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xyXG4gIGNvbnN0cnVjdG9yIChwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsIHByb3RlY3RlZCBhdXRoOiBBdXRoU2VydmljZSkge31cclxuXHJcbiAgY2FuQWN0aXZhdGUgKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYXV0aC5jaGVjaygpLnBpcGUoXHJcbiAgICAgIHRhcCgoc3RhdHVzKSA9PiB7XHJcbiAgICAgICAgaWYoc3RhdHVzKXtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLmF1dGguaW50ZW5kZWRVcmxdKVxyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIG1hcCgoc3RhdHVzKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuICFzdGF0dXNcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcclxuICAgICAgICByZXR1cm4gb2YodHJ1ZSlcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNhbkFjdGl2YXRlQ2hpbGQgKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGUocm91dGUsIHN0YXRlKVxyXG4gIH1cclxufVxyXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOzs7OztJQWdCRSxZQUFzQixNQUFjLEVBQVksSUFBaUI7UUFBM0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFZLFNBQUksR0FBSixJQUFJLENBQWE7S0FBSTs7Ozs7O0lBRXJFLFdBQVcsQ0FDVCxLQUE2QixFQUM3QixLQUEwQjtRQUUxQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUMzQixHQUFHLENBQUMsQ0FBQyxNQUFNO1lBQ1QsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTthQUM1QztTQUNGLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ1gsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDakIsQ0FBQyxDQUNILENBQUE7S0FDRjs7Ozs7O0lBRUQsZ0JBQWdCLENBQ2QsS0FBNkIsRUFDN0IsS0FBMEI7UUFFMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTtLQUN0Qzs7O1lBekJGLFVBQVU7Ozs7WUFWVCxNQUFNO1lBUUMsV0FBVzs7Ozs7OztBQ1pwQjs7Ozs7SUFlRSxZQUF1QixNQUFjLEVBQVksSUFBaUI7UUFBM0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFZLFNBQUksR0FBSixJQUFJLENBQWE7S0FBSTs7Ozs7O0lBRXRFLFdBQVcsQ0FBRSxLQUE2QixFQUFFLEtBQTBCO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQzNCLEdBQUcsQ0FBQyxDQUFDLE1BQU07WUFDVCxJQUFHLE1BQU0sRUFBQztnQkFDUixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQTthQUM5QztTQUNGLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxNQUFNO1lBQ1QsT0FBTyxDQUFDLE1BQU0sQ0FBQTtTQUNmLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ1gsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7U0FDaEIsQ0FBQyxDQUNILENBQUE7S0FDRjs7Ozs7O0lBRUQsZ0JBQWdCLENBQUUsS0FBNkIsRUFBRSxLQUEwQjtRQUN6RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO0tBQ3RDOzs7WUF0QkYsVUFBVTs7OztZQVRULE1BQU07WUFPQyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==