Blame view
config.js
7.22 KB
4da3dd303
|
1 2 3 |
angular.module('flashy', [ 'flashy.LogoutController', 'flashy.LoginController', |
80d1e57aa
|
4 |
'flashy.RootController', |
4da3dd303
|
5 |
'flashy.FeedController', |
3c4c48c96
|
6 |
'flashy.DeckController', |
bbba33088
|
7 |
'flashy.ClassAddController', |
331ca39d2
|
8 |
'flashy.ClassDropController', |
bbba33088
|
9 |
'flashy.RequestResetController', |
58b21808a
|
10 |
'flashy.StudyController', |
80d1e57aa
|
11 |
'flashy.UserService', |
8e8058a82
|
12 |
'flashy.FlashcardDirective', |
9eb54c646
|
13 14 |
//'flashy.SelectDirective', // DOESNT WORK RN |
8607c44bb
|
15 |
'flashy.ResetPasswordController', |
f05ccab30
|
16 |
'flashy.VerifyEmailController', |
54c942ddf
|
17 |
'flashy.CardListController', |
b12a56132
|
18 |
'flashy.HelpController', |
9eb54c646
|
19 |
'flashy.SettingsController', |
4da3dd303
|
20 |
'ngCookies']). |
f107af9c8
|
21 |
config(function($stateProvider, $urlRouterProvider, $resourceProvider, $httpProvider, $locationProvider) { |
4c3a5e272
|
22 23 24 25 |
'use strict'; $httpProvider.defaults.withCredentials = true; $httpProvider.defaults.xsrfCookieName = 'csrftoken'; $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; |
f107af9c8
|
26 |
$resourceProvider.defaults.stripTrailingSlashes = false; |
4c3a5e272
|
27 28 29 30 31 32 |
var arrayMethods = Object.getOwnPropertyNames(Array.prototype); arrayMethods.forEach(attachArrayMethodsToNodeList); function attachArrayMethodsToNodeList(methodName) { if (methodName !== 'length') { NodeList.prototype[methodName] = Array.prototype[methodName]; } |
4fb8a3f36
|
33 |
} |
efc77eb59
|
34 |
|
107013870
|
35 |
$httpProvider.interceptors.push(function($q, $rootScope) { |
4c3a5e272
|
36 |
return { |
107013870
|
37 |
'responseError': function(rejection) { // need a better redirect |
4c3a5e272
|
38 39 40 |
if (rejection.status >= 500) { console.log('got error'); console.log(rejection); |
b12a56132
|
41 |
$rootScope.$broadcast('server_error', rejection); |
0b8a1b605
|
42 |
} |
620ed5155
|
43 |
if (rejection.status == 403) { |
4fb8a3f36
|
44 |
console.log(rejection); |
107013870
|
45 |
if (rejection.data && rejection.data.detail == 'Please verify your email before continuing') { |
0c65d0c07
|
46 47 |
UserService.showLockedMessage(); UserService.logout(); |
4fb8a3f36
|
48 |
} |
0b8a1b605
|
49 |
} |
4c3a5e272
|
50 51 |
return $q.reject(rejection); } |
0b8a1b605
|
52 |
}; |
4c3a5e272
|
53 54 |
}); $locationProvider.html5Mode(true); |
35387f308
|
55 |
$urlRouterProvider.otherwise('/404'); |
4c3a5e272
|
56 |
var auth_resolve = { |
ca76999e9
|
57 |
authorize: function($q, $state, $stateParams, UserService) { |
0c65d0c07
|
58 59 60 |
if (UserService.noAuthRequired($state)) { return console.log('no auth state ' + $state.name); } |
fcda9ffd2
|
61 |
console.log('resolving user before continuing for ' + $state.name); |
fe2c7edc6
|
62 |
var redirectAsNeeded = function() { |
35387f308
|
63 64 65 66 67 |
if (!UserService.isLoggedIn()) { console.log(UserService.getUserData()); console.log('making the user log in'); $state.go('login'); } |
ca76999e9
|
68 |
if (!UserService.authorizedFor($state, $stateParams)) { |
0c65d0c07
|
69 |
console.log('user not authorized for ' + $state.name); |
ca76999e9
|
70 71 |
$state.go('addclass'); } |
35387f308
|
72 73 74 |
}; if (UserService.isResolved()) return redirectAsNeeded(); return UserService.getUserData().then(redirectAsNeeded); |
4c3a5e272
|
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
} }; $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, |
107013870
|
91 |
url: '', |
4c3a5e272
|
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
controller: 'RootController' }). state('feed', { resolve: auth_resolve, url: '/feed/{sectionId}', templateUrl: 'templates/feed.html', controller: 'FeedController' }). state('cardlist', { resolve: auth_resolve, url: '/cards/{sectionId}', templateUrl: 'templates/cardlist.html', controller: 'CardListController' }). state('addclass', { resolve: auth_resolve, url: '/addclass', templateUrl: 'templates/addclass.html', controller: 'ClassAddController' }). |
331ca39d2
|
112 113 114 115 116 117 |
state('dropclass', { resolve: auth_resolve, url: '/settings/dropclass', templateUrl: 'templates/dropclass.html', controller: 'ClassDropController' }). |
4c3a5e272
|
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
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' }). |
620ed5155
|
136 137 138 139 140 141 |
state('settings', { resolve: auth_resolve, url: '/settings', templateUrl: 'templates/settings.html', controller: 'SettingsController' }). |
4c3a5e272
|
142 143 144 145 146 147 148 149 150 151 152 |
state('requestpasswordreset', { url: '/requestpasswordreset', templateUrl: 'templates/requestpasswordreset.html', controller: 'RequestResetController' }). state('resetpassword', { url: '/resetpassword/{uid}/{token}', templateUrl: 'templates/resetpassword.html', controller: 'ResetPasswordController' }). state('verifyemail', { |
4c3a5e272
|
153 154 155 |
url: '/verifyemail/{key}', templateUrl: 'templates/verifyemail.html', controller: 'VerifyEmailController' |
35387f308
|
156 157 158 159 |
}). state('404', { url: '/404', template: "<h1>This page doesn't exist!</h1>" |
b12a56132
|
160 161 162 163 164 165 |
}). state('help', { resolve: auth_resolve, url: '/help', templateUrl: 'templates/help.html', controller: 'HelpController' |
f05ccab30
|
166 |
}); |
4c3a5e272
|
167 |
}). |
fe2c7edc6
|
168 169 |
run(function($rootScope, $state, $stateParams, $location, UserService) { $rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) { |
4c3a5e272
|
170 171 172 |
console.log('failed to change state: ' + error); $state.go('login'); }); |
fe2c7edc6
|
173 |
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) { |
9e9dd40af
|
174 175 176 177 178 |
if (['feed', 'deck', 'cardlist'].indexOf(toState.name) >= 0) { localStorage.setItem('last_state', toState.name); localStorage.setItem('last_state_params', JSON.stringify(toParams)); } }); |
4c3a5e272
|
179 |
}); |