scrimba
Learn Firebase
Authentication
Show user profile picture
Go Pro!Bootcamp

Bootcamp

Study group

Collaborate with peers in your dedicated #study-group channel.

Code reviews

Submit projects for review using the /review command in your #code-reviews channel

Show user profile picture
AboutCommentsNotes
Show user profile picture
Expand for more info
index.js
run
preview
console
/* === Imports === */
import { initializeApp } from "firebase/app"
import { getAuth,
createUserWithEmailAndPassword,
signInWithEmailAndPassword,
signOut,
onAuthStateChanged,
GoogleAuthProvider,
signInWithPopup } from "firebase/auth"

/* === Firebase Setup === */
/* IMPORTANT: Replace this with your own firebaseConfig when doing challenges */
const firebaseConfig = {
apiKey: "AIzaSyBM1JtWaj4B_RyDqfnl9yqULGf3U0L33Sk",
authDomain: "moody-8f7be.firebaseapp.com",
projectId: "moody-8f7be",
storageBucket: "moody-8f7be.appspot.com"
}

const app = initializeApp(firebaseConfig)
const auth = getAuth(app)
const provider = new GoogleAuthProvider()

/* === UI === */

/* == UI - Elements == */

const viewLoggedOut = document.getElementById("logged-out-view")
const viewLoggedIn = document.getElementById("logged-in-view")

const signInWithGoogleButtonEl = document.getElementById("sign-in-with-google-btn")

const emailInputEl = document.getElementById("email-input")
const passwordInputEl = document.getElementById("password-input")

const signInButtonEl = document.getElementById("sign-in-btn")
const createAccountButtonEl = document.getElementById("create-account-btn")

const signOutButtonEl = document.getElementById("sign-out-btn")

/* == UI - Event Listeners == */

signInWithGoogleButtonEl.addEventListener("click", authSignInWithGoogle)

signInButtonEl.addEventListener("click", authSignInWithEmail)
createAccountButtonEl.addEventListener("click", authCreateAccountWithEmail)

signOutButtonEl.addEventListener("click", authSignOut)

/* === Main Code === */

onAuthStateChanged(auth, (user) => {
if (user) {
showLoggedInView()
} else {
showLoggedOutView()
}
})

/* === Functions === */

/* = Functions - Firebase - Authentication = */

function authSignInWithGoogle() {
signInWithPopup(auth, provider)
.then((result) => {
console.log("Signed in with Google")
}).catch((error) => {
console.error(error.message)
})
}

function authSignInWithEmail() {
const email = emailInputEl.value
const password = passwordInputEl.value

signInWithEmailAndPassword(auth, email, password)
.then((userCredential) => {
clearAuthFields()
})
.catch((error) => {
console.error(error.message)
})
}

function authCreateAccountWithEmail() {
const email = emailInputEl.value
const password = passwordInputEl.value

createUserWithEmailAndPassword(auth, email, password)
.then((userCredential) => {
clearAuthFields()
})
.catch((error) => {
console.error(error.message)
})
}

function authSignOut() {
signOut(auth)
.then(() => {
}).catch((error) => {
console.error(error.message)
})
}

/* == Functions - UI Functions == */

function showLoggedOutView() {
hideView(viewLoggedIn)
showView(viewLoggedOut)
}

function showLoggedInView() {
hideView(viewLoggedOut)
showView(viewLoggedIn)
}

function showView(view) {
view.style.display = "flex"
}

function hideView(view) {
view.style.display = "none"
}

function clearInputField(field) {
field.value = ""
}

function clearAuthFields() {
clearInputField(emailInputEl)
clearInputField(passwordInputEl)
}
Console
/index.html
-4:24