dockerized the project for dev

This commit is contained in:
QkoSad
2024-09-06 16:27:48 +03:00
parent 8e83b6b8df
commit 04ae8b7be8
47 changed files with 363 additions and 635 deletions
+90
View File
@@ -0,0 +1,90 @@
import express from "express";
import gravatar from "gravatar";
import bcrypt from "bcryptjs";
import jwt from "jsonwebtoken";
import config from "config";
import { check, validationResult } from "express-validator";
import User from "../../models/User";
import normalizeUrl from "normalize-url";
const router = express.Router();
// @route POST api/users
// @desc Register user
// @access Public
router.post(
"/",
check("name", "Name is required").notEmpty(),
check("email", "Please include a valid email").isEmail(),
check(
"password",
"Please enter a password with 6 or more characters"
).isLength({ min: 6 }),
async (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
const { name, email, password } = req.body;
try {
let user = await User.findOne({ email });
if (user) {
return res
.status(400)
.json({ errors: [{ msg: "User already exists" }] });
}
const avatar = normalizeUrl(
gravatar.url(email, {
s: "200",
r: "pg",
d: "mm",
}),
{ forceHttps: true }
);
user = new User({
name,
email,
avatar,
password,
});
const salt = await bcrypt.genSalt(10);
user.password = await bcrypt.hash(password, salt);
await user.save();
const payload = {
user: {
id: user.id,
},
};
const jwtSecret = config.get('jwtSecret')
if (typeof jwtSecret === 'string') jwt.sign(
payload,
jwtSecret,
{ expiresIn: "5 days" },
(err, token) => {
if (err) throw err;
res.json({ token });
}
);
} catch (err: unknown) {
if (typeof err === 'string')
console.error(err)
else if (err instanceof Error)
console.error(err.message);
res.status(500).send("Server error");
}
}
);
module.exports = router