Ciao, sono nuovo di angularJS e ho cercato di impedire l'accesso a determinati stati in base ai criteri dell'utente.Ui-router angolare: come impedire l'accesso a uno stato
This, from ui-router's FAQ descrive esattamente cosa voglio fare, ma non riesco a farlo funzionare correttamente. Di cosa ho bisogno ma nell'oggetto dati esattamente per realizzare questo?
(ho visto qualcuno gettando in "vera" su alcuni post sul blog tutorial e usarlo piace come ho, ma quello non sembra funzionare perché ricevo un errore che dice needAdmin non è definito)
Ecco il mio codice:
angular.module('courses').config(['$stateProvider',
function($stateProvider) {
// Courses state routing
$stateProvider.
state('listCourses', {
url: '/courses',
templateUrl: 'modules/courses/views/list-courses.client.view.html'
}).
state('createCourse', {
url: '/courses/create',
templateUrl: 'modules/courses/views/create-course.client.view.html',
data: {
needAdmin: true
}
}).
state('viewCourse', {
url: '/courses/:courseId',
templateUrl: 'modules/courses/views/view-course.client.view.html'
}).
state('editCourse', {
url: '/courses/:courseId/edit',
templateUrl: 'modules/courses/views/edit-course.client.view.html',
data: {
needAdmin: true
}
});
}
]);
angular.module('courses').run(['$rootScope', '$state', 'Authentication', function($rootScope, $state, Authentication) {
$rootScope.$on('$stateChangeStart', function(e, to) {
var auth = Authentication;
console.log(auth.user.roles[0]);
if (to.data.needAdmin && auth.user.roles[0] !== 'admin') {
e.preventDefault();
$state.go('/courses');
}
});
}]);
L'interfaccia utente non dovrebbe avere i collegamenti alle pagine in primo luogo, giusto? – cgatian
@cgatian Non so ... Potresti entrare in maggiori dettagli per favore? – spuleri