Bonjour à tous je développe un systeme d'authentification pour mon application angular js et pour cela je me sers du systeme de routage configurer avec $routeProvider :
DOPCjsApp.config('$routeProvider','USER_ROLES',
function($routeProvider, USER_ROLES){
$routeProvider.
when('/edition/:numOrdre', {
templateUrl : 'views/edition.html',
controller : 'EditionController',
data : {
authorizedRoles : USER_ROLES.admin, USER_ROLES.editor ]
}
}).
when('/wall', {
templateUrl : 'views/mur.html',
controller : 'WallController',
data : {
authorizedRoles : USER_ROLES.admin, USER_ROLES.editor, USER_ROLES.user ]
}
}).
when('/index', {
templateUrl : 'views/index.html',
controller : 'IndexController'
}).
otherwise({
redirectTo : '/wall'
});
}]);
Pour chaque route, j'ai attaché des données qui correspondent aux droits qui ont acces à la page.
Ensuite a chaque détection de page je veux vérifier si mon utilisateur courant à les droits pour acceder à la page grace à l'évenement $locationChangeStart
DOPCjsApp.run(function($rootScope, AuthService, AUTH_EVENTS, $route){
$rootScope.$on('$locationChangeStart', function(event){
//je souhaiterai récuperer le data de la route dans laquelle je tente d'acceder
//Pour le moment je n'arrive a acceder qu'au data de l'endroit ou je suis actuellement grace a current
//impossible de trouver dans la doc ou avec des consoles log sur $route une methode pour y acceder
var authorizedRoles = $route.current.data.authorizedRoles;
//le reste n'est que du code logic pas important pour ma question ..
if(!AuthService.isAuthorized(authorizedRoles)){
event.preventDefault();
if(AuthService.isAuthenticated){
$rootScope.$broadcast( AUTH_EVENTS.notAuthorized);
}else{
$rootScope.$broadcast( AUTH_EVENTS.notAuthenticated);
}
}*/
});
});
Voila ma question est dans le commentaire du deuxieme bout de code, je n'arrive pas à acceder au data de l'endroit ou je veux tenter d'arriver.
Si quelqu'un connait une solution je lui en serait tres reconnaissant :)
Salut,
Tu ne semble pas avoir eu de reponse a ton probleme et meme si le sujet date un peu, je vais quand meme te proposer une solution. En utilisant l'objet $location
coupler a $route
, tu peux actuellement arriver a faire ce que tu veux :
DOPCjsApp
.run(function ($rootScope, AuthService, AUTH_EVENTS, $route, $location) {
var authorizedRoles = $route.routes[$location.path()].data.authorizedRoles;
});