انت مشغل الـ AdBlock !!
ياريت تقفله لوسمحت 😊 😊
تنبيه هام ✋
إذا كانت الإعلانات مزعجة بالنسبة لك، فيُمكنك التبرع ب50$ وسيتم إيقاف الإعلانات لمدة شهر لجميع زوار الموقع 🧡 ويُمكنك التواصل معنا عن طريق صفحة الفيس بوك
README.md
fileasync
& await
const bcrypt = require('bcrypt');
userSchema.pre("save", async function (next) {
const salt = await bcrypt.genSalt();
this.password = await bcrypt.hash(this.password, salt);
next();
});
var jwt = require("jsonwebtoken");
if (correct email & password) {
var token = jwt.sign({ id: loginUser._id }, "shhhhh");
res.cookie("jwt", token, { httpOnly: true, maxAge: 86400000 });
res.redirect("/home")
}
const requireAuth = (req, res, next) => {
const token = req.cookies.jwt;
if (token) {
jwt.verify(token, "shhhhh", (err) => {
if (err) { res.redirect("/login"); } else {next();}
});
} else {
res.redirect("/login");
}};
const checkIfUser = (req, res, next) => {
const token = req.cookies.jwt;
if (token) {
jwt.verify(token, "shhhhh", async (err, decoded) => {
if (err) {
res.locals.user = null;
next();
} else {
const currentUser = await AuthUser.findById(decoded.id);
res.locals.user = currentUser;
next();
}
});
} else {
res.locals.user = null;
next();
}
};
Delete cookies to sign out:
router.get("/signout", (req, res) => {
res.cookie("jwt", "", { maxAge: 1 });
res.redirect("/");
});
const isCurrentEmail = await AuthUser.findOne({email: req.body.email})
if (isCurrentEmail) {
return console.log("Email already exist")
}
const { check, validationResult } = require("express-validator");
router.post(/signup",
[
check("email", "Please provide a valid email").isEmail(),
check("password", "Password must be at least 8 characters with 1 upper case letter and 1 number").matches(/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})/),
],
(req, res) => {
const objError = validationResult(req);
console.log(objError.errors);
if (objError.errors.length > 0) {
return console.log("invalid email OR invalid password")
}}
)
app.use(express.json())
res.json({ KEY: VALUE });
const form = document.querySelector("form");
form.addEventListener("submit", async (e) => {
e.preventDefault();
const res = await fetch("/signup", {
method: "POST",
body: JSON.stringify({ email: emailId.value, password: passwordId.value }),
headers: { "Content-Type": "application/json" },
});
const data = await res.json();
console.log(data)
});
.env
file & Github actionsEnvironment variables in Node are used to store sensitive data.
require('dotenv').config()
ياريت تقفله لوسمحت 😊 😊
تنبيه هام ✋
إذا كانت الإعلانات مزعجة بالنسبة لك، فيُمكنك التبرع ب50$ وسيتم إيقاف الإعلانات لمدة شهر لجميع زوار الموقع 🧡 ويُمكنك التواصل معنا عن طريق صفحة الفيس بوك