refactor(old app): login migration to new app
This commit is contained in:
@@ -1,43 +1,52 @@
|
||||
import {User} from "@/types/users";
|
||||
import axios from "axios";
|
||||
import {create} from "zustand";
|
||||
import { create } from "zustand";
|
||||
import { User } from "@/types/users";
|
||||
|
||||
export type SessionState = {
|
||||
user: User | null;
|
||||
token: string | null;
|
||||
setSession: (user: User | null, token: string | null) => void;
|
||||
clearSession: () => void;
|
||||
user: User | null;
|
||||
token: string | null;
|
||||
setSession: (user: User | null, token: string | null) => void;
|
||||
clearSession: () => void;
|
||||
};
|
||||
|
||||
export const useSessionStore = create<SessionState>((set) => {
|
||||
// Initialize token from localStorage, but user remains in memory only
|
||||
const storedToken = localStorage.getItem("auth_token");
|
||||
// Initialize token from localStorage, but user remains in memory only
|
||||
const storedToken = localStorage.getItem("auth_token");
|
||||
|
||||
return {
|
||||
user: null, // User is NOT stored in localStorage
|
||||
token: storedToken || null,
|
||||
return {
|
||||
user: null, // User is NOT stored in localStorage
|
||||
token: storedToken || null,
|
||||
|
||||
setSession: async (user: any, token) => {
|
||||
if (token) {
|
||||
localStorage.setItem("auth_token", token);
|
||||
const response = await axios.get("/api/auth/getuseraccess", {
|
||||
headers: {Authorization: `Bearer ${token}`},
|
||||
});
|
||||
const data = response.data; //await response.json();
|
||||
user = {...user, roles: data.data};
|
||||
} else {
|
||||
localStorage.removeItem("auth_token");
|
||||
}
|
||||
setSession: async (user: any, token) => {
|
||||
if (token) {
|
||||
localStorage.setItem("auth_token", token);
|
||||
const response = await axios.get("/api/auth/session", {
|
||||
withCredentials: true,
|
||||
});
|
||||
const userRoles = await axios.get("/api/auth/getuseraccess", {
|
||||
withCredentials: true,
|
||||
});
|
||||
const data = response.data; //await response.json();
|
||||
|
||||
//console.log("Setting session:", {user, token});
|
||||
set({user, token});
|
||||
},
|
||||
const rawUser = data.data.user;
|
||||
// user.map((u: any) => ({
|
||||
// ...u,
|
||||
// roles: userRoles.data.data,
|
||||
// }));
|
||||
user = { ...rawUser, roles: userRoles.data.data };
|
||||
} else {
|
||||
localStorage.removeItem("auth_token");
|
||||
}
|
||||
|
||||
clearSession: () => {
|
||||
localStorage.removeItem("auth_token");
|
||||
set({user: null, token: null});
|
||||
},
|
||||
};
|
||||
//console.log("Setting session:", {user, token});
|
||||
set({ user, token });
|
||||
},
|
||||
|
||||
clearSession: () => {
|
||||
localStorage.removeItem("auth_token");
|
||||
set({ user: null, token: null });
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
export type SessionType = ReturnType<typeof useSessionStore>;
|
||||
|
||||
15
lstV2/frontend/src/lib/store/useAuthStore.ts
Normal file
15
lstV2/frontend/src/lib/store/useAuthStore.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { create } from "zustand";
|
||||
|
||||
interface SettingState {
|
||||
username: string;
|
||||
password: string;
|
||||
clearUser: () => void;
|
||||
setUserInfo: (username: string, password: string) => void;
|
||||
}
|
||||
|
||||
export const useAuthStore = create<SettingState>()((set) => ({
|
||||
username: "",
|
||||
password: "",
|
||||
setUserInfo: (username, password) => set({ username, password }),
|
||||
clearUser: () => set({ username: "", password: "" }),
|
||||
}));
|
||||
@@ -1,38 +1,41 @@
|
||||
import axios from "axios";
|
||||
import { create } from "zustand";
|
||||
import { Modules } from "@/types/modules";
|
||||
import axios from "axios";
|
||||
|
||||
interface SettingState {
|
||||
userRoles: Modules[];
|
||||
userRoles: Modules[];
|
||||
|
||||
fetchUserRoles: () => Promise<void>;
|
||||
setUserRoles: (userRoles: Modules[]) => void;
|
||||
fetchUserRoles: () => Promise<void>;
|
||||
setUserRoles: (userRoles: Modules[]) => void;
|
||||
}
|
||||
interface FetchModulesResponse {
|
||||
data: Modules[];
|
||||
data: Modules[];
|
||||
}
|
||||
|
||||
export const useGetUserRoles = create<SettingState>()((set) => ({
|
||||
userRoles: [],
|
||||
setUserRoles: (userRoles) => set({ userRoles }),
|
||||
fetchUserRoles: async () => {
|
||||
try {
|
||||
//const response = await axios.get<{data: Setting[]}>(`${process.env.NEXT_PUBLIC_URL}/api/settings/client`);
|
||||
const token = localStorage.getItem("auth_token");
|
||||
if (token) {
|
||||
const response = await axios.get("/api/auth/getuseraccess", {
|
||||
headers: { Authorization: `Bearer ${token}` },
|
||||
});
|
||||
const data: FetchModulesResponse = response.data; //await response.json();
|
||||
userRoles: [],
|
||||
setUserRoles: (userRoles) => set({ userRoles }),
|
||||
fetchUserRoles: async () => {
|
||||
try {
|
||||
//const response = await axios.get<{data: Setting[]}>(`${process.env.NEXT_PUBLIC_URL}/api/settings/client`);
|
||||
const token = localStorage.getItem("auth_token");
|
||||
if (token) {
|
||||
const response = await axios.get("/api/auth/getuseraccess", {
|
||||
withCredentials: true,
|
||||
});
|
||||
const data: FetchModulesResponse = response?.data; //await response.json();
|
||||
|
||||
//console.log(data);
|
||||
set({ userRoles: data.data });
|
||||
} else {
|
||||
//console.log(data);
|
||||
set({ userRoles: [] });
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Failed to fetch settings:", error);
|
||||
}
|
||||
},
|
||||
if (response.status === 401) {
|
||||
set({ userRoles: [] });
|
||||
}
|
||||
set({ userRoles: data?.data });
|
||||
} else {
|
||||
//console.log(data);
|
||||
set({ userRoles: [] });
|
||||
}
|
||||
} catch (error) {
|
||||
set({ userRoles: [] });
|
||||
console.error("Failed to fetch settings:", error);
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user