Pregunta

Estoy usando la Toalla Caliente angular de la biblioteca (https://github.com/johnpapa/hottowel-angular-bower) en un proyecto que he heredado de un desarrollador senior.

Estoy incorporando también Auth0 de la biblioteca de autenticación de Angular.

Necesito limitar algunas rutas para usuarios autenticados.Para hacer eso, establecer algunas propiedades de recorrido.
isLogin: true para las rutas que se limita a los usuarios no autenticados.
requiresLogin: true para las rutas necesidad de autenticación, y al contrario para aquellos que no.Para comprobar estas propiedades en cada runthrough, yo uso $rootScope.$on('$routeChangeStart' function()).

app.run(function ($rootScope, $location, auth, common, config) {
    var getLogFn = common.logger.getLogFn,
        log      = getLogFn('auth handle'),
        events   = config.events;

    $rootScope.$on('$routeChangeSuccess', function (e, nextRoute, currentRoute) {
        if (nextRoute.$$route && nextRoute.$$route.settings && nextRoute.$$route.settings.requiresLogin) {
            if (!auth.isAuthenticated) {
                $location.path('/login');
                log('User not authenticated');
            }
        }
        if (nextRoute.$$route && nextRoute.$$route.settings && nextRoute.$$route.settings.isLogin) {
            if (auth.isAuthenticated) {
                $location.path('/');
                log('User is authenticated');
            }
        }
    })
});

Ahora, parece que esto interfiere con el spinner funcionalidad incluida en Caliente con una Toalla.En Shell.js me parece la siguiente:

$rootScope.$on('$routeChangeStart',
    function (event, next, current) { toggleSpinner(true); }
);

$rootScope.$on(events.controllerActivateSuccess,
    function (data) { toggleSpinner(false); }
);

$rootScope.$on(events.spinnerToggle,
    function (data) { toggleSpinner(data.show); }
);

Lo que pasa es que el girador nunca deja de girar (por ejemplo,vm.isBusy = true porque un controlador nunca está activado y el restablecimiento de esta), ¿cómo puedo evitar esto?

¿Fue útil?

Solución

Una idea es que usted podría utilizar un evento ($broadcast) para notificar cuando la onu el acceso no autorizado entonces sí es recibida por el controlador desactiva el control de giro.

Otros consejos

No he estudiado el código para muy largo, pero ¿no deberías usar $routeChangeSuccess para detener la ruleta?

$scope.isViewLoading = false;
$scope.$on('$routeChangeStart', function() {
    $scope.isViewLoading = true;
});
$scope.$on('$routeChangeSuccess', function() {
    $scope.isViewLoading = false;
}); 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top