O aplicativo no qual estou trabalhando contém vários estados (usando ui-router), em que alguns estados exigem que você esteja conectado, outros estão disponíveis publicamente.
Eu criei um método que verifica validamente se um usuário está logado, o que estou tendo problemas atualmente é redirecionar para nossa página de login quando necessário. Deve-se observar que a página de login não está colocada no aplicativo AngularJS.
app.run(function ($rootScope, $location, $window) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
if (toState.data.loginReq && !$rootScope.me.loggedIn) {
var landingUrl = $window.location.host + "/login";
console.log(landingUrl);
$window.open(landingUrl, "_self");
}
});
});
O console.log mostra o url pretendido corretamente. Na linha seguinte, tentei praticamente tudo, de $ window.open a window.location.href e não importa o que eu tentei, nenhum redirecionamento acontece.
EDITAR (RESOLVIDO):
Encontrou o problema.
var landingUrl = $window.location.host + "/login";
$window.open(landingUrl, "_self");
A variável landingUrl foi definida como 'domain.com/login', o que não funcionaria com $ window.location.href (que foi uma das coisas que tentei). No entanto, após alterar o código para
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
agora funciona.