forked from dashcommunity/blog
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfirebaseHelper.js
98 lines (81 loc) · 1.98 KB
/
firebaseHelper.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import firebase from 'firebase';
let token;
let user;
let provider;
let credential;
let strategy = 'popup';
function gitHubRedirectLogin() {
firebase.auth()
.getRedirectResult()
.then(handleSigninSuccess)
.catch(handleSignInErr);
provider = new firebase.auth.GithubAuthProvider();
provider.addScope('repo');
firebase.auth().signInWithRedirect(provider);
}
function gitHubPopupLogin() {
provider = new firebase.auth.GithubAuthProvider();
provider.addScope('repo');
firebase.auth()
.signInWithPopup(provider)
.then(handleSigninSuccess)
.catch(handleSignInErr);
}
// function createUser(email, password) {
// return firebase.auth().createUserWithEmailAndPassword(
// email,
// password
// )
// .then(result => {
// user = result;
// return user;
// })
// .catch(handleSignInErr);
// }
// function emailLogin(email, password) {
// credential = firebase.auth.EmailAuthProvider.credential(
// email,
// password
// );
// }
function getUser() {
if (user) {
return user;
}
return false;
}
function getToken() {
if (token) {
return token;
}
return false;
}
function handleSigninSuccess(result) {
if (result.credential) {
token = result.credential.accessToken;
credential = result.credential;
}
user = result.user;
return user;
}
function handleSignInErr(err) {
const errorCode = err.code;
const errorMessage = err.message;
const email = err.email;
credential = err.credential;
if (errorCode == 'auth/account-exists-with-different-credentials') {
console.warn('You already signed up with a different ' +
'authentication provider for that email');
}
console.error(err);
}
function changeLoginStrategy(newStrategy) {
strategy = newStrategy;
}
export {
gitHubRedirectLogin,
gitHubPopupLogin,
// emailLogin,
getUser,
getToken,
};