Created
August 2, 2021 00:29
-
-
Save wiverson/615a31b0ac9c85ee698ba164f0b30eb1 to your computer and use it in GitHub Desktop.
Tweaking Supabase auth to set cookies for server-side languages.
This file contains hidden or 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
const SUPABASE_URL = 'https://<project>.supabase.co'; | |
const SUPABASE_KEY = 'fancy long key'; | |
var supabase = supabase.createClient(SUPABASE_URL, SUPABASE_KEY); | |
supabase.auth.onAuthStateChange((event, session) => { | |
console.log(event, session); | |
setToken(session); | |
}) | |
window.userToken = null; | |
document.addEventListener('DOMContentLoaded', function (event) { | |
const signUpForm = document.querySelector('#sign-up'); | |
signUpForm.onsubmit = signUpSubmitted.bind(signUpForm) | |
const logInForm = document.querySelector('#log-in'); | |
logInForm.onsubmit = logInSubmitted.bind(logInForm) | |
const userDetailsButton = document.querySelector('#user-button'); | |
userDetailsButton.onclick = fetchUserDetails.bind(userDetailsButton) | |
const logoutButton = document.querySelector('#logout-button'); | |
logoutButton.onclick = logoutSubmitted.bind(logoutButton) | |
const gitHubButton = document.querySelector('#github-button'); | |
gitHubButton.onclick = githubSubmitted.bind(gitHubButton) | |
}) | |
const githubSubmitted = (event) => { | |
event.preventDefault() | |
supabase.auth.signIn({provider: 'github'}) | |
.then((response) => { | |
if (response.error) | |
alert(response.error.message) | |
}) | |
.catch((err) => { | |
if (err.response) | |
console.log(err.response.text) | |
}) | |
} | |
const signUpSubmitted = (event) => { | |
event.preventDefault() | |
const email = event.target[0].value | |
const password = event.target[1].value | |
supabase.auth.signUp({email, password}) | |
.then((response) => { | |
if (response.error) alert(response.error.message) | |
}) | |
.catch((err) => { | |
alert(err.response.text) | |
}) | |
} | |
const logInSubmitted = (event) => { | |
event.preventDefault() | |
const email = event.target[0].value | |
const password = event.target[1].value | |
supabase.auth.signIn({email, password}) | |
.then((response) => { | |
if (response.error) | |
alert(response.error.message) | |
}) | |
.catch((err) => { | |
alert(err.response.text) | |
}) | |
} | |
const fetchUserDetails = () => { | |
//alert(JSON.stringify(supabase.auth.user())); | |
//alert(JSON.stringify(supabase.auth.session())); | |
document.querySelector('#access-token').value = supabase.auth.session().access_token | |
document.querySelector('#refresh-token').value = supabase.auth.session().refresh_token | |
} | |
const logoutSubmitted = (event) => { | |
event.preventDefault() | |
supabase.auth.signOut(); | |
} | |
function setToken(response) { | |
if (!response || !response.user) { | |
console.log("response is null") | |
document.cookie = "user-id=null;max-age=0"; | |
document.cookie = "access-token=null;max-age=0"; | |
document.cookie = "refresh-token=null;max-age=0"; | |
return; | |
} | |
if (response.user.confirmation_sent_at && !response.data.access_token) { | |
alert('Confirmation Email Sent') | |
} else { | |
console.log("access " + response.access_token); | |
console.log("refresh " + response.refresh_token); | |
document.cookie = "access-token=" + response.access_token + ";max-age=3600"; | |
document.cookie = "refresh-token=" + response.refresh_token + ";max-age=3600"; | |
//alert('Logged in as ' + response.user.email) | |
if (supabase.auth.user()) { | |
document.cookie = "user-id=" + supabase.auth.user().id + ";max-age=3600"; | |
} else { | |
document.cookie = "user-id=null;max-age=0"; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment