This repository has been archived on 2021-08-17. You can view files and clone it, but cannot push or open issues or pull requests.
TaskBoard/js/app.js
2014-10-10 10:35:43 -04:00

78 lines
3.0 KiB
JavaScript

var taskBoardServices = angular.module('TaskBoardServices', []);
var taskBoardControllers = angular.module('TaskBoardControllers', []);
var taskBoardDirectives = angular.module('TaskBoardDirectives', []);
var taskBoard = angular.module('TaskBoard',
['ngRoute', 'ngSanitize',
'ng-context-menu',
'TaskBoardServices',
'TaskBoardControllers',
'TaskBoardDirectives']);
taskBoard.config(['$routeProvider', '$httpProvider',
function($routeProvider, $httpProvider) {
$routeProvider.when('/', {
controller: 'LoginCtrl',
templateUrl: 'partials/login.html'
}).when('/boards', {
controller: 'BoardCtrl',
templateUrl: 'partials/boardSelect.html',
authRequired: true
}).when('/boards/:boardId', {
controller: 'BoardCtrl',
templateUrl: 'partials/board.html',
authRequired: true,
resolve: {
validation: ['$q', '$route', function($q, $route) {
var deferred = $q.defer(),
id = parseInt($route.current.params.boardId);
if (isNaN(id)) {
deferred.reject('INVALID BOARD ID');
} else {
deferred.resolve();
}
return deferred.promise;
}]
}
}).when('/settings', {
controller: 'SettingsCtrl',
templateUrl: 'partials/settings.html',
authRequired: true
}).when('/files/:fileId', {
controller: 'FilesCtrl',
templateUrl: 'partials/files.html',
authRequired: true
}).otherwise({
redirectTo: '/'
});
// Inject the auth token with each API call.
$httpProvider.interceptors.push('TokenInterceptor');
}]);
// Custom handlers for route authentication and rejection of invalid board id
taskBoard.run(['$rootScope', '$location', '$window', 'AuthenticationService',
function($rootScope, $location, $window, AuthenticationService) {
$rootScope.$on('$routeChangeStart', function(event, nextRoute, currentRoute) {
// Redirect to default path if authentication is required but not present.
if (nextRoute !== null && nextRoute.authRequired !== null &&
nextRoute.authRequired && !AuthenticationService.isAuthenticated &&
!$window.localStorage.token) {
$location.path('/');
}
});
$rootScope.$on('$routeChangeSuccess', function(event, route, previousRoute) {
if (route.controller === 'LoginCtrl' && previousRoute && previousRoute.originalPath !== '') {
AuthenticationService.attemptedRoute = previousRoute;
}
});
$rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {
// Custom rejection from /boards/:boardId route
if (rejection === 'INVALID BOARD ID') {
$location.path('/boards');
}
});
}]);