var app = angular.module('launchpad', ['oauth3.org', 'ui.router', 'LocalStorageModule', 'angucomplete-alt']); app.config(['$stateProvider', '$urlRouterProvider', 'localStorageServiceProvider', function ($stateProvider, $urlRouterProvider, localStorageServiceProvider) { localStorageServiceProvider.setPrefix('launchpad').setStorageType('sessionStorage'); $urlRouterProvider.otherwise('/splash-page'); $stateProvider .state('splash-page', { data: { requiresLogin: false, session: null }, url: '/splash-page', templateUrl: '/templates/splash-page.html', controller: 'loginCtrl as vm' }) .state('app',{ data: { requiresLogin: true, session: null }, url: '/', controller: 'loginCtrl as vm', views: { 'header': { templateUrl: '/templates/partials/header.html', }, 'menu': { templateUrl: '/templates/partials/menu.html' }, 'content': { templateUrl: '/templates/home.html' } } }) .state('app.home', { url: 'home', views: { 'content@': { templateUrl: 'templates/home.html', controller: 'loginCtrl as vm' } } }) .state('app.bolt', { url: 'bolt', views: { 'content@': { templateUrl: 'templates/bolt.html', controller: 'boltCtrl as vm', } } }) .state('app.files', { url: 'files', views: { 'content@': { templateUrl: 'templates/files.html', controller: 'fileCtrl as vm', } } }) .state('app.contacts', { url: 'contacts', views: { 'content@': { templateUrl: 'templates/contacts.html', controller: 'contactCtrl as vm', } } }) .state('app.music', { url: 'music', views: { 'content@': { templateUrl: 'templates/music.html', controller: 'musicCtrl as vm', } } }) .state('app.email', { url: 'email', views: { 'content@': { templateUrl: 'templates/email.html', controller: 'emailCtrl as vm', } } }) .state('app.website', { url: 'website', views: { 'content@': { templateUrl: 'templates/website.html', controller: 'websiteCtrl as vm', } } }) .state('app.dns', { url: 'dns', views: { 'content@': { templateUrl: 'templates/dns.html', controller: 'dnsCtrl', } } }) .state('app.account-settings', { url: 'account-settings', views: { 'content@': { templateUrl: 'templates/account-settings.html', controller: 'loginCtrl as vm', } } }); }]); app.run(['$rootScope', '$state', 'Auth', '$location', function($rootScope, $state, Auth, $location) { $rootScope.urlArray = []; $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) { var requiresLogin = toState.data.requiresLogin; toState.data.session = $location.search(); $rootScope.redirectedURL = toState.url; var query = $location.search(); $rootScope.urlArray.push($rootScope.redirectedURL); if (requiresLogin && !Auth.isLoggedIn()) { event.preventDefault(); if (!angular.equals(toState.data.session, {})) { toState.data.session.token = OAUTH3.jwt.decode(query.access_token); toState.data.session.refresh = OAUTH3.jwt.decode(query.refresh_token); Auth.add(query); $state.go('app.' + $rootScope.redirectedURL); } else { $state.go('splash-page', { 'toState': toState.name }); } } }); }]);