4291552b6d
Co-authored-by: Copilot <copilot@github.com>
100 lines
2.9 KiB
JavaScript
100 lines
2.9 KiB
JavaScript
import express from "express";
|
|
import { authenticate, generateToken } from "../../services/authentication.js";
|
|
import { checkIfServiceIsActive } from "../../services/functions.js";
|
|
const router = express.Router();
|
|
import dotenv from "dotenv";
|
|
dotenv.config();
|
|
|
|
const user_frontend_service = "User Frontend";
|
|
const contact_form_service = "Contact Form Service";
|
|
|
|
// database funcs import
|
|
import {
|
|
loginFunc,
|
|
changePassword,
|
|
getDeactivatedServices,
|
|
} from "./database/userMgmt.database.js";
|
|
|
|
// mailer imports
|
|
import { sendMail } from "../../services/mailer/send.js";
|
|
import { contactMail } from "../../services/mailer/templates/contact.js";
|
|
|
|
router.post(
|
|
"/login",
|
|
checkIfServiceIsActive(user_frontend_service),
|
|
async (req, res) => {
|
|
const result = await loginFunc(req.body.username, req.body.password);
|
|
if (result.success) {
|
|
const token = await generateToken({
|
|
username: result.data.username,
|
|
is_admin: result.data.is_admin,
|
|
first_name: result.data.first_name,
|
|
last_name: result.data.last_name,
|
|
role: result.data.role,
|
|
});
|
|
res.status(200).json({ message: "Login successful", token });
|
|
} else {
|
|
res.status(401).json({ message: "Invalid credentials" });
|
|
}
|
|
},
|
|
);
|
|
|
|
router.post(
|
|
"/change-password",
|
|
checkIfServiceIsActive(user_frontend_service),
|
|
authenticate,
|
|
async (req, res) => {
|
|
const oldPassword = req.body.oldPassword;
|
|
const newPassword = req.body.newPassword;
|
|
const username = req.user.username;
|
|
const result = await changePassword(username, oldPassword, newPassword);
|
|
if (result.success) {
|
|
res.status(200).json({ message: "Password changed successfully" });
|
|
} else {
|
|
res.status(500).json({ message: "Failed to change password" });
|
|
}
|
|
},
|
|
);
|
|
|
|
router.post(
|
|
"/contact",
|
|
checkIfServiceIsActive(contact_form_service),
|
|
authenticate,
|
|
async (req, res) => {
|
|
try {
|
|
const message = req.body?.message;
|
|
const username = req.user?.first_name + " " + req.user?.last_name;
|
|
|
|
if (!username || !message) {
|
|
return res
|
|
.status(400)
|
|
.json({ message: "Username and message are required" });
|
|
}
|
|
|
|
const { html, text } = contactMail({ username, message });
|
|
await sendMail({
|
|
to: process.env.MAIL_SENDEES_CONTACT,
|
|
subject: "Neue Nachricht!",
|
|
html,
|
|
text,
|
|
});
|
|
|
|
res.status(200).json({ message: "Contact message sent successfully" });
|
|
} catch (error) {
|
|
console.error("Failed to send contact mail:", error);
|
|
res.status(500).json({ message: "Failed to send contact message" });
|
|
}
|
|
},
|
|
);
|
|
|
|
router.get("/deactivated-services", authenticate, async (req, res) => {
|
|
const result = await getDeactivatedServices();
|
|
if (result.success) {
|
|
res.status(200).json(result.data);
|
|
} else {
|
|
res.status(500).json({ message: "Failed to fetch deactivated services" });
|
|
}
|
|
});
|
|
|
|
export default router;
|