Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
scheng123321
GitHub Repository: scheng123321/1v1-lol
Path: blob/master/login.js
446 views
1
var tempErrorCreds;
2
var tempProviderName;
3
4
function retrieveIdToken(successCallback, errorCallback) {
5
if(firebase.auth().currentUser === null){
6
if(errorCallback !== null)
7
errorCallback("User is null");
8
return;
9
}
10
11
firebase.auth().currentUser.getIdToken().then(function (idToken) {
12
var resultObj = {
13
token: idToken,
14
displayName: firebase.auth().currentUser.displayName
15
};
16
17
if (successCallback !== undefined) {
18
19
successCallback(resultObj);
20
}
21
})
22
.catch(function (error) {
23
console.log(error);
24
if (errorCallback !== undefined)
25
errorCallback(error.message);
26
});
27
}
28
29
function anonymousLogin(successCallback, errorCallback) {
30
var resultObj = {
31
token: "",
32
displayName: "guest"
33
};
34
35
if (successCallback !== undefined) {
36
37
successCallback(resultObj);
38
}
39
}
40
41
function firebaseLogin(providerName, successCallback, errorCallback) {
42
if (providerName === "anonymous") {
43
anonymousLogin(successCallback, errorCallback);
44
return;
45
}
46
47
var user = firebase.auth().currentUser;
48
49
if(user != null && !user.isAnonymous){
50
retrieveIdToken(successCallback, errorCallback);
51
return;
52
}
53
54
var provider = getProvider(providerName);
55
firebase.auth().useDeviceLanguage();
56
57
//var task = firebase.auth().currentUser.isAnonymous ? firebase.auth().signInWithPopup(provider) : firebase.auth().linkWithPopup(provider);
58
59
firebase.auth().signInWithPopup(provider).then(function (result) {
60
console.log("Successful sign in");
61
retrieveIdToken(successCallback, errorCallback);
62
})
63
.catch(function (error) {
64
// Handle Errors here.
65
var errorCode = error.code;
66
var errorMessage = error.message;
67
// The email of the user's account used.
68
var email = error.email;
69
// The firebase.auth.AuthCredential type that was used.
70
tempErrorCreds = error.credential;
71
console.log(error);
72
73
if (errorCallback !== undefined)
74
errorCallback(error.message);
75
76
if (errorCode === 'auth/account-exists-with-different-credential') {
77
// User's email already exists.
78
// Get sign-in methods for this email.
79
firebase.auth().fetchSignInMethodsForEmail(email).then(function (methods) {
80
// the first method in the list will be the "recommended" method to use.
81
if (methods.length == 0)
82
return;
83
// Sign in to provider.
84
tempProviderName = methods[0].trim();
85
setModalContent("generalModalContent",
86
"<div id =\"continueWindow\"><span class=\"close\" id=\"closeButton\" onclick=\"hideModal('generalModal')\">&times;</span><p>Please press the button to login: </p><button onclick=\"continueLogin()\">Continue Login</button></div>");
87
showModal("generalModal");
88
});
89
}
90
});
91
}
92
93
function firebaseLogout() {
94
firebase.auth().signOut().catch(function (error) {
95
console.log(error);
96
});
97
}
98
99
function getCurrentUserDisplayName() {
100
var user = firebase.auth().currentUser;
101
var displayName = "";
102
if (user) {
103
displayName = user.displayName;
104
}
105
return displayName;
106
}
107
108
function getProvider(providerName) {
109
if (providerName && providerName.indexOf("facebook") != -1)
110
return new firebase.auth.FacebookAuthProvider()
111
else
112
return new firebase.auth.GoogleAuthProvider()
113
}
114
115
function setModalContent(modalContentId, contentString) {
116
content = document.getElementById(modalContentId);
117
if (content) {
118
content.innerHTML = contentString;
119
}
120
121
}
122
123
function continueLogin() {
124
hideModal("generalModal");
125
var provider = getProvider(tempProviderName);
126
firebase.auth().signInWithPopup(provider).then(
127
function (result) {
128
if (!tempErrorCreds) {
129
return;
130
}
131
// As we have access to the pending credential, we can directly call the link method.
132
result.user.linkAndRetrieveDataWithCredential(tempErrorCreds).then(function (usercred) {
133
//goToApp();
134
});
135
});
136
137
}
138
139
function showModal(modalId) {
140
modal = document.getElementById(modalId);
141
if (modal)
142
modal.style.display = "block";
143
}
144
145
function hideModal(modalId) {
146
modal = document.getElementById(modalId);
147
if (modal)
148
modal.style.display = "none";
149
}
150