freeCodeCamp/client/js/app.js

71 lines
2.0 KiB
JavaScript
Raw Normal View History

angular.module('myapp', ['ngCookies', 'ngRoute'])
.config(['$routeProvider', '$locationProvider', '$httpProvider', function ($routeProvider, $locationProvider, $httpProvider) {
var access = routingConfig.accessLevels;
$routeProvider.when('/', {
templateUrl: 'home',
controller: 'HomeCtrl',
access: access.user
});
$routeProvider.when('/login', {
templateUrl: 'login',
controller: 'LoginCtrl',
access: access.anon
});
$routeProvider.when('/register', {
templateUrl: 'register',
controller: 'RegisterCtrl',
access: access.anon
});
$routeProvider.when('/private', {
templateUrl: 'private',
controller: 'PrivateCtrl',
access: access.user
});
$routeProvider.when('/admin', {
templateUrl: 'admin',
controller: 'AdminCtrl',
access: access.admin
});
$routeProvider.when('/404', {
templateUrl: '404',
access: access.public
});
$routeProvider.otherwise({
redirectTo:'/404'
});
$locationProvider.html5Mode(true);
var interceptor = ['$location', '$q', function($location, $q) {
function success(response) {
return response;
}
function error(response) {
if(response.status === 401) {
$location.path('/login');
return $q.reject(response);
}
else {
return $q.reject(response);
}
}
return function(promise) {
return promise.then(success, error);
}
}];
$httpProvider.responseInterceptors.push(interceptor);
}])
.run(['$rootScope', '$location', 'Auth', function ($rootScope, $location, Auth) {
$rootScope.$on("$routeChangeStart", function (event, next, current) {
$rootScope.error = null;
if (!Auth.authorize(next.access)) {
if(Auth.isLoggedIn()) $location.path('/');
else $location.path('/login');
}
});
}]);