Path: blob/main/misc/smashkarts/scripts/auth-v3.js
36008 views
'use strict';12var unityFirebaseGameOjbectName = 'JavascriptMessageReceiver';34function onAuthStateChanged(user) {5if(!user)6{7signInAnonymously();8}9else10{11sendAuthDataToUnity();12}13}1415function signInAnonymously()16{17firebase.auth().signInAnonymously().catch(function(error) {18var errorCode = error.code;19console.log("error logging in " + errorCode);20console.error(error);21});22}2324function signInWithEmail(email, password)25{26firebase.auth().signInWithEmailAndPassword(email, password)27.then((userCredential) => {28console.log("signInWithEmailAndPassword Success");29})30.catch(function(error)31{32console.log("error logging in " + error.code);33console.error(error);34window.unityGame.SendMessage(unityFirebaseGameOjbectName, "firebaseSignInWithEmailFailed", error.message);35});36}3738function linkUserWithEmail(email, password)39{40if(firebase.auth().currentUser != null && firebase.auth().currentUser.isAnonymous)41{42var credential = firebase.auth.EmailAuthProvider.credential(email, password);43firebase.auth().currentUser.linkWithCredential(credential).then(function(user) {44console.log("Anonymous account successfully upgraded", user);45sendAuthDataToUnity();46}, function(error) {47console.log("Error upgrading anonymous account", error);48console.error(error);49window.unityGame.SendMessage(unityFirebaseGameOjbectName, "firebaseLinkUserWithEmailFailed", error.message);50});51}52}5354function checkForRedirect()55{56firebase.auth().getRedirectResult().then(function(result)57{58console.log("linkOrSignInWithGoogle:success");59sendAuthDataToUnity();60}, function(error)61{62if(error.code == "auth/credential-already-in-use")63{64console.log("linkOrSignInWithGoogle:fail auth/credential-already-in-use try signInWithCredential");65firebase.auth().signInWithCredential(error.credential).catch(function(error)66{67console.log("signInWithCredential:: Error logging in " + error.code);68console.error(error);69window.unityGame.SendMessage(unityFirebaseGameOjbectName, "firebaseSignInWithEmailFailed", error.message);70});71}72else73{74console.log("linkOrSignInWithGoogle:: Error logging in " + error.code);75console.error(error);76window.unityGame.SendMessage(unityFirebaseGameOjbectName, "firebaseLinkUserWithEmailFailed", error.message);77}78});79}8081function linkOrSignInWithGoogle()82{83var provider = new firebase.auth.GoogleAuthProvider();8485if(firebase.auth().currentUser != null && firebase.auth().currentUser.isAnonymous)86{87var isSafariBrowser = (navigator.userAgent.indexOf('Safari') > -1 && navigator.userAgent.indexOf('Chrome') <= -1);88if(isMobile() || isSafariBrowser)89{90firebase.auth().currentUser.linkWithRedirect(provider);91}92else93{94firebase.auth().currentUser.linkWithPopup(provider).then((result) =>95{96console.log("linkOrSignInWithGoogle:: Success");97sendAuthDataToUnity();98}).catch((error) =>99{100if(error.code == "auth/credential-already-in-use")101{102firebase.auth().signInWithCredential(error.credential).catch(function(error)103{104console.log("signInWithCredential:: Error logging in " + error.code);105console.error(error);106window.unityGame.SendMessage(unityFirebaseGameOjbectName, "firebaseSignInWithEmailFailed", error.message);107});108}109else110{111console.log("linkOrSignInWithGoogle:: Error logging in " + error.code);112console.error(error);113window.unityGame.SendMessage(unityFirebaseGameOjbectName, "firebaseLinkUserWithEmailFailed", error.message);114}115});116}117}118}119120function signOut()121{122firebase.auth().signOut();123}124125function sendAuthDataToUnity()126{127if(window.unityGame != null && firebase.auth().currentUser != null)128{129var firebaseUid = firebase.auth().currentUser.uid;130var isAnon = firebase.auth().currentUser.isAnonymous;131var data = {authToken:"",uid:firebaseUid,isAnonymous:isAnon};132var dataJson = JSON.stringify(data);133window.unityGame.SendMessage(unityFirebaseGameOjbectName, 'SetAuthToken', dataJson);134}135}136137function sendPasswordResetEmail(emailAddress)138{139firebase.auth().sendPasswordResetEmail(emailAddress).then(function() {140console.log("sendPasswordResetEmail:: Success");141window.unityGame.SendMessage(unityFirebaseGameOjbectName, "SendPasswordResetEmailSuccess");142}).catch(function(error) {143console.log("sendPasswordResetEmail:: Failed ");144window.unityGame.SendMessage(unityFirebaseGameOjbectName, "SendPasswordResetEmailFailed", error.message);145console.error(error);146});147}148149function getValueTT(nodeKey)150{151if(firebase.auth().currentUser != null)152{153const dbRef = firebase.database().ref();154dbRef.child(nodeKey).once('value').then((snapshot) => {155if (snapshot.exists())156{157var valJsonStr = JSON.stringify(snapshot.val());158SendDataToUnity("OnGetValueSuccess", nodeKey, valJsonStr);159}160else161{162window.unityGame.SendMessage(unityFirebaseGameOjbectName, "OnGetValueEmptySuccess", nodeKey);163}164}).catch((error) =>165{166window.unityGame.SendMessage(unityFirebaseGameOjbectName, "OnGetValueError", nodeKey, error.message);167console.error(error);168});169}170}171172function SendDataToUnity(functionName, nk, ds)173{174var obj =175{176nodeKey: nk,177dataStr: ds178}179180window.unityGame.SendMessage(unityFirebaseGameOjbectName, functionName, JSON.stringify(obj));181}182183function setValueTT(nodeKey, jsonData)184{185if(firebase.auth().currentUser != null)186{187const dbRef = firebase.database().ref();188var jsonObj = JSON.parse(jsonData);189dbRef.child(nodeKey).set(jsonObj, (error) => {190if (error) {191console.log("auth.js::setValue - Error " + nodeKey);192SendDataToUnity("OnSetValueError", nodeKey, error.message);193} else {194window.unityGame.SendMessage(unityFirebaseGameOjbectName, "OnSetValueSuccess", nodeKey);195}196});197}198}199200function removeValueTT(nodeKey)201{202if(firebase.auth().currentUser != null)203{204const dbRef = firebase.database().ref();205dbRef.child(nodeKey).remove()206.then(function(){207window.unityGame.SendMessage(unityFirebaseGameOjbectName, "OnRemoveValueSuccess", nodeKey);208})209.catch(function(error){210console.log("auth.js::removeValueTT error");211SendDataToUnity("OnRemoveValueError", nodeKey, error.message);212});213}214}215216function updateValueTT(nodeKey, jsonData)217{218if(firebase.auth().currentUser != null)219{220const dbRef = firebase.database().ref();221var jsonObj = JSON.parse(jsonData);222dbRef.child(nodeKey).update(jsonObj, (error) => {223if (error) {224console.log("auth.js::updateValue Error " + nodeKey);225SendDataToUnity( "OnUpdateValueError", nodeKey, error.message);226} else {227window.unityGame.SendMessage(unityFirebaseGameOjbectName, "OnUpdateValueSuccess", nodeKey);228}229});230}231}232233function getCurrentUserId()234{235if(firebase.auth().currentUser != null)236{237return firebase.auth().currentUser.uid;238}239return "";240}241242function getCurrentUserIsAnon()243{244if(firebase.auth().currentUser != null)245{246return firebase.auth().currentUser.isAnonymous;247}248return true;249}250251window.addEventListener('load', function() {252console.log('Init Auth');253if (typeof firebase !== 'undefined' && firebase.auth() != null)254{255firebase.auth().onAuthStateChanged(onAuthStateChanged);256checkForRedirect();257}258}, false);259260261262