angular.module('myApp.auth', [
'ui.router'
])
.config(['$stateProvider', '$urlRouterProvider',
function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('auth', {
url: '/auth',
abstract: true,
template: '<ui-view>'
})
.state('auth.login', {
url: '/login',
templateUrl: 'src/auth/partials/login.html',
data: {
'noLogin': true
}
});
]);
angular.module('myApp.auth')
.service('SessionService', [
'$injector',
function($injector) {
"use strict";
this.checkAccess = function(event, toState, toParams, fromState, fromParams) {
var $scope = $injector.get('$rootScope'),
$sessionStorage = $injector.get('$sessionStorage');
if (toState.data !== undefined) {
if (toState.data.noLogin !== undefined && toState.data.noLogin) {
// если нужно, выполняйте здесь какие-то действия
// перед входом без авторизации
}
} else {
// вход с авторизацией
if ($sessionStorage.user) {
$scope.$root.user = $sessionStorage.user;
} else {
// если пользователь не авторизован - отправляем на страницу авторизации
event.preventDefault();
$scope.$state.go('auth.login');
}
}
};
}
]);
angular.module('myApp', [
'myApp.auth',
'ui.router',
'ngStorage'
])
.run([
'$rootScope', '$state', '$stateParams', 'SessionService',
function ($rootScope, $state, $stateParams, SessionService) {
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
$rootScope.user = null;
// Здесь мы будем проверять авторизацию
$rootScope.$on('$stateChangeStart',
function (event, toState, toParams, fromState, fromParams) {
SessionService.checkAccess(event, toState, toParams, fromState, fromParams); // вот здесь и ошибка
}
);
}
])