You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.4 KiB
98 lines
3.4 KiB
import { deleteStudent, updateStudent, addStudent, setUserName, getUsersFromAdmin, getUserByEmail } from "../queries/userQueries.js";
|
|
import { getAdminID } from "../queries/adminQueries.js";
|
|
import { Router } from "express";
|
|
import bcrypt from "bcrypt";
|
|
const router = Router();
|
|
// add a student to the database
|
|
router.post('/AddStudent', async (req,res) => {
|
|
const { name, email, Aemail, password } = req.body;
|
|
try{
|
|
const Admin = await getAdminID(Aemail);
|
|
const saltRounds = 10;
|
|
const hashedPassword = await bcrypt.hash(password, saltRounds);
|
|
const result = await addStudent(name, email, hashedPassword, Admin);
|
|
return res.status(200).json({success: true});
|
|
} catch(err){
|
|
console.error("Error adding student", err.message);
|
|
return res.statusMessage(500).json({error: "Could not add student"});
|
|
}
|
|
});
|
|
|
|
// update a student in the database
|
|
router.post('/UpdateStudent', async (req,res) => {
|
|
const { email, password } = req.body;
|
|
try{
|
|
const saltRounds = 10;
|
|
const hashedPassword = await bcrypt.hash(password, saltRounds);
|
|
const result = await updateStudent(email, hashedPassword);
|
|
if(result.affectedRows === 0)
|
|
return res.status(404).json({error: "Student not found"});
|
|
return res.status(200).json({success: true});
|
|
} catch(err){
|
|
console.error('Error updating student:', err.message);
|
|
return res.status(500).json({error: "Could not update password"});
|
|
}
|
|
});
|
|
|
|
// delete a student from the database
|
|
router.post('/DeleteStudent', (req,res) => {
|
|
const {email} = req.body;
|
|
deleteStudent(email).then((result) => {
|
|
if(result.affectedRows === 0)
|
|
return res.status(404).json({error: "NO STUDENT"});
|
|
return res.status(200).json({success: true});
|
|
}).catch((err) => {
|
|
console.error(err.message);
|
|
return res.status(500).json({error: "COULD NOT DELETE STUDENT"});
|
|
});
|
|
});
|
|
|
|
// get all of the users with the same key as admin
|
|
router.post('/getAllUsers', (req,res) => {
|
|
const { email } = req.body;
|
|
return getAdminID(email).then((Admin) => {
|
|
return getUsersFromAdmin(Admin).then((users) => {
|
|
if(users.length === 0)
|
|
res.status(404).json({error: "NO ADMIN/USERS FOUND"});
|
|
else
|
|
res.json(users);
|
|
}).catch((err) => {
|
|
console.error(err.message);
|
|
res.status(500).json({error: "COULD NOT FIND USER"});
|
|
});
|
|
}).catch((err) => {
|
|
console.error(err.message);
|
|
res.status(500).json({error: "COULD NOT FIND ADMIN"});
|
|
});
|
|
});
|
|
|
|
// return everything on a user by email
|
|
router.post('/getUser', async(req,res) => {
|
|
const { email } = req.body;
|
|
return getUserByEmail('Users',email).then((row) => {
|
|
if (row) res.json(row);
|
|
else return res.status(404).json({ error: 'USER NOT FOUND' });
|
|
})
|
|
});
|
|
|
|
router.post('/getUsername', async(req,res) => {
|
|
const { email } = req.body;
|
|
return getUserByEmail('Users',email).then((row) => {
|
|
if (row) res.json(row.Name);
|
|
else return res.status(404).json({ error: 'USER NOT FOUND' });
|
|
})
|
|
});
|
|
|
|
// set the new name of the user
|
|
router.post('/setUserName', async (req,res) => {
|
|
const { name, email } = req.body;
|
|
try{
|
|
await setUserName(name, email);
|
|
res.status(200).json({success: true});
|
|
}catch(err){
|
|
console.error(err.message);
|
|
res.status(500).json({error: err.message});
|
|
}
|
|
});
|
|
|
|
export default router; |