app.auth = (function(app) { var user = {} function setToken(token){ localStorage.setItem('APIToken', token); } function getToken(){ return localStorage.getItem('APIToken'); } function isLoggedIn(callback){ if(getToken()){ return app.api.get('user/me', function(error, data){ if(error === 'Unauthorized') logOut(); if(!error) app.auth.user = data; return callback(error, data); }); }else{ callback(null, false); } } function logIn(args, callback){ app.api.post('auth/login', args, function(error, data){ if(data.login){ setToken(data.token); } callback(error, !!data.token); }); } function logOut(callback){ callback = callback || app.util.emptyFuction; localStorage.removeItem('APIToken'); callback(); } function makeUserFromInvite(args, callback){ app.api.post('auth/invite/'+ args.token, args, function(error, data){ if(data.login){ callback(null, data); setToken(data.token); } callback(error, !!data.token); }); } function forceLogin(){ $.holdReady( true ); app.auth.isLoggedIn(function(error, isLoggedIn){ if(error || !isLoggedIn){ app.auth.logOut(function(){}) location.replace(`/login${location.href.replace(location.origin, '')}`); }else{ $.holdReady( false ); } }); } function logInRedirect(){ window.location.href = location.href.replace(location.origin+'/login', '') || '/' } $( document ).ready( function(){ isLoggedIn(function(error, isLoggedIn){ if(!error && isLoggedIn){ $('.tbp_proxy_is_authed').show(); $('.tbp_proxy_not_authed').hide(); }else{ $('.tbp_proxy_is_authed').hide(); $('.tbp_proxy_not_authed').show(); } }); }); return { getToken: getToken, setToken: setToken, isLoggedIn: isLoggedIn, logIn: logIn, logOut: logOut, makeUserFromInvite: makeUserFromInvite, forceLogin, logInRedirect, } })(app);