2024-03-06 19:43:09 +00:00

49 lines
1.2 KiB
JavaScript

import { User, APRSession } from "@db_models"
import requiredFields from "@shared-utils/requiredFields"
export default async (req) => {
requiredFields(["email"], req.body)
const { email } = req.body
const user = await User.findOne({ email })
if (!user) {
throw new OperationError(400, "User not found")
}
const apr = new APRSession({
user_id: user._id.toString(),
created_at: new Date().getTime(),
expires_at: new Date().getTime() + 60 * 60 * 1000,
code: nanoid(),
ip_address: req.headers["x-forwarded-for"]?.split(",")[0] ?? req.socket?.remoteAddress ?? req.ip,
client: req.headers["user-agent"],
status: "sended",
})
await apr.save()
await ipc.call("ems", "apr:send", {
user_id: user._id.toString(),
username: user.username,
email: user.email,
code: apr.code,
apr_link: `https://comty.app/forgot/apr/${apr.code}`,
created_at: apr.created_at,
expires_at: apr.expires_at,
client: apr.client,
ip_address: apr.ip_address,
})
return {
message: `Email sent to ${email}`,
sent: true,
}
}