mirror of
https://github.com/chinchang/web-maker.git
synced 2025-07-13 18:16:19 +02:00
login flow - first draft
This commit is contained in:
66
src/auth.js
Normal file
66
src/auth.js
Normal file
@ -0,0 +1,66 @@
|
||||
window.logout = function logout() {
|
||||
firebase.auth().signOut();
|
||||
};
|
||||
function login(providerName) {
|
||||
var provider;
|
||||
if (providerName === 'fb') {
|
||||
provider = new firebase.auth.FacebookAuthProvider();
|
||||
} else if (providerName === 'twitter') {
|
||||
provider = new firebase.auth.TwitterAuthProvider();
|
||||
} else if (providerName === 'google') {
|
||||
provider = new firebase.auth.GoogleAuthProvider();
|
||||
provider.addScope('https://www.googleapis.com/auth/userinfo.profile');
|
||||
} else {
|
||||
provider = new firebase.auth.GithubAuthProvider();
|
||||
}
|
||||
|
||||
return firebase
|
||||
.auth()
|
||||
.signInWithPopup(provider)
|
||||
.then(function(result) {
|
||||
return;
|
||||
// Save this user in the store
|
||||
firebase
|
||||
.database()
|
||||
.ref('users/' + result.user.uid)
|
||||
.update({
|
||||
displayName: result.user.displayName,
|
||||
email: result.user.email,
|
||||
photoURL: result.user.providerData[0].photoURL,
|
||||
signedUpOn: Date.now()
|
||||
})
|
||||
.then(function() {
|
||||
// Port items in localstorage to user account
|
||||
if (window.localStorage.prototyp) {
|
||||
var items = JSON.parse(window.localStorage.prototyp);
|
||||
var newItemKey;
|
||||
items.forEach(function(localItem) {
|
||||
itemService.fetchItem(localItem.id).then(function(item) {
|
||||
newItemKey = firebase.database().ref('pens').push().key;
|
||||
item.createdBy = result.user.uid;
|
||||
delete item.uid;
|
||||
firebase.database().ref('pens/' + newItemKey).set(item);
|
||||
firebase
|
||||
.database()
|
||||
.ref('users/' + result.user.uid)
|
||||
.child('items')
|
||||
.child(newItemKey)
|
||||
.set(true);
|
||||
});
|
||||
});
|
||||
delete localStorage.prototyp;
|
||||
}
|
||||
});
|
||||
})
|
||||
.catch(function(error) {
|
||||
// Handle Errors here.
|
||||
var errorCode = error.code;
|
||||
var errorMessage = error.message;
|
||||
// The email of the user's account used.
|
||||
var email = error.email;
|
||||
// The firebase.auth.AuthCredential type that was used.
|
||||
var credential = error.credential;
|
||||
console.log(error);
|
||||
});
|
||||
}
|
||||
window.login = login;
|
Reference in New Issue
Block a user