ui - get, set, delete allowed ip addresses

This commit is contained in:
Ishaan Jaff 2024-07-09 15:43:44 -07:00
parent 22df67edb7
commit f3dddd234d
2 changed files with 141 additions and 18 deletions

View file

@ -50,6 +50,9 @@ import {
setCallbacksCall, setCallbacksCall,
invitationCreateCall, invitationCreateCall,
getPossibleUserRoles, getPossibleUserRoles,
addAllowedIP,
getAllowedIPs,
deleteAllowedIP,
} from "./networking"; } from "./networking";
const AdminPanel: React.FC<AdminPanelProps> = ({ const AdminPanel: React.FC<AdminPanelProps> = ({
@ -98,29 +101,60 @@ const AdminPanel: React.FC<AdminPanelProps> = ({
} }
nonSssoUrl += "/fallback/login"; nonSssoUrl += "/fallback/login";
const handleShowAllowedIPs = () => { const handleShowAllowedIPs = async () => {
// In a real application, you would fetch the allowed IPs from your backend here try {
setAllowedIPs(['192.168.1.1', '10.0.0.1', '172.16.0.1']); if (accessToken) {
const data = await getAllowedIPs(accessToken);
setAllowedIPs(data.length > 0 ? data : ["All IP Addresses"]);
} else {
setAllowedIPs(["All IP Addresses"]);
}
} catch (error) {
console.error("Error fetching allowed IPs:", error);
message.error("Failed to fetch allowed IPs");
setAllowedIPs(["All IP Addresses"]);
} finally {
setIsAllowedIPModalVisible(true); setIsAllowedIPModalVisible(true);
}
}; };
const handleAddIP = (values: { ip: string }) => { const handleAddIP = async (values: { ip: string }) => {
setAllowedIPs([...allowedIPs, values.ip]); try {
setIsAddIPModalVisible(false); if (accessToken) {
await addAllowedIP(accessToken, values.ip);
// Fetch the updated list of IPs
const updatedIPs = await getAllowedIPs(accessToken);
setAllowedIPs(updatedIPs);
message.success('IP address added successfully'); message.success('IP address added successfully');
}
} catch (error) {
console.error("Error adding IP:", error);
message.error('Failed to add IP address');
} finally {
setIsAddIPModalVisible(false);
}
}; };
const handleDeleteIP = (ip: string) => { const handleDeleteIP = async (ip: string) => {
setIPToDelete(ip); setIPToDelete(ip);
setIsDeleteIPModalVisible(true); setIsDeleteIPModalVisible(true);
}; };
const confirmDeleteIP = () => { const confirmDeleteIP = async () => {
if (ipToDelete) { if (ipToDelete && accessToken) {
setAllowedIPs(allowedIPs.filter(ip => ip !== ipToDelete)); try {
await deleteAllowedIP(accessToken, ipToDelete);
// Fetch the updated list of IPs
const updatedIPs = await getAllowedIPs(accessToken);
setAllowedIPs(updatedIPs.length > 0 ? updatedIPs : ["All IP Addresses"]);
message.success('IP address deleted successfully');
} catch (error) {
console.error("Error deleting IP:", error);
message.error('Failed to delete IP address');
} finally {
setIsDeleteIPModalVisible(false); setIsDeleteIPModalVisible(false);
setIPToDelete(null); setIPToDelete(null);
message.success('IP address deleted successfully'); }
} }
}; };

View file

@ -788,6 +788,95 @@ export const modelHubCall = async (accessToken: String) => {
} }
}; };
// Function to get allowed IPs
export const getAllowedIPs = async (accessToken: String) => {
try {
let url = proxyBaseUrl
? `${proxyBaseUrl}/get/allowed_ips`
: `/get/allowed_ips`;
const response = await fetch(url, {
method: "GET",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
});
if (!response.ok) {
const errorData = await response.text();
throw new Error(`Network response was not ok: ${errorData}`);
}
const data = await response.json();
console.log("getAllowedIPs:", data);
return data.data; // Assuming the API returns { data: [...] }
} catch (error) {
console.error("Failed to get allowed IPs:", error);
throw error;
}
};
// Function to add an allowed IP
export const addAllowedIP = async (accessToken: String, ip: String) => {
try {
let url = proxyBaseUrl
? `${proxyBaseUrl}/add/allowed_ip`
: `/add/allowed_ip`;
const response = await fetch(url, {
method: "POST",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ ip: ip }),
});
if (!response.ok) {
const errorData = await response.text();
throw new Error(`Network response was not ok: ${errorData}`);
}
const data = await response.json();
console.log("addAllowedIP:", data);
return data;
} catch (error) {
console.error("Failed to add allowed IP:", error);
throw error;
}
};
// Function to delete an allowed IP
export const deleteAllowedIP = async (accessToken: String, ip: String) => {
try {
let url = proxyBaseUrl
? `${proxyBaseUrl}/delete/allowed_ip`
: `/delete/allowed_ip`;
const response = await fetch(url, {
method: "POST",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ ip: ip }),
});
if (!response.ok) {
const errorData = await response.text();
throw new Error(`Network response was not ok: ${errorData}`);
}
const data = await response.json();
console.log("deleteAllowedIP:", data);
return data;
} catch (error) {
console.error("Failed to delete allowed IP:", error);
throw error;
}
};
export const modelMetricsCall = async ( export const modelMetricsCall = async (
accessToken: String, accessToken: String,
userID: String, userID: String,