aboutsummaryrefslogtreecommitdiff
path: root/Timeline/ClientApp/src/app/user/auth.guard.ts
diff options
context:
space:
mode:
Diffstat (limited to 'Timeline/ClientApp/src/app/user/auth.guard.ts')
-rw-r--r--Timeline/ClientApp/src/app/user/auth.guard.ts80
1 files changed, 0 insertions, 80 deletions
diff --git a/Timeline/ClientApp/src/app/user/auth.guard.ts b/Timeline/ClientApp/src/app/user/auth.guard.ts
deleted file mode 100644
index 1fc7a7c0..00000000
--- a/Timeline/ClientApp/src/app/user/auth.guard.ts
+++ /dev/null
@@ -1,80 +0,0 @@
-import { Injectable } from '@angular/core';
-import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';
-import { Observable } from 'rxjs';
-import { take, map } from 'rxjs/operators';
-
-import { InternalUserService } from './internal-user-service/internal-user.service';
-
-export type AuthStrategy = 'all' | 'requirelogin' | 'requirenologin' | string[];
-
-export abstract class AuthGuard implements CanActivate {
-
- constructor(protected internalUserService: InternalUserService) { }
-
- onAuthFailed() { }
-
- abstract get authStrategy(): AuthStrategy;
-
- canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot):
- Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
-
- const { authStrategy } = this;
-
- if (authStrategy === 'all') {
- return true;
- }
-
- return this.internalUserService.userInfo$.pipe(take(1), map(userInfo => {
- if (userInfo === null) {
- if (authStrategy === 'requirenologin') {
- return true;
- }
- } else {
- if (authStrategy === 'requirelogin') {
- return true;
- } else if (authStrategy instanceof Array) {
- const { roles } = userInfo;
- if (authStrategy.every(value => roles.includes(value))) {
- return true;
- }
- }
- }
-
- // reach here means auth fails
- this.onAuthFailed();
- return false;
- }));
- }
-}
-
-@Injectable({
- providedIn: 'root'
-})
-export class RequireLoginGuard extends AuthGuard {
- readonly authStrategy: AuthStrategy = 'requirelogin';
-
- // never remove this constructor or you will get an injection error.
- constructor(internalUserService: InternalUserService) {
- super(internalUserService);
- }
-
- onAuthFailed() {
- this.internalUserService.userRouteNavigate(['login']);
- }
-}
-
-@Injectable({
- providedIn: 'root'
-})
-export class RequireNoLoginGuard extends AuthGuard {
- readonly authStrategy: AuthStrategy = 'requirenologin';
-
- // never remove this constructor or you will get an injection error.
- constructor(internalUserService: InternalUserService) {
- super(internalUserService);
- }
-
- onAuthFailed() {
- this.internalUserService.userRouteNavigate(['success']);
- }
-}