generated from BloomTech-Labs/template-fe
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #13 from Lambda-School-Labs/firebase-auth
Firebase auth
- Loading branch information
Showing
4 changed files
with
95 additions
and
104 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,6 +14,7 @@ node_modules/ | |
|
||
# misc | ||
.DS_Store | ||
.env | ||
.env.local | ||
.env.development.local | ||
.env.test.local | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,106 +1,98 @@ | ||
import firebase from "firebase/app" | ||
import 'firebase/auth' | ||
import axios from 'axios' | ||
import firebase from 'firebase/app'; | ||
import 'firebase/auth'; | ||
import axios from 'axios'; | ||
|
||
const config = { | ||
apiKey: process.env.REACT_APP_FIREBASE_API_KEY, | ||
authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN, | ||
databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL, | ||
projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID, | ||
storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET, | ||
messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID, | ||
appId: process.env.REACT_APP_FIREBASE_APP_ID, | ||
measurementId: process.env.REACT_APP_FIREBASE_MEASUREMENT_ID | ||
} | ||
apiKey: process.env.REACT_APP_FIREBASE_API_KEY, | ||
authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN, | ||
databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL, | ||
projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID, | ||
storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET, | ||
messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID, | ||
appId: process.env.REACT_APP_FIREBASE_APP_ID, | ||
measurementId: process.env.REACT_APP_FIREBASE_MEASUREMENT_ID | ||
}; | ||
|
||
const backend = process.env.REACT_APP_BACKEND_URL | ||
// const backend = 'http://localhost:5000' | ||
|
||
firebase.initializeApp(config) | ||
//Initialize firebase authorization with specific config | ||
firebase.initializeApp(config); | ||
|
||
export const auth = firebase.auth() | ||
//Create auth shorthand | ||
const auth = firebase.auth(); | ||
|
||
//Google authentication | ||
export const provider = new firebase.auth.GoogleAuthProvider() | ||
provider.setCustomParameters({ prompt: 'select_account' }) | ||
//REGISTER with Google account | ||
export const signUpWithGoogle = () => { | ||
//Use Firebase function to create a popup of specific provider's login | ||
auth.signInWithPopup(provider) | ||
.then(result => { | ||
//If it works, get the idToken from that login for verification use | ||
auth.currentUser.getIdToken(true) | ||
.then(idToken => { | ||
//If it works, send over token to the backend via header | ||
axios.get(`${backend}/auth/firebase/register`, {headers: {"token": idToken}}) | ||
.then(res => { | ||
// console.log(res) | ||
// redirect here? | ||
}) | ||
.catch(err => console.log(err)) | ||
}) | ||
.catch(err => console.log(err)) | ||
}) | ||
.catch(err => console.log(err)) | ||
} | ||
//LOGIN with Google account | ||
export const signInWithGoogle = () => { | ||
auth.signInWithPopup(provider) | ||
.then(result => { | ||
auth.currentUser.getIdToken(true) | ||
.then(idToken => { | ||
const user = result.user | ||
axios.get(`${backend}/auth/firebase/login`, {headers: {"token": idToken}}) | ||
.then(res => { | ||
// console.log(res) | ||
// redirect here? | ||
}) | ||
.catch(err => console.log(err)) | ||
}) | ||
.catch(err => console.log(err)) | ||
}) | ||
.catch(err => console.log(err)) | ||
} | ||
//Providers supported | ||
const googleProvider = new firebase.auth.GoogleAuthProvider().setCustomParameters({ prompt: 'select_account' }); | ||
const facebookProvider = new firebase.auth.FacebookAuthProvider(); | ||
|
||
//Facebook authentication | ||
export const facebookProvider = new firebase.auth.FacebookAuthProvider() | ||
//REGISTER with Facebook account | ||
export const doFacebookSignUp = () => { | ||
auth.signInWithPopup(facebookProvider) | ||
.then(result => { | ||
auth.currentUser.getIdToken(true) | ||
.then(idToken => { | ||
const user = result.user | ||
axios.get(`${backend}/auth/firebase/register`, {headers: {"token": idToken}}) | ||
.then(res => { | ||
// console.log(res) | ||
// redirect here? | ||
}) | ||
.catch(err => console.log(err)) | ||
}) | ||
.catch(err => console.log(err)) | ||
}) | ||
.catch(err => console.log(err)) | ||
} | ||
//LOGIN with Facebook account | ||
export const doFacebookSignIn = () => { | ||
auth.signInWithPopup(facebookProvider) | ||
.then(result => { | ||
auth.currentUser.getIdToken(true) | ||
.then(idToken => { | ||
const user = result.user | ||
axios.get(`${backend}/auth/firebase/login`, {headers: {"token": idToken}}) | ||
.then(res => { | ||
// console.log(res) | ||
// redirect here? | ||
}) | ||
.catch(err => console.log(err)) | ||
}) | ||
.catch(err => console.log(err)) | ||
}) | ||
.catch(err => console.log(err)) | ||
//Register via Firebase through a specific provider | ||
export const signUpThroughFirebase = (providerChosen, history) => { | ||
//This provider will level up to a named one, pending button clicked | ||
let provider; | ||
|
||
//Set up switch statement to allow other types of sign ins down the road | ||
switch(providerChosen) { | ||
case 'google' : | ||
provider = googleProvider; | ||
break; | ||
case 'facebook' : | ||
provider = facebookProvider; | ||
break; | ||
default : | ||
console.log('Provider not supported.'); | ||
break; | ||
}; | ||
|
||
//Use Firebase function to create a popup of specific provider's login | ||
auth.signInWithPopup(provider) | ||
.then(result => { | ||
//If it works, get the idToken from that login for verification use | ||
auth.currentUser.getIdToken(true) | ||
.then(idToken => { | ||
//If it works, send over token to the backend via header | ||
axios.get(`${backend}/auth/firebase/register`, {headers: {"token": idToken}}) | ||
.then(res => { | ||
history.push('/stripe') | ||
}) | ||
.catch(err => console.log(err)); | ||
}) | ||
.catch(err => console.log(err)); | ||
}) | ||
.catch(err => console.log(err)); | ||
} | ||
|
||
//Github authentication | ||
export const githubProvider = new firebase.auth.GithubAuthProvider() | ||
export const doGithubSignIn = () => auth.signInWithPopup(githubProvider) | ||
//Login via Firebase with a specific provider | ||
export const signInThroughFirebase = (providerChosen, history) => { | ||
//This provider will level up to a named one, pending button clicked | ||
let provider; | ||
|
||
//Set up switch statement to allow other types of sign ins down the road | ||
switch(providerChosen) { | ||
case 'google' : | ||
provider = googleProvider; | ||
break; | ||
case 'facebook' : | ||
provider = facebookProvider; | ||
break; | ||
default : | ||
console.log('Provider not supported.'); | ||
break; | ||
}; | ||
|
||
//Use Firebase function to create a popup of specific provider's login | ||
auth.signInWithPopup(provider) | ||
.then(result => { | ||
//If it works, get the idToken from that login for verification use | ||
auth.currentUser.getIdToken(true) | ||
.then(idToken => { | ||
//If it works, send over token to the backend via header | ||
axios.get(`${backend}/auth/firebase/login`, {headers: {"token": idToken}}) | ||
.then(res => { | ||
history.push('/hub') | ||
}) | ||
.catch(err => console.log(err)); | ||
}) | ||
.catch(err => console.log(err)); | ||
}) | ||
.catch(err => console.log(err)); | ||
} |