Created
November 25, 2023 01:29
-
-
Save lucaspmarra/f770393abd4136976ad3aad115ed4752 to your computer and use it in GitHub Desktop.
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
| import { defineStore } from 'pinia'; | |
| import { reactive, toRefs } from 'vue'; | |
| import { supabase } from '@/lib/supabaseClient.js'; | |
| import router from '@/router/index.js'; | |
| export const useAuthStore = defineStore('auth', () => { | |
| const state = reactive({ | |
| session: '', | |
| user: '', | |
| error: '' | |
| }); | |
| supabase.auth.getSession().then(({ data }) => { | |
| state.session = data.session; | |
| console.log('Session data: ', data.session); | |
| }); | |
| supabase.auth.onAuthStateChange((_, _session) => { | |
| state.session = _session; | |
| console.log('Session changed: ', _session); | |
| }); | |
| const isAuthenticated = () => { | |
| return !!state.session; | |
| }; | |
| const signOut = () => { | |
| return new Promise((resolve, reject) => { | |
| supabase.auth | |
| .signOut() | |
| .then(() => { | |
| console.log('Signed out'); | |
| router.replace('/'); | |
| resolve(); | |
| }) | |
| .catch((e) => { | |
| state.error = e.message; | |
| console.error(e); | |
| reject(e); | |
| }); | |
| }); | |
| }; | |
| const signIn = (payload) => { | |
| return new Promise((resolve, reject) => { | |
| supabase.auth | |
| .signInWithPassword({ | |
| email: payload.email, | |
| password: payload.password | |
| }) | |
| .then(({ data, error }) => { | |
| if (error) { | |
| state.error = error.message; | |
| console.log('Login error: ', state.error); | |
| reject(state.error); | |
| } | |
| else { | |
| state.user = data; | |
| resolve(data); | |
| } | |
| }); | |
| }); | |
| }; | |
| const getProfile = () => { | |
| return new Promise((resolve, reject) => { | |
| if (state.session) { | |
| const { user } = state.session; | |
| supabase | |
| .from('profiles') | |
| .select('*') | |
| .eq('user_id', user.id) | |
| .single() | |
| .then(({ data, error }) => { | |
| if (error) { | |
| state.error = error.message; | |
| console.log('Profile error: ', error); | |
| reject(error); | |
| } | |
| else { | |
| state.user = data; | |
| console.log('User data: ', data); | |
| resolve(data); | |
| } | |
| }); | |
| } | |
| else { | |
| console.log('Session is not available'); | |
| reject('Session is not available'); | |
| } | |
| }); | |
| }; | |
| const updateProfile = (payload) => { | |
| return new Promise((resolve, reject) => { | |
| supabase | |
| .from('profiles') | |
| .upsert(payload) | |
| .then(({ data, error }) => { | |
| if (error) { | |
| state.error = error.message; | |
| console.log('Profile error: ', state.error); | |
| reject(state.error); | |
| } | |
| else { | |
| state.user = data; | |
| console.log('User data: ', data); | |
| resolve(data); | |
| } | |
| }); | |
| }); | |
| }; | |
| const signUp = (payload) => { | |
| return new Promise((resolve, reject) => { | |
| supabase.auth | |
| .signUp({ | |
| email: payload.email, | |
| password: payload.password, | |
| options: { | |
| data: { | |
| first_name: payload.first_name, | |
| last_name: payload.last_name, | |
| cpf: payload.cpf, | |
| birthday: payload.birthday, | |
| street: payload.street, | |
| city: payload.city, | |
| state: payload.state, | |
| postal_code: payload.postal_code, | |
| country: payload.country | |
| } | |
| } | |
| }) | |
| .then(({ data, error }) => { | |
| if (error) { | |
| state.error = error.message; | |
| console.log('Register error: ', state.error); | |
| reject(state.error); | |
| } | |
| else { | |
| state.user = data.user; | |
| resolve(data.user); | |
| } | |
| }); | |
| }); | |
| }; | |
| const resetPassword = (payload) => { | |
| return new Promise((resolve, reject) => { | |
| supabase.auth | |
| .resetPasswordForEmail(payload.email, { | |
| redirectTo: | |
| 'https://adopt-a-paw.onrender.com/forgot-password/update-password' | |
| // redirectTo: 'http://localhost:5173/forgot-password/update-password', | |
| }) | |
| .then(({ error }) => { | |
| if (error) { | |
| console.log('error:', error.message); | |
| state.error = error.message || 'Ocorreu um erro'; | |
| reject(state.error); | |
| } | |
| else { | |
| resolve(); | |
| } | |
| }); | |
| }); | |
| }; | |
| const updatePassword = (payload) => { | |
| return new Promise((resolve, reject) => { | |
| supabase.auth.updateUser(payload).then(({ error }) => { | |
| if (error) { | |
| state.error = error.message || 'Ocorreu um erro'; | |
| reject(state.error); | |
| } | |
| else { | |
| resolve(); | |
| } | |
| }); | |
| }); | |
| }; | |
| return { | |
| ...toRefs(state), | |
| isAuthenticated, | |
| signIn, | |
| signOut, | |
| signUp, | |
| getProfile, | |
| resetPassword, | |
| updatePassword | |
| }; | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment