File

src/app/core/permissions/permission-guard/user-role.guard.ts

Description

A guard that checks the roles of the current user against the permissions which are saved in the route data.

Extends

AbstractPermissionGuard

Index

Methods

Constructor

constructor(router: Router, sessionInfo: SessionSubject)
Parameters :
Name Type Optional
router Router No
sessionInfo SessionSubject No

Methods

Protected Async canAccessRoute
canAccessRoute(routeData: DynamicComponentConfig)
Parameters :
Name Type Optional
routeData DynamicComponentConfig No
Returns : Promise<boolean>
import { Injectable } from "@angular/core";
import { Router } from "@angular/router";
import { AbstractPermissionGuard } from "./abstract-permission.guard";
import { DynamicComponentConfig } from "../../config/dynamic-components/dynamic-component-config.interface";
import { SessionSubject } from "../../session/auth/session-info";

/**
 * A guard that checks the roles of the current user against the permissions which are saved in the route data.
 */
@Injectable()
export class UserRoleGuard extends AbstractPermissionGuard {
  constructor(
    router: Router,
    private sessionInfo: SessionSubject,
  ) {
    super(router);
  }

  protected async canAccessRoute(
    routeData: DynamicComponentConfig,
  ): Promise<boolean> {
    const permittedRoles = routeData?.permittedUserRoles;
    const user = this.sessionInfo.value;

    if (permittedRoles?.length > 0) {
      // Check if user has a role which is in the list of permitted roles
      return permittedRoles.some((role) => user.roles.includes(role));
    } else {
      // No config set => all users are allowed
      return true;
    }
  }
}

results matching ""

    No results matching ""