Files
crm.stream.graff.tech/server/src/routes/reset.ts
T

58 lines
1.6 KiB
TypeScript

import bcrypt from "bcrypt";
import { Router } from "express";
import User from "../models/User.js";
import { randomBytes } from "crypto";
import { createTransport } from "nodemailer";
const router = Router();
router.post("/", async (req, res) => {
const { username } = req.body;
try {
const user = await User.findOne({ username });
if (!user) {
return res.json({ error: "Username not found" });
}
const resetCode = randomBytes(32).toString("hex");
await User.findByIdAndUpdate(user._id, { resetCode });
const url = `https://crm.stream.graff.tech/resetConfirm?code=${resetCode}`;
let transporter = createTransport({
host: "mail.netangels.ru",
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: "stream@graff.tech", // generated ethereal user
pass: "zLUbt8Io7dh2F9KT", // generated ethereal password
},
});
// send mail with defined transport object
try {
await transporter.sendMail({
from: "stream@graff.tech", // sender address
to: username, // list of receivers
subject: "Сброс пароля - crm.stream.graff.tech", // Subject line
html: `<div>
Ссылка для сброса пароля: <a href="${url}" target="_blank">${url}</a>
</div>`,
});
} catch (error) {
console.log("error", (error as Error).message);
}
return res.json({ ok: 1 });
} catch (error) {
return res.json({ error: (error as Error).message });
}
});
const resetRoute = router;
export default resetRoute;