All files / app/guard has-role.guard.ts

55.55% Statements 5/9
0% Branches 0/4
33.33% Functions 1/3
71.42% Lines 5/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 132x     2x   2x 1x       1x    
import { inject } from '@angular/core';
import { CanActivateFn, createUrlTreeFromSnapshot, RedirectCommand } from '@angular/router';
import { isString } from 'lodash-es';
import { Store } from '../store/store';
 
export const hasRoleGuard = (role: 'admin' | 'mod' | 'editor' | 'user' | 'viewer' | 'banned', redirect: (string | (() => string))[]) => {
  const fn: CanActivateFn = ((route, state) => {
    if (inject(Store).account[role]) return true;
    return new RedirectCommand(createUrlTreeFromSnapshot(route, redirect.map(r => isString(r) ? r : r())));
  });
  return fn;
};