diff --git a/config.js b/config.js
index 0de7b49..5ee3b4e 100644
--- a/config.js
+++ b/config.js
@@ -40,11 +40,19 @@ angular.module('flashy', [
};
});
$locationProvider.html5Mode(true);
- $urlRouterProvider.otherwise('/login');
+ $urlRouterProvider.otherwise('/404');
var auth_resolve = {
- authorize: function($q, UserService) {
+ authorize: function($q, $state, UserService) {
console.log('resolving user before continuing');
- return UserService.getUserData();
+ var redirectAsNeeded = function() {
+ if (!UserService.isLoggedIn()) {
+ console.log(UserService.getUserData());
+ console.log('making the user log in');
+ $state.go('login');
+ }
+ };
+ if (UserService.isResolved()) return redirectAsNeeded();
+ return UserService.getUserData().then(redirectAsNeeded);
}
};
$stateProvider.
@@ -116,22 +124,13 @@ angular.module('flashy', [
url: '/verifyemail/{key}',
templateUrl: 'templates/verifyemail.html',
controller: 'VerifyEmailController'
+ }).
+ state('404', {
+ url: '/404',
+ template: "
This page doesn't exist!
"
});
}).
run(function($rootScope, $state, $stateParams, $location, UserService) {
- $rootScope.$on('$stateChangeStart', function(event, toState, toStateParams) {
- if (toState.name == 'login') {
- if (UserService.isLoggedIn()) return console.log('already logged in') + $state.go('addclass');
- else return console.log('we are going to login anyway');
- }
- if (UserService.isLoggedIn()) return console.log('no login required; going straight to ' + toState.name);
- $rootScope.returnToState = toState;
- $rootScope.returnToStateParams = toStateParams;
- console.log('going to ' + toState.name + ' after login');
- event.preventDefault();
- $state.go('login');
-
- });
$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) {
console.log('failed to change state: ' + error);
$state.go('login');
diff --git a/home.html b/home.html
index 4a2f5e3..476bc8b 100644
--- a/home.html
+++ b/home.html
@@ -50,19 +50,20 @@
-
- - Feed
- - Deck
- - Card List
-
-
-
+
+
+ - Feed
+ - Deck
+ - Card List
+
+
+
-
diff --git a/scripts/UserService.js b/scripts/UserService.js
index f730f2e..586fb81 100644
--- a/scripts/UserService.js
+++ b/scripts/UserService.js
@@ -1,7 +1,7 @@
angular.module('flashy.UserService', ['ui.router']).
service('UserService', function($rootScope, $http, $q) {
var deferred = $q.defer();
-
+ var _user = false;
$http.get('/api/me/').success(function(data) {
console.log('user is logged in!');
_user = data;
@@ -9,22 +9,26 @@ angular.module('flashy.UserService', ['ui.router']).
}).error(function(data) {
console.log(data);
console.log('not logged in yet: ' + data.detail);
- deferred.resolve({});
+ deferred.resolve({email: false});
});
- var _user = deferred.promise;
-
+ this.isResolved = function() {
+ return !!_user;
+ };
this.getUserData = function() {
- return _user;
+ if (this.isResolved()) return _user;
+ else return deferred.promise;
};
this.setUserData = function(data) {
_user = data;
+ deferred.resolve(data);
};
this.logout = function() {
- _user = {};
+ _user = false;
+ deferred.resolve({});
};
this.isLoggedIn = function() {
- rv = angular.isDefined(_user.email);
+ rv = this.isResolved() && _user.email;
return rv;
};
});
diff --git a/templates/flashcard.html b/templates/flashcard.html
index ab016fc..a212244 100644
--- a/templates/flashcard.html
+++ b/templates/flashcard.html
@@ -1,7 +1,9 @@