config.js
4.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
angular.module('flashy', [
'flashy.LogoutController',
'flashy.LoginController',
'flashy.RootController',
'flashy.FeedController',
'flashy.DeckController',
'flashy.ClassAddController',
'flashy.RequestResetController',
'flashy.StudyController',
'flashy.UserService',
'flashy.FlashcardDirective',
'flashy.ResetPasswordController',
'flashy.VerifyEmailController',
'ngCookies']).
config(['$stateProvider', '$urlRouterProvider', '$httpProvider',
'$locationProvider',
function($stateProvider, $urlRouterProvider, $httpProvider, $locationProvider) {
'use strict';
$httpProvider.defaults.withCredentials = true;
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
$locationProvider.html5Mode(true);
$urlRouterProvider.otherwise('/home');
var auth_resolve = {
authorize: ['$q', 'UserService',
function($q, UserService) {
console.log('resolving user before continuing');
return UserService.getUserData();
}
]
};
$stateProvider.
state('login', {
url: '/login',
templateUrl: 'templates/login.html',
controller: 'LoginController'
}).
state('logout', {
resolve: auth_resolve,
url: '/logout',
templateUrl: 'templates/logout.html',
controller: 'LogoutController'
}).
state('root', {
resolve: auth_resolve,
url: '/',
templateUrl: 'templates/root.html',
controller: 'RootController'
}).
state('feed', {
resolve: auth_resolve,
url: '/feed/{sectionId}',
templateUrl: 'templates/feed.html',
controller: 'FeedController'
}).
state('addclass', {
resolve: auth_resolve,
url: '/addclass',
templateUrl: 'templates/addclass.html',
controller: 'ClassAddController'
}).
state('deck', {
resolve: auth_resolve,
url: '/deck/{sectionId}',
templateUrl: 'templates/deck.html',
controller: 'DeckController'
}).
state('study', {
resolve: auth_resolve,
url: '/study',
templateUrl: 'templates/study.html',
controller: 'StudyController'
}).
state('flashcard', {
resolve: auth_resolve,
url: '/flashcard',
templateUrl: 'templates/flashcard.html',
controller: 'FlashcardController'
}).
state('requestpasswordreset', {
url: '/requestpasswordreset',
templateUrl: 'templates/requestpasswordreset.html',
controller: 'RequestResetController'
}).
state('resetpassword', {
url: '/resetpassword/{uid}/{token}',
templateUrl: 'templates/resetpassword.html',
controller: 'ResetPasswordController'
}).
state('verifyemail', {
resolve: auth_resolve,
url: '/verifyemail/{key}',
templateUrl: 'templates/verifyemail.html',
controller: 'VerifyEmailController'
});
}]).run(['$rootScope', '$state', '$stateParams', '$location', 'UserService',
function($rootScope, $state, $stateParams, $location, UserService) {
$rootScope.$on('$stateChangeStart', function(event, toState, toStateParams) {
if (UserService.isLoggedIn()) return console.log('no login required; going straight to ' + toState.name);
if (toState.name == 'login') return console.log('we are going to login anyway; just let it happen :)');
if (!UserService.isUserResolved()) return console.log('user not yet resolved; hold off');
$rootScope.returnToState = toState;
$rootScope.returnToStateParams = toStateParams;
console.log('going to ' + toState.name + ' after login');
$state.go('login');
});
$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) {
console.log('failed to change state: ' + error);
$state.go('login');
});
}
]);