Explorer
project
assets
index.css
index.html
index.js
Dependencies
firebase@10.1.0
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
/* === Imports === */
import { initializeApp } from "firebase/app"
import { getAuth,
createUserWithEmailAndPassword,
signInWithEmailAndPassword,
signOut,
onAuthStateChanged } 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)
/* === 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() {
/* Challenge:
Import the signInWithPopup function from 'firebase/auth'
Use the code from the documentaion to make this function work.
If the login is successful then you should console log "Signed in with Google"
If something went wrong, then you should log the error message using console.error.
*/
}
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)
}