cobuild-angular-stack
Version:
Base stack angular sass jade gulp
134 lines (114 loc) • 3.89 kB
JavaScript
(function () {
'use strict';
angular
.module('uniko.authLoopback', [])
.factory('Auth', AuthFactory)
.factory('AdminAuth', AdminAuth);
AdminAuth.$inject = ['LoopBackAuth', 'AdminAccount'];
function AdminAuth(LoopBackAuth, AdminAccount) {
function login(username, password) {
return AdminAccount.login({username: username, password: password}).$promise;
}
function logout() {
return AdminAccount.logout().$promise;
}
function isAuthenticated() {
return !!LoopBackAuth.accessTokenId;
}
function getAuthData() {
return LoopBackAuth;
}
return {
login: login,
logout: logout,
isAuthenticated: isAuthenticated,
getAuthData: getAuthData
};
}
AuthFactory.$inject = ['LoopBackAuth', 'CoupleAccount', '$localStorage'];
function AuthFactory(LoopBackAuth, CoupleAccount, $localStorage) {
var current;
function login(email, password) {
var promise = CoupleAccount.login({email: email, password: password}).$promise;
promise
.then(function (a) {
Auth.getCurrent();
});
return promise;
}
function onboardingLogin(source) {
return CoupleAccount.onboardingLogin(source)
.$promise
.then(function (data) {
var user = data.user;
var token = data.token;
token.user = user;
Auth.setAuthData(token);
Auth.isTmpAccount(true);
return Auth
.getCurrent()
.$promise
.then(function () {
return data;
});
}).catch(function(err){
console.log('onboardingLogin ERR = ',err)
});
}
function logout() {
return CoupleAccount.logout().$promise;
}
function register(email, password) {
return CoupleAccount
.create({
email: email,
password: password
})
.$promise;
}
function isAuthenticated() {
return !!LoopBackAuth.accessTokenId;
}
function getAuthData() {
return LoopBackAuth;
}
function getCurrent() {
if (!current) {
current = CoupleAccount.getCurrent();
}
return current;
}
function setUser(token, config) {
config = config || {params: {}};
var accessToken = token;
LoopBackAuth.setUser(accessToken.id, accessToken.userId, accessToken.user);
LoopBackAuth.rememberMe = config.params.rememberMe !== false;
LoopBackAuth.save();
}
function isTmpAccount(isTmp) {
if ('undefined' !== typeof isTmp) {
$localStorage.isTmpAccount = isTmp;
}
return $localStorage.isTmpAccount;
}
function clearAccount() {
current = null;
LoopBackAuth.clearUser();
LoopBackAuth.clearStorage();
delete $localStorage.isTmpAccount;
}
var Auth = {
login: login,
onboardingLogin: onboardingLogin,
logout: logout,
register: register,
isAuthenticated: isAuthenticated,
getAuthData: getAuthData,
setAuthData: setUser,
isTmpAccount: isTmpAccount,
clearAccount: clearAccount,
getCurrent: getCurrent
};
return Auth;
}
})();