+++ /dev/null
-import { Injectable } from '@angular/core';
-import { Router, Resolve, RouterStateSnapshot,
- ActivatedRouteSnapshot } from '@angular/router';
-import { EgAuthService } from '@eg/core/auth.service';
-
-/**
- * Check auth token and load data required by all staff components.
- */
-@Injectable()
-export class EgStaffCommonDataResolver implements Resolve<Promise<boolean>> {
-
- constructor(
- private router: Router,
- private egAuth: EgAuthService
- ) {}
-
- resolve(
- route: ActivatedRouteSnapshot,
- state: RouterStateSnapshot): Promise<boolean> {
-
- console.debug('EgStaffCommonDataResolver:resolve()');
-
- // TODO verify workstation
-
- return Promise.resolve(true);
- }
-}
-
--- /dev/null
+import { Injectable } from '@angular/core';
+import { Router, Resolve, RouterStateSnapshot,
+ ActivatedRouteSnapshot } from '@angular/router';
+import { EgAuthService } from '@eg/core/auth.service';
+
+/**
+ * Load post-authentication data required by all staff UI's
+ */
+@Injectable()
+export class EgStaffDataResolver implements Resolve<Promise<boolean>> {
+
+ constructor(
+ private router: Router,
+ private egAuth: EgAuthService
+ ) {}
+
+ resolve(
+ route: ActivatedRouteSnapshot,
+ state: RouterStateSnapshot): Promise<boolean> {
+
+ console.debug('EgStaffDataResolver:resolve()');
+
+ // TODO verify workstation
+
+ let wsPath = '/staff/admin/workstation';
+
+ if (false) { // WS is invalid
+ if (this.router.url != wsPath) {
+ console.debug('re-routing to workstation admin page');
+ this.router.navigate([wsPath]);
+ }
+ }
+
+ return Promise.resolve(true);
+ }
+}
+
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { EgStaffResolver } from './resolver.service';
-import { EgStaffCommonDataResolver } from './common-data-resolver.service';
+import { EgStaffDataResolver } from './data-resolver.service';
import { EgStaffAuthGuard } from './auth-guard.service';
import { EgStaffComponent } from './staff.component';
import { EgStaffLoginComponent } from './login.component';
import { EgStaffLogoutComponent } from './logout.component';
import { EgStaffSplashComponent } from './splash.component';
-const routes: Routes = [
- { path: '',
+const routes: Routes = [{
+ path: '',
+ resolve: {staffResolver : EgStaffResolver},
+ children: [{
+ path: 'login',
+ component: EgStaffLoginComponent
+ }, {
+ path: 'logout',
+ component: EgStaffLogoutComponent
+ }, {
+ // Every path below here requires a valid authtoken.
+ path: '',
+ canActivate : [EgStaffAuthGuard],
+ resolve: {dataResolver: EgStaffDataResolver},
component: EgStaffComponent,
- resolve : {staffResolver : EgStaffResolver},
- children : [
- { path: 'login',
- component: EgStaffLoginComponent
- }, {
- path: 'logout',
- component: EgStaffLogoutComponent
- }, {
- path : 'splash',
- canActivate : [EgStaffAuthGuard],
- resolve : {commonDataResolver : EgStaffCommonDataResolver},
- component: EgStaffSplashComponent
- }, {
- path : 'circ',
- canActivate : [EgStaffAuthGuard],
- resolve : {commonDataResolver : EgStaffCommonDataResolver},
- loadChildren : '@eg/staff/circ/circ.module#EgCircModule'
- }
- ],
- }
-];
+ children: [{
+ path: '',
+ redirectTo: 'splash'
+ pathMatch: 'full',
+ }, {
+ path: 'splash',
+ component: EgStaffSplashComponent
+ }, {
+ path: 'circ',
+ loadChildren : '@eg/staff/circ/circ.module#EgCircModule'
+ }]
+ }]
+}];
@NgModule({
imports: [ RouterModule.forChild(routes) ],
exports: [ RouterModule ],
providers: [
EgStaffResolver,
- EgStaffCommonDataResolver,
+ EgStaffDataResolver,
EgStaffAuthGuard
]
})