major changes to docker and npm config
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import express from "express";
|
||||
import { authenticateAdmin } from "../../services/authentication.js";
|
||||
const router = express.Router();
|
||||
import dotenv from "dotenv";
|
||||
dotenv.config();
|
||||
|
||||
// database funcs import
|
||||
import {
|
||||
getAllApiKeys,
|
||||
createAPIentry,
|
||||
deleteAPKey,
|
||||
} from "./database/apiDataMgmt.database.js";
|
||||
|
||||
router.get("/get-api-keys", authenticateAdmin, async (req, res) => {
|
||||
const result = await getAllApiKeys();
|
||||
if (result.success) {
|
||||
return res.status(200).json(result.data);
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to retrieve API keys" });
|
||||
});
|
||||
|
||||
router.post("/create-api-key", authenticateAdmin, async (req, res) => {
|
||||
const apiKey = req.body.apiKey;
|
||||
const entryName = req.body.entryName;
|
||||
const result = await createAPIentry(apiKey, entryName);
|
||||
if (result.success) {
|
||||
return res.status(201).json({ message: "API key created successfully" });
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to create API key" });
|
||||
});
|
||||
|
||||
router.delete("/delete-api-key/:id", authenticateAdmin, async (req, res) => {
|
||||
const apiKeyId = req.params.id;
|
||||
const result = await deleteAPKey(apiKeyId);
|
||||
if (result.success) {
|
||||
return res.status(200).json({ message: "API key deleted successfully" });
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to delete API key" });
|
||||
});
|
||||
|
||||
export default router;
|
||||
@@ -0,0 +1,37 @@
|
||||
import mysql from "mysql2";
|
||||
import dotenv from "dotenv";
|
||||
dotenv.config();
|
||||
|
||||
const pool = mysql
|
||||
.createPool({
|
||||
host: process.env.DB_HOST,
|
||||
user: process.env.DB_USER,
|
||||
password: process.env.DB_PASSWORD,
|
||||
database: process.env.DB_NAME,
|
||||
})
|
||||
.promise();
|
||||
|
||||
export const getAllApiKeys = async () => {
|
||||
const [rows] = await pool.query("SELECT * FROM apiKeys");
|
||||
if (rows.length > 0) {
|
||||
return { success: true, data: rows };
|
||||
}
|
||||
return { success: false };
|
||||
};
|
||||
|
||||
export const createAPIentry = async (apiKey, entryName) => {
|
||||
const [result] = await pool.query(
|
||||
"INSERT INTO apiKeys (api_key, entry_name) VALUES (?, ?)",
|
||||
[apiKey, entryName]
|
||||
);
|
||||
if (result.affectedRows > 0) return { success: true };
|
||||
return { success: false };
|
||||
};
|
||||
|
||||
export const deleteAPKey = async (apiKeyId) => {
|
||||
const [result] = await pool.query("DELETE FROM apiKeys WHERE id = ?", [
|
||||
apiKeyId,
|
||||
]);
|
||||
if (result.affectedRows > 0) return { success: true };
|
||||
return { success: false };
|
||||
};
|
||||
@@ -0,0 +1,82 @@
|
||||
import mysql from "mysql2";
|
||||
import dotenv from "dotenv";
|
||||
dotenv.config();
|
||||
|
||||
const pool = mysql
|
||||
.createPool({
|
||||
host: process.env.DB_HOST,
|
||||
user: process.env.DB_USER,
|
||||
password: process.env.DB_PASSWORD,
|
||||
database: process.env.DB_NAME,
|
||||
})
|
||||
.promise();
|
||||
|
||||
export const getAllItems = async () => {
|
||||
const [result] = await pool.query("SELECT * FROM items");
|
||||
if (result.length > 0) return { success: true, data: result };
|
||||
return { success: false };
|
||||
};
|
||||
|
||||
export const deleteItemById = async (itemId) => {
|
||||
const [result] = await pool.query("DELETE FROM items WHERE id = ?", [itemId]);
|
||||
if (result.affectedRows > 0) return { success: true };
|
||||
return { success: false };
|
||||
};
|
||||
|
||||
export const createItem = async (item_name, can_borrow_role, lockerNumber) => {
|
||||
const [result] = await pool.query(
|
||||
"INSERT INTO items (item_name, can_borrow_role, in_safe, safe_nr) VALUES (?, ?, ?, ?)",
|
||||
[item_name, can_borrow_role, true, lockerNumber]
|
||||
);
|
||||
if (result.affectedRows > 0) return { success: true };
|
||||
return { success: false };
|
||||
};
|
||||
|
||||
export const editItemById = async (
|
||||
itemId,
|
||||
item_name,
|
||||
can_borrow_role,
|
||||
safe_nr,
|
||||
door_key
|
||||
) => {
|
||||
let newSafeNr;
|
||||
if (safe_nr === null || safe_nr === "") {
|
||||
newSafeNr = null;
|
||||
} else {
|
||||
newSafeNr = safe_nr;
|
||||
}
|
||||
const [result] = await pool.query(
|
||||
"UPDATE items SET item_name = ?, can_borrow_role = ?, safe_nr = ?, door_key = ?, entry_updated_at = NOW() WHERE id = ?",
|
||||
[item_name, can_borrow_role, newSafeNr, door_key, itemId]
|
||||
);
|
||||
if (result.affectedRows > 0) return { success: true };
|
||||
return { success: false };
|
||||
};
|
||||
|
||||
export const changeSafeState = async (itemId) => {
|
||||
const currentState = await pool.query(
|
||||
"SELECT in_safe FROM items WHERE id = ?",
|
||||
[itemId]
|
||||
);
|
||||
if (currentState[0].length === 0) {
|
||||
return { success: false };
|
||||
}
|
||||
|
||||
if (currentState[0][0].in_safe) {
|
||||
const [result] = await pool.query(
|
||||
"UPDATE items SET in_safe = false WHERE id = ?",
|
||||
[itemId]
|
||||
);
|
||||
if (result.affectedRows > 0) return { success: true };
|
||||
}
|
||||
|
||||
if (!currentState[0][0].in_safe) {
|
||||
const [result] = await pool.query(
|
||||
"UPDATE items SET in_safe = true WHERE id = ?",
|
||||
[itemId]
|
||||
);
|
||||
if (result.affectedRows > 0) return { success: true };
|
||||
}
|
||||
|
||||
return { success: false };
|
||||
};
|
||||
@@ -0,0 +1,26 @@
|
||||
import mysql from "mysql2";
|
||||
import dotenv from "dotenv";
|
||||
dotenv.config();
|
||||
|
||||
const pool = mysql
|
||||
.createPool({
|
||||
host: process.env.DB_HOST,
|
||||
user: process.env.DB_USER,
|
||||
password: process.env.DB_PASSWORD,
|
||||
database: process.env.DB_NAME,
|
||||
})
|
||||
.promise();
|
||||
|
||||
export const getAllLoans = async () => {
|
||||
const [rows] = await pool.query("SELECT * FROM loans WHERE deleted_admin = 0;");
|
||||
return { success: true, data: rows };
|
||||
};
|
||||
|
||||
export const deleteLoanById = async (loanId) => {
|
||||
const [result] = await pool.query(
|
||||
"UPDATE loans SET deleted = true, deleted_admin = true WHERE id = ?",
|
||||
[loanId],
|
||||
);
|
||||
if (result.affectedRows > 0) return { success: true };
|
||||
return { success: false };
|
||||
};
|
||||
@@ -0,0 +1,26 @@
|
||||
import mysql from "mysql2";
|
||||
import dotenv from "dotenv";
|
||||
dotenv.config();
|
||||
|
||||
const pool = mysql
|
||||
.createPool({
|
||||
host: process.env.DB_HOST,
|
||||
user: process.env.DB_USER,
|
||||
password: process.env.DB_PASSWORD,
|
||||
database: process.env.DB_NAME,
|
||||
})
|
||||
.promise();
|
||||
|
||||
export const getAllFunctions = async () => {
|
||||
const [rows] = await pool.query("SELECT * FROM functions");
|
||||
return { success: true, data: rows };
|
||||
};
|
||||
|
||||
export const updateFunctionStatus = async (functionName, active) => {
|
||||
const [result] = await pool.query(
|
||||
"UPDATE functions SET active = ? WHERE function_name = ?",
|
||||
[active, functionName],
|
||||
);
|
||||
if (result.affectedRows > 0) return { success: true };
|
||||
return { success: false };
|
||||
};
|
||||
@@ -0,0 +1,79 @@
|
||||
import mysql from "mysql2";
|
||||
import dotenv from "dotenv";
|
||||
dotenv.config();
|
||||
|
||||
const pool = mysql
|
||||
.createPool({
|
||||
host: process.env.DB_HOST,
|
||||
user: process.env.DB_USER,
|
||||
password: process.env.DB_PASSWORD,
|
||||
database: process.env.DB_NAME,
|
||||
})
|
||||
.promise();
|
||||
|
||||
export const createUser = async (
|
||||
username,
|
||||
role,
|
||||
password,
|
||||
isAdmin,
|
||||
email,
|
||||
first_name,
|
||||
last_name,
|
||||
) => {
|
||||
const [result] = await pool.query(
|
||||
"INSERT INTO users (username, role, password, is_admin, email, first_name, last_name) VALUES (?, ?, ?, ?, ?, ?, ?)",
|
||||
[username, role, password, isAdmin, email, first_name, last_name],
|
||||
);
|
||||
if (result.affectedRows > 0) return { success: true };
|
||||
return { success: false };
|
||||
};
|
||||
|
||||
export const deleteUserById = async (userId) => {
|
||||
const [result] = await pool.query("DELETE FROM users WHERE id = ?", [userId]);
|
||||
if (result.affectedRows > 0) return { success: true };
|
||||
return { success: false };
|
||||
};
|
||||
|
||||
export const changePassword = async (username, newPassword) => {
|
||||
const [result] = await pool.query(
|
||||
"UPDATE users SET password = ?, entry_updated_at = NOW() WHERE username = ?",
|
||||
[newPassword, username],
|
||||
);
|
||||
if (result.affectedRows > 0) return { success: true };
|
||||
return { success: false };
|
||||
};
|
||||
|
||||
export const editUserById = async (
|
||||
userId,
|
||||
first_name,
|
||||
last_name,
|
||||
role,
|
||||
email,
|
||||
is_admin,
|
||||
) => {
|
||||
const [result] = await pool.query(
|
||||
"UPDATE users SET first_name = ?, last_name = ?, role = ?, email = ?, is_admin = ?, entry_updated_at = NOW() WHERE id = ?",
|
||||
[first_name, last_name, role, email, is_admin, userId],
|
||||
);
|
||||
if (result.affectedRows > 0) return { success: true };
|
||||
return { success: false };
|
||||
};
|
||||
|
||||
export const getAllUsers = async () => {
|
||||
const [result] = await pool.query(
|
||||
"SELECT id, username, first_name, last_name, role, email, is_admin, entry_created_at, entry_updated_at FROM users",
|
||||
);
|
||||
if (result.length > 0) return { success: true, data: result };
|
||||
return { success: false };
|
||||
};
|
||||
|
||||
export const getUserById = async (userId) => {
|
||||
const [rows] = await pool.query(
|
||||
"SELECT id, username, first_name, last_name, role, email, is_admin FROM users WHERE id = ?",
|
||||
[userId],
|
||||
);
|
||||
if (rows.length === 0) {
|
||||
return { success: false };
|
||||
}
|
||||
return { success: true, data: rows[0] };
|
||||
};
|
||||
@@ -0,0 +1,47 @@
|
||||
import mysql from "mysql2";
|
||||
import dotenv from "dotenv";
|
||||
dotenv.config();
|
||||
|
||||
const pool = mysql
|
||||
.createPool({
|
||||
host: process.env.DB_HOST,
|
||||
user: process.env.DB_USER,
|
||||
password: process.env.DB_PASSWORD,
|
||||
database: process.env.DB_NAME,
|
||||
})
|
||||
.promise();
|
||||
|
||||
export const loginAdmin = async (username, password) => {
|
||||
const [rows] = await pool.query(
|
||||
"SELECT id, username, first_name, last_name, role, is_admin FROM users WHERE username = ? AND password = ?",
|
||||
[username, password]
|
||||
);
|
||||
|
||||
if (rows.length === 0) {
|
||||
return { success: false, reason: "invalid_credentials" };
|
||||
}
|
||||
|
||||
const user = rows[0];
|
||||
if (!user.is_admin) {
|
||||
return { success: false, reason: "not_admin" };
|
||||
}
|
||||
|
||||
return { success: true, data: user };
|
||||
};
|
||||
|
||||
export const executeQuery = async (query, password, username) => {
|
||||
let verified = false;
|
||||
const [user] = await pool.query(
|
||||
"SELECT * FROM users WHERE username = ? AND password = ?",
|
||||
[username, password]
|
||||
);
|
||||
if (user.length > 0 && user[0].is_admin) {
|
||||
verified = true;
|
||||
}
|
||||
|
||||
if (!verified) {
|
||||
return { success: false, message: "Unauthorized" };
|
||||
}
|
||||
const [result] = await pool.query(`${query}`);
|
||||
return { success: true, data: result };
|
||||
};
|
||||
@@ -0,0 +1,68 @@
|
||||
import express from "express";
|
||||
import { authenticateAdmin } from "../../services/authentication.js";
|
||||
const router = express.Router();
|
||||
import dotenv from "dotenv";
|
||||
dotenv.config();
|
||||
|
||||
// database funcs import
|
||||
import {
|
||||
editItemById,
|
||||
getAllItems,
|
||||
deleteItemById,
|
||||
createItem,
|
||||
changeSafeState,
|
||||
} from "./database/itemDataMgmt.database.js";
|
||||
|
||||
router.get("/all-items", authenticateAdmin, async (req, res) => {
|
||||
const result = await getAllItems();
|
||||
if (result.success) {
|
||||
return res.status(200).json(result.data);
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to retrieve items" });
|
||||
});
|
||||
|
||||
router.delete("/delete-item/:id", authenticateAdmin, async (req, res) => {
|
||||
const itemId = req.params.id;
|
||||
const result = await deleteItemById(itemId);
|
||||
if (result.success) {
|
||||
return res.status(200).json({ message: "Item deleted successfully" });
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to delete item" });
|
||||
});
|
||||
|
||||
router.post("/create-item", authenticateAdmin, async (req, res) => {
|
||||
const { item_name, can_borrow_role, lockerNumber } = req.body;
|
||||
const result = await createItem(item_name, can_borrow_role, lockerNumber);
|
||||
if (result.success) {
|
||||
return res.status(201).json({ message: "Item created successfully" });
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to create item" });
|
||||
});
|
||||
|
||||
router.post("/edit-item/:id", authenticateAdmin, async (req, res) => {
|
||||
const itemId = req.params.id;
|
||||
const { item_name, can_borrow_role, safe_nr, door_key } = req.body;
|
||||
|
||||
const result = await editItemById(
|
||||
itemId,
|
||||
item_name,
|
||||
can_borrow_role,
|
||||
safe_nr,
|
||||
door_key
|
||||
);
|
||||
if (result.success) {
|
||||
return res.status(200).json({ message: "Item edited successfully" });
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to edit item" });
|
||||
});
|
||||
|
||||
router.post("/change-safe-state/:id", authenticateAdmin, async (req, res) => {
|
||||
const itemId = req.params.id;
|
||||
const result = await changeSafeState(itemId);
|
||||
if (result.success) {
|
||||
return res.status(200).json({ message: "Safe state changed successfully" });
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to change safe state" });
|
||||
});
|
||||
|
||||
export default router;
|
||||
@@ -0,0 +1,30 @@
|
||||
import express from "express";
|
||||
import { authenticateAdmin } from "../../services/authentication.js";
|
||||
const router = express.Router();
|
||||
import dotenv from "dotenv";
|
||||
dotenv.config();
|
||||
|
||||
// database funcs import
|
||||
import {
|
||||
deleteLoanById,
|
||||
getAllLoans,
|
||||
} from "./database/loanDataMgmt.database.js";
|
||||
|
||||
router.get("/all-loans", authenticateAdmin, async (req, res) => {
|
||||
const result = await getAllLoans();
|
||||
if (result.success) {
|
||||
return res.status(200).json(result.data);
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to retrieve loans" });
|
||||
});
|
||||
|
||||
router.delete("/delete-loan/:id", authenticateAdmin, async (req, res) => {
|
||||
const loanId = req.params.id;
|
||||
const result = await deleteLoanById(loanId);
|
||||
if (result.success) {
|
||||
return res.status(200).json({ message: "Loan deleted successfully" });
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to delete loan" });
|
||||
});
|
||||
|
||||
export default router;
|
||||
@@ -0,0 +1,50 @@
|
||||
import express from "express";
|
||||
import { authenticateAdmin } from "../../services/authentication.js";
|
||||
const router = express.Router();
|
||||
import dotenv from "dotenv";
|
||||
dotenv.config();
|
||||
|
||||
// database funcs import
|
||||
import {
|
||||
getAllFunctions,
|
||||
updateFunctionStatus,
|
||||
} from "./database/serverConfMgmt.database.js";
|
||||
|
||||
// Route to get all functions and their statuses
|
||||
router.get("/all", async (req, res) => {
|
||||
try {
|
||||
const result = await getAllFunctions();
|
||||
if (result.success) {
|
||||
res.status(200).json({ data: result.data });
|
||||
} else {
|
||||
res.status(500).json({ message: "Failed to fetch functions" });
|
||||
}
|
||||
} catch (error) {
|
||||
res
|
||||
.status(500)
|
||||
.json({ message: "An error occurred", error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
// Route to update the status of a function
|
||||
router.post("/update", async (req, res) => {
|
||||
const functionName = req.query.functionName;
|
||||
let active = req.query.active;
|
||||
|
||||
if (active === "false") {
|
||||
active = 0;
|
||||
} else if (active === "true") {
|
||||
active = 1;
|
||||
} else {
|
||||
res.status(406).json({ message: "Got unexpected format" });
|
||||
}
|
||||
|
||||
const result = await updateFunctionStatus(functionName, active);
|
||||
if (result.success) {
|
||||
res.status(200).json({ message: "Function status updated successfully" });
|
||||
} else {
|
||||
res.status(500).json({ message: "Failed to update function status" });
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
||||
@@ -0,0 +1,123 @@
|
||||
import express from "express";
|
||||
import { authenticateAdmin } from "../../services/authentication.js";
|
||||
const router = express.Router();
|
||||
import dotenv from "dotenv";
|
||||
dotenv.config();
|
||||
|
||||
// database funcs import
|
||||
import {
|
||||
createUser,
|
||||
deleteUserById,
|
||||
editUserById,
|
||||
changePassword,
|
||||
getAllUsers,
|
||||
getUserById,
|
||||
} from "./database/userDataMgmt.database.js";
|
||||
|
||||
router.post("/create-user", authenticateAdmin, async (req, res) => {
|
||||
const username = req.body.username;
|
||||
const role = req.body.role;
|
||||
const password = req.body.password;
|
||||
const isAdmin = req.body.isAdmin;
|
||||
const email = req.body.email;
|
||||
const first_name = req.body.first_name;
|
||||
const last_name = req.body.last_name;
|
||||
const result = await createUser(
|
||||
username,
|
||||
role,
|
||||
password,
|
||||
isAdmin,
|
||||
email,
|
||||
first_name,
|
||||
last_name
|
||||
);
|
||||
if (result.success) {
|
||||
return res.status(201).json({ message: "User created successfully" });
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to create user" });
|
||||
});
|
||||
|
||||
router.delete("/delete-user/:id", authenticateAdmin, async (req, res) => {
|
||||
const userId = req.params.id;
|
||||
const result = await deleteUserById(userId);
|
||||
if (result.success) {
|
||||
return res.status(200).json({ message: "User deleted successfully" });
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to delete user" });
|
||||
});
|
||||
|
||||
router.post("/edit-user/:id", authenticateAdmin, async (req, res) => {
|
||||
const first_name = req.body.first_name;
|
||||
const last_name = req.body.last_name;
|
||||
const role = req.body.role;
|
||||
const email = req.body.email;
|
||||
const userId = req.params.id;
|
||||
const is_admin = req.body.is_admin;
|
||||
|
||||
const result = await editUserById(
|
||||
userId,
|
||||
first_name,
|
||||
last_name,
|
||||
role,
|
||||
email,
|
||||
is_admin
|
||||
);
|
||||
|
||||
if (result.success) {
|
||||
return res.status(200).json({ message: "User edited successfully" });
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to edit user" });
|
||||
});
|
||||
|
||||
router.post("/change-password", authenticateAdmin, async (req, res) => {
|
||||
const username = req.body.username;
|
||||
const password = req.body.password;
|
||||
|
||||
const result = await changePassword(username, password);
|
||||
|
||||
if (result.success) {
|
||||
return res.status(200).json({ message: "Password reset successfully" });
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to reset password" });
|
||||
});
|
||||
|
||||
router.post("/edit-user/:id", authenticateAdmin, async (req, res) => {
|
||||
const userId = req.params.id;
|
||||
const first_name = req.body.first_name;
|
||||
const last_name = req.body.last_name;
|
||||
const role = req.body.role;
|
||||
const email = req.body.email;
|
||||
const is_admin = req.body.is_admin;
|
||||
|
||||
const result = await editUserById(
|
||||
userId,
|
||||
first_name,
|
||||
last_name,
|
||||
role,
|
||||
email,
|
||||
is_admin
|
||||
);
|
||||
|
||||
if (result.success) {
|
||||
return res.status(200).json({ message: "User edited successfully" });
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to edit user" });
|
||||
});
|
||||
|
||||
router.get("/users", authenticateAdmin, async (req, res) => {
|
||||
const result = await getAllUsers();
|
||||
if (result.success) {
|
||||
return res.status(200).json(result.data);
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to retrieve users" });
|
||||
});
|
||||
|
||||
router.get("/user/:id", authenticateAdmin, async (req, res) => {
|
||||
const result = await getUserById(req.params.id);
|
||||
if (result.success) {
|
||||
return res.status(200).json({ user: result.data });
|
||||
}
|
||||
return res.status(500).json({ message: "Failed to retrieve user" });
|
||||
});
|
||||
|
||||
export default router;
|
||||
@@ -0,0 +1,54 @@
|
||||
import express from "express";
|
||||
import {
|
||||
generateToken,
|
||||
authenticateAdmin,
|
||||
} from "../../services/authentication.js";
|
||||
const router = express.Router();
|
||||
import dotenv from "dotenv";
|
||||
dotenv.config();
|
||||
|
||||
// database funcs import
|
||||
import { loginAdmin, executeQuery } from "./database/userMgmt.database.js";
|
||||
|
||||
router.post("/login", async (req, res) => {
|
||||
const { username, password } = req.body || {};
|
||||
if (!username || !password) {
|
||||
return res.status(400).json({ message: "Missing username or password" });
|
||||
}
|
||||
|
||||
const result = await loginAdmin(username, password);
|
||||
|
||||
if (result.success) {
|
||||
const token = await generateToken({
|
||||
username: result.data.username,
|
||||
first_name: result.data.first_name,
|
||||
last_name: result.data.last_name,
|
||||
admin: result.data.is_admin,
|
||||
});
|
||||
return res.status(200).json({
|
||||
message: "Login erfolgreich",
|
||||
token,
|
||||
first_name: result.data.first_name,
|
||||
});
|
||||
}
|
||||
|
||||
if (result.reason === "not_admin") {
|
||||
return res.status(403).json({ message: "Du bist kein Admin" });
|
||||
}
|
||||
|
||||
return res.status(401).json({ message: "Ungültige Anmeldedaten" });
|
||||
});
|
||||
|
||||
router.get("/verify-token", authenticateAdmin, async (req, res) => {
|
||||
return res.status(200).json({ message: "Token is valid" });
|
||||
});
|
||||
|
||||
router.post("/database-query", authenticateAdmin, async (req, res) => {
|
||||
const query = req.body.query;
|
||||
const password = req.body.password;
|
||||
const username = req.body.username;
|
||||
|
||||
const result = await executeQuery(query, password, username);
|
||||
});
|
||||
|
||||
export default router;
|
||||
Reference in New Issue
Block a user