mirror of
https://github.com/9technologygroup/patchmon.net.git
synced 2025-11-06 06:53:24 +00:00
fix(frontend): eliminate duplicate API calls during log in/out
This commit is contained in:
@@ -95,14 +95,6 @@ export const AuthProvider = ({ children }) => {
|
|||||||
}
|
}
|
||||||
}, [fetchPermissions]);
|
}, [fetchPermissions]);
|
||||||
|
|
||||||
// Refresh permissions when user logs in (no automatic refresh)
|
|
||||||
useEffect(() => {
|
|
||||||
if (token && user) {
|
|
||||||
// Only refresh permissions once when user logs in
|
|
||||||
refreshPermissions();
|
|
||||||
}
|
|
||||||
}, [token, user, refreshPermissions]);
|
|
||||||
|
|
||||||
const login = async (username, password) => {
|
const login = async (username, password) => {
|
||||||
try {
|
try {
|
||||||
const response = await fetch("/api/v1/auth/login", {
|
const response = await fetch("/api/v1/auth/login", {
|
||||||
@@ -116,6 +108,12 @@ export const AuthProvider = ({ children }) => {
|
|||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
|
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
|
// Check if TFA is required
|
||||||
|
if (data.requiresTfa) {
|
||||||
|
return { success: true, requiresTfa: true };
|
||||||
|
}
|
||||||
|
|
||||||
|
// Regular successful login
|
||||||
setToken(data.token);
|
setToken(data.token);
|
||||||
setUser(data.user);
|
setUser(data.user);
|
||||||
localStorage.setItem("token", data.token);
|
localStorage.setItem("token", data.token);
|
||||||
|
|||||||
@@ -67,24 +67,18 @@ const Login = () => {
|
|||||||
setError("");
|
setError("");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await authAPI.login(
|
// Use the AuthContext login function which handles everything
|
||||||
formData.username,
|
const result = await login(formData.username, formData.password);
|
||||||
formData.password,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (response.data.requiresTfa) {
|
if (result.requiresTfa) {
|
||||||
setRequiresTfa(true);
|
setRequiresTfa(true);
|
||||||
setTfaUsername(formData.username);
|
setTfaUsername(formData.username);
|
||||||
setError("");
|
setError("");
|
||||||
} else {
|
} else if (result.success) {
|
||||||
// Regular login successful
|
|
||||||
const result = await login(formData.username, formData.password);
|
|
||||||
if (result.success) {
|
|
||||||
navigate("/");
|
navigate("/");
|
||||||
} else {
|
} else {
|
||||||
setError(result.error || "Login failed");
|
setError(result.error || "Login failed");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
setError(err.response?.data?.error || "Login failed");
|
setError(err.response?.data?.error || "Login failed");
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
Reference in New Issue
Block a user