.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $locationProvider) {
$stateProvider .state('login', { url: "/login", templateUrl: "app/components/auth/login.html", controller: "LoginCtrl as vm", }); }]); <nav id="myNavbar" class="navbar navbar-default" role="navigation"> <div ng-controller="NavCtrl as vm"> On Monday, April 4, 2016 at 11:09:55 PM UTC-7, Ravi Kiran R wrote: > > Can we know how the controller are placed on view ? > > On Tuesday, 5 April 2016 05:04:30 UTC+10, Rj Ewing wrote: >> >> Hello, I'm new to angular and having trouble accessing the user from my >> UserFactory. My NavCtrl isn't recognizing when UserFactory.user is updated >> (after authentication) >> >> app.controller('NavCtrl', ['$scope', 'AuthFactory', 'UserFactory', >> function ($scope, AuthFactory, UserFactory) { >> var vm = this; >> vm.isLoggedIn = UserFactory.isLoggedIn; >> vm.isAdmin = UserFactory.isAdmin; >> vm.user = UserFactory.getUser(); >> vm.logout = logout; >> >> function logout() { >> AuthFactory.logout(); >> UserFactory.removeUser(); >> } >> }]); >> >> app.controller("LoginCtrl", ['$scope', '$state', 'AuthFactory', >> 'UserFactory', function ($scope, $state, AuthFactory, UserFactory) { >> var vm = this; >> vm.credentials = { >> username: '', >> password: '' >> }; >> vm.submit = submit; >> >> function submit() { >> AuthFactory.login(vm.credentials.username, >> vm.credentials.password) >> .success(function(data, status, headers, config) { >> UserFactory.fetchUser(); >> $state.go('home'); >> }) >> .error(function(data, status, headers, config) { >> if (angular.isDefined(data.usrMessage)) >> $scope.error = data.usrMessage; >> else >> $scope.error = "Server Error! Status code: " + status; >> }); >> } >> }]); >> >> app.factory('UserFactory', ['$http', 'AuthFactory', function($http, >> AuthFactory) { >> var user; >> >> var userFactory = { >> getUser: getUser, >> isLoggedIn: isLoggedIn, >> isAdmin: isAdmin, >> removeUser: removeUser, >> fetchUser: fetchUser, >> }; >> >> return userFactory; >> >> function isLoggedIn() { >> return AuthFactory.isAuthenticated(); >> } >> >> function isAdmin() { >> return angular.isDefined(user) && user.projectAdmin == true; >> } >> >> function getUser() { >> return user; >> } >> >> function removeUser() { >> user = undefined; >> } >> >> function fetchUser() { >> if (isLoggedIn()) { >> $http.get('/biocode-fims/rest/users/profile') >> .success(function (data, status, headers, config) { >> user = data; >> }) >> } >> } >> >> }]); >> >> app.factory('AuthFactory', ['$http', '$rootScope', '$window', function >> ($http, $rootScope, $window) { >> var triedToRefresh = false; >> >> var authFactory = { >> isAuthenticated: isAuthenticated, >> login: login, >> logout: logout, >> refreshAccessToken: refreshAccessToken >> }; >> >> return authFactory; >> >> function isAuthenticated() { >> return !angular.isUndefined($window.sessionStorage.accessToken); >> } >> >> function login(username, password) { >> var config = { >> method: 'POST', >> url: '/rest/authenticationService/oauth/accessToken', >> data: $.param({ >> redirect_uri: 'localhost:8080/oauth', >> grant_type: 'password', >> username: username, >> password: password >> }), >> headers: { >> 'Content-Type': 'application/x-www-form-urlencoded' >> } >> }; >> >> return $http(config) >> .success(function(data, status, headers, config) { >> setOAuthTokens(data.access_token, data.refresh_token); >> >> $rootScope.$broadcast('authChanged'); >> }) >> .error(function (data, status, headers, config) { >> authFactory.logout(); >> }); >> } >> >> function logout() { >> delete $window.sessionStorage.accessToken; >> delete $window.sessionStorage.refreshToken; >> } >> >> function refreshAccessToken() { >> var refreshToken = $window.sessionStorage.refreshToken; >> if (!triedToRefresh && !angular.isUndefined(refreshToken)) { >> var config = { >> method: 'POST', >> url: '/rest/authenticationService/oauth/refresh', >> data: $.param({ >> client_id: client_id, >> client_secret: client_secret, >> refresh_token: refreshToken >> }), >> headers: { >> 'Content-Type': 'application/x-www-form-urlencoded' >> } >> }; >> >> $http(config) >> .success(function(data, status, headers, config) { >> setOAuthTokens(data.access_token, data.refresh_token); >> triedToRefresh = false; >> }) >> .error(function (data, status, headers, config) { >> triedToRefresh = true; >> return false; >> }); >> } >> >> return false; >> } >> >> function setOAuthTokens(accessToken, refreshToken) { >> $window.sessionStorage.accessToken = accessToken; >> $window.sessionStorage.refreshToken = refreshToken; >> } >> }]); >> >> >> -- 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 angular+unsubscr...@googlegroups.com. To post to this group, send email to angular@googlegroups.com. Visit this group at https://groups.google.com/group/angular. For more options, visit https://groups.google.com/d/optout.