'use client'; import { useState, useEffect } from 'react'; import { useParams, useRouter } from 'next/navigation'; import NexusAuthApi from '@lib/Nexus_Auth_API'; import { useToast } from '@lib/ToastContext'; export default function SuperUser() { const router = useRouter(); const { access_level } = useParams(); const toast = useToast(); const [userDetails, setUserDetails] = useState({ username: null, userID: null, token: null, accessLevel: null, }); const [users, setUsers] = useState([]); // Fetch user details from local storage on mount useEffect(() => { setUserDetails({ username: localStorage.getItem('me'), userID: localStorage.getItem('u_id'), token: localStorage.getItem('s_tkn'), accessLevel: localStorage.getItem('a_l'), }); }, []); const clearLocalStorage = () => { localStorage.removeItem('me'); localStorage.removeItem('s_tkn'); localStorage.removeItem('u_id'); localStorage.removeItem('a_l'); setUserDetails({ username: null, userID: null, token: null, accessLevel: null, }); }; const handleLogout = () => { const { userID, token } = userDetails; NexusAuthApi.logout(userID, token) .then(() => { clearLocalStorage(); window.location.reload(); }) .catch((error) => { toast.error('Logout failed'); console.error('Logout failed', error); }); }; const getAllUsers = () => { const { userID, token } = userDetails; NexusAuthApi.getAllUsers(userID, token) .then((response) => { if (response.status === 200) { setUsers(response.data); } else if (response.status === 401) { console.info('Insuffient permissions to get all users'); toast.error('Insuffient permissions to get all users'); } }) .catch((error) => { console.error('Get all users failed', error); toast.error('Get all users failed'); }); }; // Redirect if the access level doesn't match useEffect(() => { if (access_level && userDetails.accessLevel) { if (access_level !== userDetails.accessLevel) { router.push(`/su/${userDetails.accessLevel}`); } } }, [access_level, userDetails.accessLevel]); const { username, userID, accessLevel } = userDetails; return (
{username ? ( <>
Username: {username}
User ID: {userID}
Access Level: {accessLevel}
{(accessLevel === 'admin' || accessLevel === 'hush') && (
{users.length > 0 && (
{users.map((user, index) => ( ))}
Username Email Access Level Date Joined
{user.username} {user.email || 'N/A'} {user.access_level} {new Date(user.date_joined).toLocaleDateString()}
)}
)} ) : (
No user details available. Please log in.
)}
); }