fauth-template
Version:
Generate auth templates for your projects
39 lines (30 loc) • 1.05 kB
text/typescript
import User from "@/models/user.model";
import { createSession } from "@/session/session";
import { IFormData } from "@/types/mongodb";
import { Request, Response } from "express";
import { generateFromEmail } from "unique-username-generator";
export async function oauthController(req: Request, res: Response) {
const { email } = req.body as IFormData;
const checkUserExists = await User.findOne({ email });
if (checkUserExists) {
const payload = {
username: checkUserExists.username,
id: checkUserExists.id,
};
await createSession({ res, payload });
res.status(200).json({ success: true, message: "user signed-in" });
return;
}
const username = generateFromEmail(email, 5);
const newUser = new User({
email,
username,
});
const payload = {
username,
id: newUser.id,
};
await Promise.all([newUser.save(), createSession({ res, payload })]);
res.status(201).json({ success: true, message: "User created successfully" });
return
}