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 :)

1 réponse


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;
    });