Revert "implements new signin/up method that allows for longer sessions, and additionally allows email with link signin"

This reverts commit ffaeaffe20.
This commit is contained in:
msramalho
2025-03-17 12:35:42 +00:00
parent 748da4fa48
commit 697fddd4f3
10 changed files with 117 additions and 94 deletions

View File

@@ -1,8 +1,29 @@
import { createStore } from "vuex";
import { gapi } from "@/gapi";
import { signOut } from "firebase/auth";
import {
signOut,
GoogleAuthProvider,
signInWithCredential,
browserLocalPersistence,
setPersistence,
} from "firebase/auth";
import { firebaseAuth } from "@/firebase.js";
function saveToLocalStorage(state) {
localStorage.setItem("user", JSON.stringify(state.user));
localStorage.setItem("access_token", state.access_token);
}
function loadFromLocalStorage() {
const user = JSON.parse(localStorage.getItem("user"));
const access_token = localStorage.getItem("access_token");
return { user, access_token };
}
function clearLocalStorage() {
localStorage.removeItem("user");
localStorage.removeItem("access_token");
}
async function waitForGapiAuth2() {
return new Promise((resolve, _reject) => {
@@ -31,9 +52,11 @@ export default createStore({
mutations: {
setUser(state, user) {
state.user = user;
saveToLocalStorage(state);
},
setUserActiveState(state, active) {
state.user.active = active;
saveToLocalStorage(state);
},
setUserPermissions(state, permissions) {
state.user.permissions = permissions;
@@ -41,6 +64,7 @@ export default createStore({
(key) => key !== "all"
);
state.loadingUserState = false;
saveToLocalStorage(state);
},
setUserUsage(state, usage) {
state.user.usage = usage;
@@ -50,15 +74,49 @@ export default createStore({
},
setLoadingUserState(state, loadingUserState) {
state.loadingUserState = loadingUserState;
saveToLocalStorage(state);
},
setAccessToken(state, access_token) {
state.access_token = access_token;
saveToLocalStorage(state);
},
setErrorMessage(state, errorMessage) {
state.errorMessage = errorMessage;
},
},
actions: {
async signin({ commit, dispatch }) {
commit("setLoadingUserState", true);
async function callback(tokenResponse) {
let access_token = tokenResponse.access_token;
commit("setAccessToken", access_token);
const credential = GoogleAuthProvider.credential(null, access_token);
// Set persistence before signing in
await setPersistence(firebaseAuth, browserLocalPersistence);
// Sign in with the provided credential
const response = await signInWithCredential(firebaseAuth, credential);
commit("setUser", response.user);
dispatch("checkActiveUser");
dispatch("checkUserPermissions");
dispatch("checkUserUsage");
}
commit("setUser", null);
const client = google.accounts.oauth2.initTokenClient({
client_id:
"406209235111-r1mpkvkfaqc2jg5iqbvffl2b0rf4clbo.apps.googleusercontent.com",
scope:
"https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email",
callback,
});
await client.requestAccessToken();
},
async signout({ commit }) {
try {
const authInstance = await waitForGapiAuth2();
@@ -75,6 +133,7 @@ export default createStore({
// clean user from store and local storage
commit("setUser", null);
commit("setSheets", []);
clearLocalStorage();
} catch (error) {
console.error("signOutUser (firebase/auth.js): ", error);
} finally {
@@ -171,7 +230,6 @@ export default createStore({
console.error("getSheets (firebase.js): ", error);
}
},
async createSheet(
{ _state, dispatch, _commit },
{ name, service_account_email }
@@ -337,5 +395,33 @@ export default createStore({
},
modules: {},
plugins: [
(store) => {
store.subscribe((mutation, state) => {
if (mutation.type === "setUser" || mutation.type === "setAccessToken") {
saveToLocalStorage(state);
}
});
const { user, access_token } = loadFromLocalStorage();
if (user && access_token) {
store.commit("setLoadingUserState", true);
store.commit("setUser", user);
store.commit("setAccessToken", access_token);
store.getters.isTokenExpired
.then((expired) => {
if (expired) {
store.dispatch("signout");
} else {
store.dispatch("checkActiveUser");
store.dispatch("checkUserPermissions");
store.dispatch("checkUserUsage");
}
})
.catch((error) => {
console.error("Error checking token expiration:", error);
store.dispatch("signout");
});
}
},
],
});