Я хочу, чтобы пользователи могли войти и запретить доступ к определенным состояниям в зависимости от разрешений, установленных в правилах firebase, которые я успешно выполнил.Перенаправление пользователя, если PERMISSION_DENIED
Я хочу избежать перенаправления страницы.
Я выполнил код перенаправления состояния «Auth», но я не могу получить код PERMISSION_DENIED в объекте, оставленном «return $ firebaseObject (ref2);»
myapp.factory("Auth", function($firebaseAuth) {
var ref = new Firebase("https://xxxx.firebaseio.com/");
return $firebaseAuth(ref);
});
//myedit, got rid of this factory
///myapp.factory("notLive", function($firebaseObject) {
/// var ref2 = new Firebase("https://xxxx.firebaseio.com/events");
/// return $firebaseObject(ref2);
///});
// for ui-router
myapp.run(["$rootScope", "$state", function($rootScope, $state) {
$rootScope.$on("$stateChangeError", function(event, toState, toParams, fromState, fromParams, error, code) {
if (error === "AUTH_REQUIRED") {
$state.go("home");
}
console.log(code); // returns undefined :(
///myedit - changed this
///if (code === "PERMISSION_DENIED") {
if (error.code === "PERMISSION_DENIED") {
$state.go("home");
}
});
}]);
Это мое состояние показывает решимость
.state("events", {
url: "/events",
templateUrl: "tpl/events.html",
controller: "eventsCtrl",
resolve: {
currentAuth: function(Auth) {
console.log(Auth.$requireAuth());
return Auth.$requireAuth();
},
///myedit - changed this
///notLive: function(notLive) {
/// console.log(notLive.$loaded());
/// return notLive.$loaded();
///}
notLive: function($firebaseObject) {
var refEvents = new Firebase("https://xxxxx.firebaseio.com/events");
return $firebaseObject(refEvents).$loaded();
}
}
})
Когда мой пользователь отрицается от узла «событий», они не могут видеть данные, которые отлично, но я хотел бы, чтобы они перенаправить в исходное состояние и сохранить зарегистрированное состояние.
Я поместил переадресацию hack в «eventsCtrl», но он мигает, прежде чем перенаправляться в «домашний» режим, чего я не хочу.
MyEdit - Я поместил это в верхней части eventsCtrl
var refPermissionDeniedEvents = new Firebase("https://xxxxx.firebaseio.com/events");
refPermissionDeniedEvents.on("value", function(snapshot) {
}, function(err){
$state.go("home", {}, { reload: true });
});
После этого, она позволяет пользователю войти в систему и пройти проверку подлинности и сидеть на домашней странице, то запрещен доступ к странице событий если я не изменю свои разрешения в узле USERS, а в правилах разрешения установлены в СОБЫТИИ СОБЫТИЙ.
После этого я достиг того, что мне нужно.
Я изменил несколько вещей и сумел получить его на работу, см. myedit – Jason