Я использую angular-acl (https://github.com/mikemclin/angular-acl) для управления логикой авторизации моего приложения и работает нормально, за исключением случаев, когда пользователь открывает новое окно/вкладку.Как загрузить данные сеанса перед изменением состояния StateProvider в AngularJs?
Когда пользователь открывает новое окно/вкладку, я не могу получить доступ к sessionStorage, поэтому мне нужно перезагрузить acl и роли пользователя из API, но по мере того как запрос является асинхронным, он обычно решает после проверки разрешения.
Как я могу подтвердить, что stateProvider только изменит страницу после загрузки списка acl?
Вот как я пытаюсь перезагрузить разрешение:
myApp.run(['AclService', 'Auth', '$http', function (AclService, Auth, $http) {
if(!AclService.resume()) {
Auth.load_acl();
Auth.load_user_roles();
// I need to certify that these requests are complete before continue
}
}]);
Служба, сделать запрос:
var authServices = angular.module('authServices', []);
authServices.factory('Auth', ['$http', 'AclService', function($http, AclService) {
var authService = {};
authService.load_acl = function() {
return $http.get('/auth/get_acl').then(function(response){
var aclData = {};
for(i in response.data) {
var role = response.data[i];
if(aclData[role.name] === undefined)
aclData[role.name] = [];
aclData[role.name].push(role.ability_name);
}
AclService.setAbilities(aclData);
});
};
authService.load_user_roles = function() {
return $http.get('/auth/get_user_roles').then(function(response){
for(role in response.data) {
AclService.attachRole(response.data[role]);
}
});
};
return authService;
}])