Sorry, this part "next.$$route.authenticate", is with doble $$? what?
I'm new to angular but I'm working with a very similar problem.
In muy case .run is:
.run(function($state, Config, LoginServ) {
if (Config.configToken !== "undefined") {
LoginServ.LogInToken().success(function (json_rta) {
var acceso = json_rta.acceso;
var permisos = json_rta.permisos;
if (acceso === true) {
LoginServ.SetLogueo(true);
if ($state.includes("login")) {
$state.go('app.ranking');
}
} else {
LoginServ.LogOut();
}
}).error(function (response){
});
};
});
.config(function($stateProvider, $urlRouterProvider, $provide) {
$provide.value('Config', {
configToken: "undefined",
configSector: "undefined",
configCategoria: "undefined",
configLogin: "undefined"
})
)}
.factory('LoginServ', function ($state, $http, Config) {
var loginAPI = {};
loginAPI.LogInToken = function(token) {
var token = Config.configToken;
return $http({
method : 'POST',
url: UrlRaiz + 'index.php/ingreso_logueado/',
data: {
token: token,
}
});
}
return loginAPI;
});
The problem of asynchronism is running the service "LoginServ" but without
this end, continued by routing.
I found articles that say to use "promise" in server and "resolve" in
routing. I can not even give a complete solution yet.
Some help?
El viernes, 13 de marzo de 2015, 1:04:01 (UTC-3), Maxime Dubois escribió:
>
> Hi everyone!
>
> I've been trying for too long now, I need your help!
>
> What I'm trying to achieve here is that I need to validate server-side
> (PHP) if the user is logged in or not. Then if he's not, I redirect to the
> login page.
>
> It's working good until I reach the point where it redirects to the login
> page. What I found is that even if I do event.preventDefault(), angular
> will still load my dashboard.html partial and then redirect to login.
> That's what is bothering right now.. If I want the user to be redirect, I
> don't want angular to load my partial view before redirecting..
>
> I'm guessing that it's because of the async call.. But I don't know how to
> get around this problem!
>
> Here's my code
>
> sruApp.config(['$routeProvider',
> function($routeProvider) {
> $routeProvider.
> when('/', {
> templateUrl: './partials/home.html',
> controller: 'HomeCtrl',
> authenticate: false
> }).
> when('/login', {
> templateUrl: './partials/login.html',
> controller: 'LoginCtrl',
> authenticate: false
> }).
> when('/dashboard', {
> templateUrl: './partials/dashboard.html',
> controller: 'DashboardCtrl',
> authenticate: true
> }).
> when('/logout', {
> templateUrl: './partials/logout.html',
> controller: 'LogoutCtrl',
> authenticate: false
> }).
> when('/register', {
> templateUrl: './partials/register.html',
> controller: 'RegisterCtrl',
> authenticate: false
> });
> }]);
>
> sruApp.run(["$rootScope", "$location", "user", function($rootScope,
> $location, user) {
> $rootScope.$on('$routeChangeStart', function (event, next, current) {
> user.isLoggedIn().then(function(res) { //async call to php api return if
> $_SESSION["isLoggedIn"] == true || false
> $rootScope.isLoggedIn = res.result;
> if(next.$$route.authenticate) {
> if(!res.result) {
> event.preventDefault();
> $location.path("/login");
> }
> }
> });
> });
> }]);
>
> user factory :
> sruApp.factory("user", ['$rootScope', '$http', function($rootScope, $http)
> {
> var appAPI = "./server/app/";
> var obj = {};
> obj.isLoggedIn = function() {
> return $http.get(appAPI + 'user/isLoggedIn');
> };
> obj.logout = function() {
> return $http.get(appAPI + 'user/logout');
> };
> return obj;
> }]);
>
> I hope someone will be able to help me with this! i'm struggling with this
> problem for hours now..
>
> Thanks!
>
--
You received this message because you are subscribed to the Google Groups
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.