add removeUsers

This commit is contained in:
Ryan
2025-02-22 11:48:19 -05:00
committed by GitHub
parent a64aa40378
commit 0148f467b6

View File

@@ -11,8 +11,7 @@
<script src="displayFileList.js"></script> <script src="displayFileList.js"></script>
<style> <style>
.container { margin-top: 10px; } .container { margin-top: 10px; }
#fileListContainer, #uploadForm, #addUserModal { display: none; } #fileListContainer, #uploadForm, #addUserModal, #removeUserModal { display: none; }
.logout-container { .logout-container {
position: absolute; position: absolute;
top: 10px; top: 10px;
@@ -22,7 +21,6 @@
align-items: flex-end; align-items: flex-end;
gap: 5px; gap: 5px;
} }
@media (max-width: 768px) { @media (max-width: 768px) {
.logout-container { .logout-container {
position: static; position: static;
@@ -35,7 +33,6 @@
min-width: 120px; min-width: 120px;
} }
} }
.modal { .modal {
display: none; display: none;
position: fixed; position: fixed;
@@ -61,6 +58,7 @@
<div class="logout-container"> <div class="logout-container">
<button id="logoutBtn" class="btn btn-danger" style="display: none;">Logout</button> <button id="logoutBtn" class="btn btn-danger" style="display: none;">Logout</button>
<button id="addUserBtn" class="btn btn-success" style="display: none;">Add User</button> <button id="addUserBtn" class="btn btn-success" style="display: none;">Add User</button>
<button id="removeUserBtn" class="btn btn-warning" style="display: none;">Remove User</button>
</div> </div>
</header> </header>
@@ -117,6 +115,15 @@
<button id="saveUserBtn" class="btn btn-primary">Save User</button> <button id="saveUserBtn" class="btn btn-primary">Save User</button>
<button id="cancelUserBtn" class="btn btn-secondary">Cancel</button> <button id="cancelUserBtn" class="btn btn-secondary">Cancel</button>
</div> </div>
<!-- Remove User Modal -->
<div id="removeUserModal" class="modal">
<h3>Remove User</h3>
<label for="removeUsernameSelect">Select a user to remove:</label>
<select id="removeUsernameSelect" class="form-control"></select>
<button id="deleteUserBtn" class="btn btn-danger">Delete User</button>
<button id="cancelRemoveUserBtn" class="btn btn-secondary">Cancel</button>
</div>
</div> </div>
<script> <script>
@@ -134,10 +141,11 @@
document.getElementById("fileListContainer").style.display = "none"; document.getElementById("fileListContainer").style.display = "none";
document.getElementById("logoutBtn").style.display = "none"; document.getElementById("logoutBtn").style.display = "none";
document.getElementById("addUserBtn").style.display = "none"; document.getElementById("addUserBtn").style.display = "none";
document.getElementById("removeUserBtn").style.display = "none";
// Pre-check and disable the admin checkbox. // Pre-check and disable the admin checkbox.
document.getElementById("isAdmin").checked = true; document.getElementById("isAdmin").checked = true;
document.getElementById("isAdmin").disabled = true; document.getElementById("isAdmin").disabled = true;
// Optionally hide the container (since it's always admin in setup mode). // Optionally hide the container.
document.getElementById("adminCheckboxContainer").style.display = "none"; document.getElementById("adminCheckboxContainer").style.display = "none";
document.getElementById("addUserModal").style.display = "block"; document.getElementById("addUserModal").style.display = "block";
window.setupMode = true; window.setupMode = true;
@@ -152,8 +160,10 @@
document.getElementById("logoutBtn").style.display = "block"; document.getElementById("logoutBtn").style.display = "block";
if (data.isAdmin) { if (data.isAdmin) {
document.getElementById("addUserBtn").style.display = "block"; document.getElementById("addUserBtn").style.display = "block";
document.getElementById("removeUserBtn").style.display = "block";
} else { } else {
document.getElementById("addUserBtn").style.display = "none"; document.getElementById("addUserBtn").style.display = "none";
document.getElementById("removeUserBtn").style.display = "none";
} }
loadFileList(); loadFileList();
} else { } else {
@@ -162,6 +172,7 @@
document.getElementById("fileListContainer").style.display = "none"; document.getElementById("fileListContainer").style.display = "none";
document.getElementById("logoutBtn").style.display = "none"; document.getElementById("logoutBtn").style.display = "none";
document.getElementById("addUserBtn").style.display = "none"; document.getElementById("addUserBtn").style.display = "none";
document.getElementById("removeUserBtn").style.display = "none";
} }
} }
@@ -174,12 +185,10 @@
document.getElementById("authForm").addEventListener("submit", function (event) { document.getElementById("authForm").addEventListener("submit", function (event) {
event.preventDefault(); event.preventDefault();
const formData = { const formData = {
username: document.getElementById("loginUsername").value.trim(), username: document.getElementById("loginUsername").value.trim(),
password: document.getElementById("loginPassword").value.trim() password: document.getElementById("loginPassword").value.trim()
}; };
fetch("auth.php", { fetch("auth.php", {
method: "POST", method: "POST",
headers: { "Content-Type": "application/json" }, headers: { "Content-Type": "application/json" },
@@ -210,19 +219,15 @@
document.getElementById("saveUserBtn").addEventListener("click", function () { document.getElementById("saveUserBtn").addEventListener("click", function () {
const newUsername = document.getElementById("newUsername").value.trim(); const newUsername = document.getElementById("newUsername").value.trim();
const newPassword = document.getElementById("newPassword").value.trim(); const newPassword = document.getElementById("newPassword").value.trim();
// In setup mode, ignore the checkbox value (always admin)
const isAdmin = window.setupMode ? true : document.getElementById("isAdmin").checked; const isAdmin = window.setupMode ? true : document.getElementById("isAdmin").checked;
if (!newUsername || !newPassword) { if (!newUsername || !newPassword) {
alert("Username and password are required!"); alert("Username and password are required!");
return; return;
} }
let url = "addUser.php"; let url = "addUser.php";
if (window.setupMode) { if (window.setupMode) {
url += "?setup=1"; url += "?setup=1";
} }
fetch(url, { fetch(url, {
method: "POST", method: "POST",
headers: { "Content-Type": "application/json" }, headers: { "Content-Type": "application/json" },
@@ -233,8 +238,11 @@
if (data.success) { if (data.success) {
alert("User added successfully!"); alert("User added successfully!");
closeAddUserModal(); closeAddUserModal();
// If this was the setup, reload the page to show the login form. if (window.setupMode) {
window.location.reload(true); window.location.reload(true);
} else {
checkAuthentication(); // Refresh UI after adding user
}
} else { } else {
alert("Error: " + (data.error || "Could not add user")); alert("Error: " + (data.error || "Could not add user"));
} }
@@ -246,6 +254,45 @@
closeAddUserModal(); closeAddUserModal();
}); });
// Remove User Button event
document.getElementById("removeUserBtn").addEventListener("click", function () {
loadUserList();
document.getElementById("removeUserModal").style.display = "block";
});
document.getElementById("deleteUserBtn").addEventListener("click", function () {
const selectElem = document.getElementById("removeUsernameSelect");
const usernameToRemove = selectElem.value;
if (!usernameToRemove) {
alert("Please select a user to remove.");
return;
}
if (!confirm("Are you sure you want to delete user " + usernameToRemove + "?")) {
return;
}
fetch("removeUser.php", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ username: usernameToRemove })
})
.then(response => response.json())
.then(data => {
if (data.success) {
alert("User removed successfully!");
closeRemoveUserModal();
// Optionally refresh the user list
loadUserList();
} else {
alert("Error: " + (data.error || "Could not remove user"));
}
})
.catch(error => console.error("Error removing user:", error));
});
document.getElementById("cancelRemoveUserBtn").addEventListener("click", function () {
closeRemoveUserModal();
});
function closeAddUserModal() { function closeAddUserModal() {
document.getElementById("addUserModal").style.display = "none"; document.getElementById("addUserModal").style.display = "none";
resetUserForm(); resetUserForm();
@@ -258,6 +305,39 @@
document.getElementById("isAdmin").disabled = false; document.getElementById("isAdmin").disabled = false;
document.getElementById("adminCheckboxContainer").style.display = "block"; document.getElementById("adminCheckboxContainer").style.display = "block";
} }
function closeRemoveUserModal() {
document.getElementById("removeUserModal").style.display = "none";
// Optionally clear the select options
document.getElementById("removeUsernameSelect").innerHTML = "";
}
// Load list of users into the Remove User modal.
function loadUserList() {
fetch("getUsers.php")
.then(response => response.json())
.then(users => {
const selectElem = document.getElementById("removeUsernameSelect");
selectElem.innerHTML = "";
// Optionally, filter out the currently logged-in admin so they can't delete themselves.
users.forEach(user => {
// Assuming user is an object with property "username"
// Skip current user (if desired)
if (user.username === "<?php echo isset($_SESSION['username']) ? $_SESSION['username'] : ''; ?>") {
return;
}
const option = document.createElement("option");
option.value = user.username;
option.textContent = user.username;
selectElem.appendChild(option);
});
if (selectElem.options.length === 0) {
alert("No other users found to remove.");
closeRemoveUserModal();
}
})
.catch(error => console.error("Error loading user list:", error));
}
}); });
</script> </script>