intern-Assignment/PostgreSQL/formPrac/controller/signup.js
2025-01-31 15:20:39 +05:30

73 lines
2.1 KiB
JavaScript

const userCreds = require("../userData/userData.json");
const { Client } = require("pg");
const bcrypt = require("bcrypt");
const jwt = require("jsonwebtoken");
const fs = require("fs");
const SECRETKEY = "IUGHIU*&*&^&)*FF&R&RE%R%RRP(*Y(*%C&$^%*)";
const connection = new Client({
host: "localhost",
user: "postgres",
port: 5432,
password: "password",
database: "registeredUsers",
});
exports.signup = async (req, res) => {
let { username, email, password } = req.body;
try {
const existingUser = userCreds.find((user) => user.email === email);
if (existingUser) {
return res
.status(400)
.json({ message: "User already exists, Please try again..." });
}
const hashpassword = await bcrypt.hash(password, 10);
const result = {
id: userCreds.length + 1,
username: username,
password: hashpassword,
email: email,
};
userCreds.push(result);
const query =
`INSERT INTO signedUsers (username, password, email) VALUES ($1, $2, $3)`;
const values = [result.username, result.password, result.email];
await connection
.connect()
.then(() => console.log("Connected to the database"));
await connection.query(query, values);
console.log("User inserted into database");
connection.query("Select * from signedUsers", (err, res) => {
if (!err) {
console.log(res.rows);
} else {
console.log(err.message);
}
connection.end;
});
fs.writeFile("./userData.json", JSON.stringify(userCreds), (err) => {
if (err) {
return res.status(500).send("Cannot add details to the file");
}
return res.json({ status: "Data Added to the file" });
});
const signUpToken = jwt.sign(
{ email: result.email, id: result.id, usename: result.username },
SECRETKEY
);
console.log(signUpToken);
res.status(200).json({ user: result, token: signUpToken });
} catch (error) {
console.log(error);
res.status(500).json({ msg: "Something went wrong" });
} finally {
connection.end();
}
};