all files / src/ open-id-connect-navigation-filter.ts

93.75% Statements 15/16
90% Branches 9/10
100% Functions 3/3
93.75% Lines 15/16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35               70×       70× 70× 40×     30× 10×     20× 10×       10×      
import { valueConverter } from 'aurelia-framework';
import { NavModel } from 'aurelia-router';
import { User } from 'oidc-client';
import OpenIdConnectRoles from './open-id-connect-roles';
 
@valueConverter('openIdConnectNavigationFilter')
export default class {
 
  public toView(navModels: NavModel[], user: User) {
 
    return navModels.filter((navModel) => {
 
      Iif (!navModel.settings) {
        return true;
      }
 
      const requiredRoles: OpenIdConnectRoles[] = navModel.settings.roles;
      if (!requiredRoles || requiredRoles.length === 0) {
        return true;
      }
 
      if (requiredRoles.includes(OpenIdConnectRoles.Authenticated)) {
        return user !== null;
      }
 
      if (requiredRoles.includes(OpenIdConnectRoles.Anonymous)) {
        return user == null;
      }
 
      // only possibility left is Everyone so return true
      return true;
    });
  }
}