Route Angular to New Controller after Login

Posted by MizAkita on Stack Overflow See other posts from Stack Overflow or by MizAkita
Published on 2014-05-29T19:00:55Z Indexed on 2014/05/29 21:27 UTC
Read the original article Hit count: 236

Filed under:
|

I'm kind of stuck on how to route my angular app to a new controller after login. I have a simple app, that uses 'loginservice'... after logging in, it then routes to /home which has a different template from the index.html(login page).

I want to use /home as the route that displays the partial views of my flightforms controllers. What is the best way to configure my routes so that after login, /home is the default and the routes are called into that particular templates view. Seems easy but I keep getting the /login page when i click on a link which is suppose to pass the partial view into the default.html template:

var app= angular.module('myApp', ['ngRoute']);

app.config(['$routeProvider', function($routeProvider) {

    $routeProvider.when('/login', {
        templateUrl: 'partials/login.html', 
        controller: 'loginCtrl'
    });

    $routeProvider.when('/home', {
        templateUrl: 'partials/default.html', 
        controller: 'defaultCtrl'
    });

}]);


flightforms.config(['$routeProvider', function($routeProvider){
 //sub pages    

    $routeProvider.when('/home', {
        templateUrl: 'partials/default.html', 
        controller: 'defaultCtrl'
    });

    $routeProvider.when('/status', {
        templateUrl: 'partials/subpages/home.html', 
        controller: 'statusCtrl'
    });

    $routeProvider.when('/observer-ao', {
        templateUrl: 'partials/subpages/aobsrv.html', 
        controller: 'obsvaoCtrl'
    });

    $routeProvider.when('/dispatch', {
        templateUrl: 'partials/subpages/disp.html', 
        controller: 'dispatchCtrl'
    });

    $routeProvider.when('/fieldmgr', {
        templateUrl: 'partials/subpages/fieldopmgr.html', 
        controller: 'fieldmgrCtrl'
    });

    $routeProvider.when('/obs-backoffice', {
        templateUrl: 'partials/subpages/obsbkoff.html', 
        controller: 'obsbkoffCtrl'
    });

    $routeProvider.when('/add-user', {
        templateUrl: 'partials/subpages/users.html', 
        controller: 'userCtrl'
    });

    $routeProvider.otherwise({
        redirectTo: '/status'
    });
}]);    

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

    var routespermission=['/home'];  //route that require login
    $rootScope.$on('$routeChangeStart', function(){
        if( routespermission.indexOf($location.path()) !=-1)
        {
            var connected=loginService.islogged();
            connected.then(function(msg) {
                if(!msg.data) $location.path('/login');
            });
        }
    });
});

and my controllers are simple. Here's a sample of what they look like:

var flightformsControllers = angular.module('flightformsController', []);

flightforms.controller('fieldmgrCtrl', ['$scope','$http','loginService',
    function($scope,loginService) {
        $scope.txt='You are logged in';
        $scope.logout=function(){
            loginService.logout();
        }
}]);

Any ideas on how to get my partials to display in the /home default.html template would be appreciated.

© Stack Overflow or respective owner

Related posts about html5

Related posts about angularjs