html5 - Route Angular to New Controller after Login -
i'm kind of stuck on how route angular app new controller after login. have simple app, uses 'loginservice'... after logging in, routes /home has different template index.html(login page).
i want use /home route displays partial views of flightforms controllers. best way configure routes after login, /home default , routes called particular templates view. seems easy keep getting /login page when click on link suppose pass partial view 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 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 controllers simple. here's sample of like:
var flightformscontrollers = angular.module('flightformscontroller', []); flightforms.controller('fieldmgrctrl', ['$scope','$http','loginservice', function($scope,loginservice) { $scope.txt='you logged in'; $scope.logout=function(){ loginservice.logout(); } }]);
any ideas on how partials display in /home default.html template appreciated.
1) move routing main app.config, , remove duplicate route /home.
2) change line
var flightformscontrollers = angular.module('flightformscontroller', []);
to
var flightforms = angular.module('flightforms', []);
3) change app definition line inject flightforms module:
var app= angular.module('myapp', ['ngroute', 'flightforms']);
that should ya close.
for 1 of comments, idea have interecptor catches 401 un-authenticated errors server. way, if user's session expires before route change, still have login again start new session. in app.config should it.
$provide.factory('logouton401', ['$q', '$injector', function ($q, $injector) { return { 'responseerror': function(response) { if (response.status === 401) { $location.path('/login') return $q.reject(); } else { return $q.reject(response); } } }; }]); $httpprovider.interceptors.push('logouton401');
Comments
Post a Comment