The app I am working on contains various states (using ui-router), where some states require you to be logged in, others are publicly available.
I have created a method that validly checks whether a user is logged in, what I am currently having issues with is actually redirecting to our login-page when necessary. It should be noted that the login page is not currently placed within the AngularJS app.
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");
}
});
});
The console.log shows the intended url properly. The line after that, I have tried practically everything from $window.open to window.location.href and no matter what I've tried no redirect happens.
EDIT (RESOLVED):
Found the issue.
var landingUrl = $window.location.host + "/login";
$window.open(landingUrl, "_self");
The variable landingUrl was set to 'domain.com/login', which would not work with $window.location.href (which was one of the things I tried). However after changing the code to
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
it now works.
I believe the way to do this is $location.url('/RouteTo/Login');
Edit for Clarity
Say my route for my login view was /Login
, I would say $location.url('/Login')
to navigate to that route.
For locations outside of the Angular app (i.e. no route defined), plain old JavaScript will serve:
window.location = "http://www.my-domain.com/login"