Pregunta

Sólo estoy intentando que esto funcione:

 .....
   .when('/channel/:id/:slug',{
            templateUrl:'views/channel/index.html',
            controller:'Channel',
            publicAccess:true,
            sessionAccess:true
          })
   .....
    app.controller('Channel', ['$scope','$routeParams', function ($scope,$routeParams) {

    }]);


    app.run(function($rootScope, $location, $route) {

      var routesOpenToSession = [];

      angular.forEach($route.routes, function(route, path) {
        console.log(path);
        console.log(route);
        route.sessionAccess && (routesOpenToSession.push(path));
      });

      $rootScope.$on('$routeChangeStart', function(event, nextLoc, currentLoc) {

        var closedToSession = (-1 === routesOpenToSession.indexOf($location.path()));

        if(closedToSession && $rootScope.session.id_user) {
          $location.path('/');
        }
      });
    });

¿Por qué no puedo acceder a la página a través de site.com/channel/9/my-slug También si $rootScope.session.id_user existe y sessionAccess:true ?

me redirigen a / , mientras que cualquier otra URL estática está bien usando sessionAccess:true por ejemplo channel/staticparam está bien pero con parámetros dinámicos no funcionará

este es el resultado del registro de la consola:

enter image description here

¿Fue útil?

Solución

arreglado perdón por la pregunta estúpida:

/*Not logged redirects*/
app.run(['$rootScope','$location','$route', function ($rootScope, $location,$route) {

   var routesOpenToPublic = [];

    angular.forEach($route.routes, function (route, path) {

      if(route.publicAccess){ routesOpenToPublic.push(route.regexp); }

    });

    $rootScope.$on('$routeChangeStart', function (event, nextLoc, currentLoc) {

     var next_url_regexp = nextLoc.$$route.regexp;
    //redirect for not logged users users
     if(routesOpenToPublic.indexOf(next_url_regexp) < 0){

      $location.path('/auth/login');

     }

    });
}]);
/*Logged redirects*/
app.run(['$rootScope','$location','$route', function ($rootScope, $location, $route) {

  if($rootScope.session && $rootScope.session.id_user){

    var routesOpenToSession = [];

    angular.forEach($route.routes, function (route, path) {

      if(route.sessionAccess){ routesOpenToSession.push( route.regexp);}

    });

    $rootScope.$on('$routeChangeStart', function (event, nextLoc, currentLoc) {

     var next_url_regexp = nextLoc.$$route.regexp;
    //redirect for not allowed session users
     if(routesOpenToSession.indexOf(next_url_regexp) < 0){

      $location.path('/');

     }

    });
  }

 }]);

Necesitaba verificar la expresión regular de la ruta y no la ruta de la URL estática.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top