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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.