You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RTL/src/app/shared/services/auth.guard.ts

43 lines
1.4 KiB
TypeScript

import { inject } from '@angular/core';
import { Router, ActivatedRoute, CanActivateFn } from '@angular/router';
import { SessionService } from './session.service';
import { map } from 'rxjs/operators';
export function AuthGuard(): CanActivateFn {
return () => {
const router = inject(Router);
const route = inject(ActivatedRoute);
const sessionService = inject(SessionService);
if (!sessionService.getItem('token')) {
return false;
} else if (route.snapshot.url && route.snapshot.url.length && route.snapshot.url[0].path !== 'settings' && route.snapshot.url[0].path !== 'auth' && sessionService.getItem('defaultPassword') === 'true') {
router.navigate(['/settings/auth']);
return false;
} else {
return true;
}
};
};
export function LNDUnlockedGuard(): CanActivateFn {
return () => {
const sessionService = inject(SessionService);
return !!sessionService.watchSession().pipe(map((session) => session.lndUnlocked));
};
};
export function CLNUnlockedGuard(): CanActivateFn {
return () => {
const sessionService = inject(SessionService);
return !!sessionService.watchSession().pipe(map((session) => session.clnUnlocked));
};
};
export function ECLUnlockedGuard(): CanActivateFn {
return () => {
const sessionService = inject(SessionService);
return !!sessionService.watchSession().pipe(map((session) => session.eclUnlocked));
};
};