import { PermissionCheckerService } from '@abp/auth/permission-checker.service'; import { AppSessionService } from '@shared/common/session/app-session.service'; import { Injectable } from '@angular/core'; import { AppMenu } from './app-menu'; import { AppMenuItem } from './app-menu-item'; @Injectable() export class AppNavigationService { constructor( private _permissionCheckerService: PermissionCheckerService, private _appSessionService: AppSessionService ) { } getMenu(): AppMenu { return new AppMenu('MainMenu', 'MainMenu', [ //new AppMenuItem('Dashboard', 'Pages.Administration.Host.Dashboard', 'flaticon-line-graph', '/app/admin/hostDashboard'), //new AppMenuItem('Dashboard', 'Pages.Tenant.Dashboard', 'flaticon-line-graph', '/app/main/dashboard'), // new AppMenuItem('Tenants', 'Pages.Tenants', 'flaticon-list-3', '/app/admin/tenants'), // new AppMenuItem('Editions', 'Pages.Editions', 'flaticon-app', '/app/admin/editions'), new AppMenuItem('Basic', '', 'flaticon-interface-8', '', [ new AppMenuItem('SubApp', 'Pages.Basic.SubApp', 'flaticon-app', '/app/basic/subapp'), new AppMenuItem('DictionaryType', 'Pages.DictionaryTypes', 'flaticon-app', '/app/basic/dictionarytype'), new AppMenuItem('Dictionary', 'Pages.Dictionary', 'flaticon-app', '/app/basic/dictionary') ]), new AppMenuItem('Administration', '', 'flaticon-interface-8', '', [ //new AppMenuItem('OrganizationUnits', 'Pages.Administration.OrganizationUnits', 'flaticon-map', '/app/admin/organization-units'), new AppMenuItem('Roles', 'Pages.Administration.Roles', 'flaticon-suitcase', '/app/admin/roles'), new AppMenuItem('Users', 'Pages.Administration.Users', 'flaticon-users', '/app/admin/users'), new AppMenuItem('Languages', 'Pages.Administration.Languages', 'flaticon-tabs', '/app/admin/languages'), //new AppMenuItem('AuditLogs', 'Pages.Administration.AuditLogs', 'flaticon-folder-1', '/app/admin/auditLogs'), new AppMenuItem('Maintenance', 'Pages.Administration.Host.Maintenance', 'flaticon-lock', '/app/admin/maintenance'), new AppMenuItem('Subscription', 'Pages.Administration.Tenant.SubscriptionManagement', 'flaticon-refresh', '/app/admin/subscription-management'), new AppMenuItem('VisualSettings', 'Pages.Administration.UiCustomization', 'flaticon-medical', '/app/admin/ui-customization'), new AppMenuItem('Settings', 'Pages.Administration.Host.Settings', 'flaticon-settings', '/app/admin/hostSettings'), new AppMenuItem('RoleInterfaceManage', 'Pages.RoleInterfaceManage', 'flaticon-settings', '/app/basic/roleinterface'), new AppMenuItem('Settings', 'Pages.Administration.Tenant.Settings', 'flaticon-settings', '/app/admin/tenantSettings'), new AppMenuItem('VersionManagement', 'Pages.VersionManagement', 'flaticon-settings', '/app/admin/versionmanagement') ]), new AppMenuItem('ShelfManage', '', 'flaticon-interface-8', '', [ new AppMenuItem('RackTypeManage', 'Pages.RackTypeManage', 'flaticon-app', '/app/basic/racktype'), new AppMenuItem('RackAreaManage', 'Pages.RackAreaManage', 'flaticon-app', '/app/basic/rackarea'), new AppMenuItem('RackIdManage', 'Pages.RackAreaManage', 'flaticon-app', '/app/basic/rackid') ]), new AppMenuItem('WaferTraceManage', '', 'flaticon-interface-8', '', [ new AppMenuItem('WaferAreaManage', 'Pages.WaferAreaManage', 'flaticon-app', '/app/basic/waferarea'), new AppMenuItem('WaferAreaFlowManage', 'Pages.WaferAreaFlowManage', 'flaticon-app', '/app/basic/waferareaflow'), new AppMenuItem('WaferTraceReportManage', 'WaferTraceManage_Select', 'flaticon-app', '/app/basic/waferreport'), new AppMenuItem('WaferSelect', 'WaferTraceManage_Select', 'flaticon-app', '/app/basic/waferselect'), new AppMenuItem('WaferSendOut', 'WaferTraceManage_Send', 'flaticon-app', '/app/basic/wafersendout'), new AppMenuItem('WaferCancelSendOut', 'WaferTraceManage_CancelSend', 'flaticon-app', '/app/basic/wafercancelsend'), new AppMenuItem('WaferReceive', 'WaferTraceManage_Receive', 'flaticon-app', '/app/basic/waferreceive') ]), new AppMenuItem('RuncardManage', '', 'flaticon-interface-8', '', [ new AppMenuItem('RuncardSystem', 'Pages.RuncardSystem', 'flaticon-app', '/app/basic/runcardsystem'), new AppMenuItem('AbnormalReportManage', 'Pages.AbnormalReportManage', 'flaticon-app', '/app/basic/abnormalreport'), new AppMenuItem('CheckReportManage', 'Pages.CheckReportManage', 'flaticon-app', '/app/basic/checkreport') ]), //new AppMenuItem('DemoUiComponents', 'Pages.DemoUiComponents', 'flaticon-shapes', '/app/admin/demo-ui-components') ]); } checkChildMenuItemPermission(menuItem): boolean { for (let i = 0; i < menuItem.items.length; i++) { let subMenuItem = menuItem.items[i]; if (subMenuItem.permissionName && this._permissionCheckerService.isGranted(subMenuItem.permissionName)) { return true; } else if (subMenuItem.items && subMenuItem.items.length) { return this.checkChildMenuItemPermission(subMenuItem); } } return false; } showMenuItem(menuItem: AppMenuItem): boolean { if (menuItem.permissionName === 'Pages.Administration.Tenant.SubscriptionManagement' && this._appSessionService.tenant && !this._appSessionService.tenant.edition) { return false; } let hideMenuItem = false; if (menuItem.requiresAuthentication && !this._appSessionService.user) { hideMenuItem = true; } if (menuItem.permissionName && !this._permissionCheckerService.isGranted(menuItem.permissionName)) { hideMenuItem = true; } if (this._appSessionService.tenant || !abp.multiTenancy.ignoreFeatureCheckForHostUsers) { if (menuItem.hasFeatureDependency() && !menuItem.featureDependencySatisfied()) { hideMenuItem = true; } } if (!hideMenuItem && menuItem.items && menuItem.items.length) { return this.checkChildMenuItemPermission(menuItem); } return !hideMenuItem; } }