UNPKG

@3wks/generator-gae-node-nestjs

Version:

A generator for building nestjs apps on app engine node

63 lines (48 loc) 1.52 kB
import * as _ from 'lodash'; import * as React from 'react'; import { Me_me, UserRole } from '../graphql'; export class RouteHelper { constructor(private readonly defaultComponent: React.ComponentType, private readonly user?: Me_me | null) {} public ifHasAnyRole(component: React.ComponentType, ...roles: UserRole[]) { return this.ifHasAnyRolesElse(component, this.defaultComponent, ...roles); } public ifHasAnyRolesElse(component: React.ComponentType, otherComponent: React.ComponentType, ...roles: UserRole[]) { if (this.hasAnyRole(...roles)) { return component; } return otherComponent; } public hasAnyRole(...roles: UserRole[]) { return this.user && this.user.roles.some(r => _.includes(roles, r)); } public isNotAuthenticated() { return !this.isAuthenticated(); } public isAuthenticated() { return !!this.user; } public userId() { return this.user && this.user.id; } public roles() { return (this.user && this.user.roles) || []; } public isAdmin() { return !!(this.user && this.user.roles.find(role => role === UserRole.admin)); } public isUser() { return !!(this.user && this.user.roles.find(role => role === UserRole.user)); } public defaultElement(props = {}) { return React.createElement(this.defaultComponent, props); } public isActive() { return this.user && this.user.enabled; } public isNotActive() { if (!this.user) { return true; } return !this.user.enabled; } }