updated authorization
This commit is contained in:
parent
8204980626
commit
09ce94152a
|
@ -0,0 +1,47 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular.module('users').factory('Authorization', ['$rootScope', '$http', '$q', '$state', 'Principal',
|
||||||
|
function($rootScope, $http, $q, $state, Principal) {
|
||||||
|
var service = {
|
||||||
|
authorize: function(){
|
||||||
|
var deferred = $q.defer();
|
||||||
|
$http.get('/user/me').success(function(response) {
|
||||||
|
|
||||||
|
|
||||||
|
//user is logged in
|
||||||
|
if(response.data !== null){
|
||||||
|
deferred.resolve();
|
||||||
|
}else {
|
||||||
|
$rootScope.message = 'You need to log in.';
|
||||||
|
deferred.reject();
|
||||||
|
$state.go('/login');
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
return deferred.promise();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return service;
|
||||||
|
// this.authorize = function() {
|
||||||
|
// return Principal.identity().then(function(){
|
||||||
|
// var isAuthenticated = Principal.isAuthenticated();
|
||||||
|
// if( angular.isDefined($rootScope.toState.data) ){
|
||||||
|
// // if ($rootScope.toState.data.roles && $rootScope.toState.data.roles.length > 0 && !principal.isInAnyRole($rootScope.toState.data.roles)) {
|
||||||
|
// if (!isAuthenticated){ //$location.path('/access_denied'); // user is signed in but not authorized for desired state
|
||||||
|
// // console.log('isAuthenticated: '+isAuthenticated);
|
||||||
|
|
||||||
|
// // else {
|
||||||
|
// // user is not authenticated. so the state they wanted before you
|
||||||
|
// // send them to the signin state, so you can return them when you're done
|
||||||
|
// $rootScope.returnToState = $rootScope.toState;
|
||||||
|
// $rootScope.returnToStateParams = $rootScope.toStateParams;
|
||||||
|
|
||||||
|
// // now, send them to the signin state so they can log in
|
||||||
|
// $location.path('/signin');
|
||||||
|
// }
|
||||||
|
// // }
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// };
|
||||||
|
}
|
||||||
|
]);
|
202
public/modules/users/services/principal.client.service.js
Executable file
202
public/modules/users/services/principal.client.service.js
Executable file
|
@ -0,0 +1,202 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular.module('users').factory('AuthenticationService', function($http, $timeout, $q) {
|
||||||
|
var error;
|
||||||
|
var service = {
|
||||||
|
// Information about the current user
|
||||||
|
currentUser: null,
|
||||||
|
|
||||||
|
login: function(credentials) {
|
||||||
|
var login = $http.post('/auth/signin', credentials);
|
||||||
|
login.success(function(data) {
|
||||||
|
service.currentUser = data.user;
|
||||||
|
// $flash.clear();
|
||||||
|
}).error(function(error) {
|
||||||
|
error = error.error ? error.error : error;
|
||||||
|
console.error(error.message || error);
|
||||||
|
});
|
||||||
|
return login;
|
||||||
|
},
|
||||||
|
|
||||||
|
logout: function() {
|
||||||
|
var logout = $http.get('/auth/logout');
|
||||||
|
logout.success(function() {
|
||||||
|
service.currentUser = null;
|
||||||
|
console.log("You've successfully logged out");
|
||||||
|
});
|
||||||
|
return logout;
|
||||||
|
},
|
||||||
|
|
||||||
|
signup: function(credentials) {
|
||||||
|
var signup = $http.post('/auth/signup', credentials)
|
||||||
|
signup.success(function(response) {
|
||||||
|
console.log("You've successfully created an account");
|
||||||
|
}).error(function(response) {
|
||||||
|
error = error.error ? error.error : error;
|
||||||
|
console.error(error.message || error);
|
||||||
|
});
|
||||||
|
|
||||||
|
return signup;
|
||||||
|
},
|
||||||
|
|
||||||
|
// Ask the backend to see if a user is already authenticated -
|
||||||
|
// this may be from a previous session.
|
||||||
|
identity: function() {
|
||||||
|
if (service.isAuthenticated()) {
|
||||||
|
return $q.when(service.currentUser);
|
||||||
|
} else {
|
||||||
|
return $http.get('/user/me').then(function(response) {
|
||||||
|
service.currentUser = response.data.user;
|
||||||
|
return service.currentUser;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Is the current user authenticated?
|
||||||
|
isAuthenticated: function() {
|
||||||
|
return !!service.currentUser;
|
||||||
|
},
|
||||||
|
|
||||||
|
isInRole: function(role) {
|
||||||
|
return service.isAuthenticated() (service.currentUser.roles.indexOf(role) !== -1);
|
||||||
|
},
|
||||||
|
|
||||||
|
isInAnyRole: function(roles) {
|
||||||
|
if ( !service.isAuthenticated() || !service.currentUser.roles) return false;
|
||||||
|
var roles = service.currentUser.roles;
|
||||||
|
|
||||||
|
for (var i = 0; i < roles.length; i++) {
|
||||||
|
if (this.isInRole(roles[i])) return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
};
|
||||||
|
return service;
|
||||||
|
});
|
||||||
|
|
||||||
|
// .factory('Principal', ['$window', '$http', '$q', '$timeout', '$state',
|
||||||
|
// function($window, $http, $q, $timeout, $state) {
|
||||||
|
// var _identity,
|
||||||
|
// _authenticated = false;
|
||||||
|
|
||||||
|
// return {
|
||||||
|
// isIdentityResolved: function() {
|
||||||
|
// return angular.isDefined(_identity);
|
||||||
|
// },
|
||||||
|
// isAuthenticated: function() {
|
||||||
|
// return _authenticated;
|
||||||
|
// },
|
||||||
|
// isInRole: function(role) {
|
||||||
|
// if (!_authenticated || !_identity.roles) return false;
|
||||||
|
|
||||||
|
// return _identity.roles.indexOf(role) !== -1;
|
||||||
|
// },
|
||||||
|
// isInAnyRole: function(roles) {
|
||||||
|
// if (!_authenticated || !_identity.roles) return false;
|
||||||
|
|
||||||
|
// for (var i = 0; i < roles.length; i++) {
|
||||||
|
// if (this.isInRole(roles[i])) return true;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return false;
|
||||||
|
// },
|
||||||
|
// authenticate: function(user) {
|
||||||
|
// _identity = user;
|
||||||
|
// _authenticated = (user !== null);
|
||||||
|
|
||||||
|
// // for this demo, we'll store the identity in localStorage. For you, it could be a cookie, sessionStorage, whatever
|
||||||
|
// if (user) $window.user = user;
|
||||||
|
// else $window.user = null;
|
||||||
|
// },
|
||||||
|
// signin: function(credentials) {
|
||||||
|
|
||||||
|
// var deferred = $q.defer();
|
||||||
|
// var self = this;
|
||||||
|
// $http.post('/auth/signin', credentials).success(function(response) {
|
||||||
|
// // If successful we assign the response to the global user model
|
||||||
|
// self.authenticate(response);
|
||||||
|
// deferred.resolve(response);
|
||||||
|
// }).error(function(response) {
|
||||||
|
// _authenticated = false;
|
||||||
|
// deferred.reject({ error: response.message });
|
||||||
|
// });
|
||||||
|
// return deferred.promise;
|
||||||
|
// },
|
||||||
|
// signup: function(credentials) {
|
||||||
|
|
||||||
|
// var deferred = $q.defer();
|
||||||
|
|
||||||
|
// $http.post('/auth/signup', credentials).success(function(response) {
|
||||||
|
// // If successful we assign the response to the global user model
|
||||||
|
// deferred.resolve(response);
|
||||||
|
// }).error(function(response) {
|
||||||
|
|
||||||
|
// deferred.reject({ error: response.message });
|
||||||
|
// });
|
||||||
|
|
||||||
|
// return deferred.promise;
|
||||||
|
// },
|
||||||
|
// signout: function() {
|
||||||
|
// var deferred = $q.defer();
|
||||||
|
// $http.get('/auth/signout').success(function(response) {
|
||||||
|
// // If successful we assign the response to the global user model
|
||||||
|
// deferred.resolve({});
|
||||||
|
// }).error(function(response) {
|
||||||
|
// deferred.reject({ error: response.message });
|
||||||
|
// });
|
||||||
|
|
||||||
|
// _authenticated = false;
|
||||||
|
// _identity = undefined;
|
||||||
|
|
||||||
|
// return deferred.promise;
|
||||||
|
// },
|
||||||
|
// identity: function() {
|
||||||
|
// var self = this;
|
||||||
|
|
||||||
|
// var deferred = $q.defer();
|
||||||
|
|
||||||
|
// // check and see if we have retrieved the user data from the server. if we have, reuse it by immediately resolving
|
||||||
|
// if (angular.isDefined(_identity)) {
|
||||||
|
|
||||||
|
// deferred.resolve(_identity);
|
||||||
|
// return deferred.promise;
|
||||||
|
// }else if($window.user){
|
||||||
|
// // console.log($window.user);
|
||||||
|
// // self.authenticate($window.user);
|
||||||
|
// // var user = $window.user;
|
||||||
|
// _identity = $window.user;
|
||||||
|
// self.authenticate(_identity);
|
||||||
|
// deferred.resolve(_identity);
|
||||||
|
|
||||||
|
// return deferred.promise;
|
||||||
|
// }else {
|
||||||
|
|
||||||
|
// // otherwise, retrieve the user data from the server, update the user object, and then resolve.
|
||||||
|
// $http.get('/users/me', { ignoreErrors: true })
|
||||||
|
// .success(function(response) {
|
||||||
|
// self.authenticate(response);
|
||||||
|
// $window.user = response;
|
||||||
|
// deferred.resolve(_identity);
|
||||||
|
// })
|
||||||
|
// .error(function() {
|
||||||
|
// _identity = null;
|
||||||
|
// _authenticated = false;
|
||||||
|
// $window.user = null;
|
||||||
|
// $state.path('signin');
|
||||||
|
// deferred.resolve(_identity);
|
||||||
|
// });
|
||||||
|
|
||||||
|
// return deferred.promise;
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// getUser: function(){
|
||||||
|
// this.identity(false).then( function(user){
|
||||||
|
// return user;
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
|
||||||
|
// }
|
||||||
|
// ]);
|
Loading…
Reference in a new issue