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