Skip to content

Instantly share code, notes, and snippets.

@tarzan
Created November 7, 2013 16:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tarzan/7357170 to your computer and use it in GitHub Desktop.
Save tarzan/7357170 to your computer and use it in GitHub Desktop.
Auth service
'use strict';
angular.module('360FeedbackApp')
.factory('Auth', function($cookieStore, Restangular) {
var accessLevels = routingConfig.accessLevels;
var userRoles = routingConfig.userRoles;
var endPoint = Restangular.all('users');
var currentUser = $cookieStore.get('user') || {
firstName: '',
lastName: '',
email: '',
auth_token: '',
user_role: ''
};
console.log('AUTH!');
function removeUser() {
currentUser = undefined;
$cookieStore.remove('user');
};
function changeUser(user) {
_.extend(currentUser, user);
$cookieStore.put('user', user);
};
return {
authorize: function(accessLevel, role) {
if (role === undefined) {
role = currentUser.user_role;
}
return accessLevel.bitMask & role.bitMask;
},
isLoggedIn: function(user) {
if (user === undefined) {
user = currentUser;
}
return user.role.title == userRoles.user.title || user.role.title == userRoles.admin.title;
},
register: function(user, success, error) {
$http.post('/register', user).success(function(res) {
changeUser(res);
success();
}).error(error);
},
login: function(user, success, error) {
endPoint.all('sign_in').post(user)
.then(function(response) {
var validatedUser = {
email: user.user.email,
auth_token: response.auth_token,
user_role: response.user_role
};
changeUser(validatedUser);
success(validatedUser);
}, error);
},
logout: function(success, error) {
endPoint.customDELETE('sign_out')
.then(function(response) {
removeUser();
success();
}, error);
},
accessLevels: accessLevels,
userRoles: userRoles,
user: function() {
return currentUser;
}
};
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment