Skip to content

Instantly share code, notes, and snippets.

@mwawrusch
Created December 29, 2015 18:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mwawrusch/9df09b30526d8699161d to your computer and use it in GitHub Desktop.
Save mwawrusch/9df09b30526d8699161d to your computer and use it in GitHub Desktop.
/**
* import {checkIfSessionActive} from '.../session.service';
* @CanActivate(checkIfSessionActive)
*/
export function checkIfSessionActive(next: ComponentInstruction, prev) : Promise<boolean> {
let injector = Injector.resolveAndCreate([SessionService,
ApiClientService,
TokenService,
LoggerService,
LocalStorageService,
UtilQueryStringService]);
let sessionService = injector.get(SessionService);
console.log('STEP 1a');
let fnPromise = function(resolve,reject) {
console.log('STEP 1b');
let isSessionActivePromise = sessionService.isSessionActive();
console.log('STEP 1c');
let fnHandleFail = function() {
reject();
/*
let injector = Injector.resolveAndCreate([Router]);
let router = injector.get(Router);
router.navigate( ['Login']);
*/
window.location.assign('http://localhost:7320/dist/dev/login');
};
isSessionActivePromise.then((isActive:boolean) => {
if(isActive) {
resolve(true);
} else {
fnHandleFail();
}
})
.catch((error) => {
/**
* @TODO We might be more indiscriminate about this.
* The session check can fail for server errors or lack of connectivity.
*/
fnHandleFail();
});
};
return new Promise<boolean>(fnPromise);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment