tpbproxy/public/js/app/auth.js
2024-01-06 18:09:23 -05:00

87 lines
1.9 KiB
JavaScript

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);