Skip to content

Commit f9ea7df

Browse files
author
user.name "rohit nagani
committed
scretch
1 parent 38212ba commit f9ea7df

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1355
-104
lines changed

app.js

+19-11
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,34 @@ const express = require("express");
33
const app = express();
44
const db = require("./config/mongoose-connection")
55
const path= require('path');
6-
6+
const multer = require('multer');
7+
const flash = require('connect-flash');
8+
const expressSession = require('express-session');
9+
require('dotenv').config();//jo bhi envfile me data hei use use kar payenge like jwt keys 😊 ye dusara tarika hei pahela tarika hei devlopment environment variable set karke jo / config/monngoose-connection.js me use kiya tha
10+
//environment ⬆ variable
711
app.use(express.json());
812
app.use(express.urlencoded({extended:true}));
913
app.use(cookieParser());
1014
app.use(express.static(path.join(__dirname,"public")));
1115
app.set("view engine","ejs");
1216

13-
const ownersRouter= require('./routes/ownersRouter');
14-
const usersRouter= require('./routes/usersRouter');
15-
const productsRouter= require('./routes/productsRouter');
16-
17+
app.use(expressSession({
18+
resave:false,//bar bar save mat karo agar change nahi ho raha ho to
19+
saveUninitialized:false,// koi newUser aata hei to usaka session create mat karna
20+
secret: process.env.EXPRESS_SESSION_SECRET,
21+
}))
22+
app.use(flash())//rout change hone par bhi data access kar sakate hei
1723

1824

19-
app.get("/",(req,res)=>{
20-
res.send("hey")
21-
});
25+
const ownersRouter= require('./routes/ownersRouter');//jisme sirf owner ke rout hoge
26+
const usersRouter= require('./routes/usersRouter');//jisme sirf user ke rout hoge
27+
const productsRouter= require('./routes/productsRouter');//jisme sirf product ke rout hoge
28+
const indexRouter = require('./routes/index');
2229

23-
app.use("/owners", ownersRouter)
24-
app.use("/users", usersRouter)
25-
app.use("/products", productsRouter)
30+
app.use("/", indexRouter)
31+
app.use("/owners", ownersRouter)// "/owners"se raletive sari reaquest ownersRouter router par bhejo
32+
app.use("/users", usersRouter)// "/users"se raletive sari reaquest usersRouter router par bhejo
33+
app.use("/products", productsRouter) // "/product"se raletive sari reaquest productsRouter router par bhejo
2634

2735

2836
app.listen(3000);

config/development.json

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"MONGODB_URI":"mongodb://127.0.0.1:27017"
3+
}

config/keys.js

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
JWT_KEY :process.env.JWT_KEY; // env file se data aa raha hei
3+
}

config/mongoose-connection.js

+12-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
1-
const mongoose = require("mongoose")
1+
const mongoose = require("mongoose");
2+
const config = require("config");// ye jo environment variable chalu ho usase value utayega
23

3-
mongoose.connect("mongodb://127.0.0.1:27017/scatch")
4+
const dbgr = require('debug')("development:mongoose");// ("development:mongoose"); chacha:chachi
5+
//${config.get("MONGODB_URI")}/scretch ==> database se dynamic connection
6+
mongoose.connect(`${config.get("MONGODB_URI")}/scretch`)
47
.then(function(){
5-
console.log("connectedd");
8+
dbgr("connectedd");//faltu console me kuch print na ho es liye
9+
// jab tak inviroment variable set nahi hai tab tak
10+
// $env:DEBUG = "development:*" set DEBUG=development:*
11+
//set DEBUG= environment variable rokne ke liye
612
})
7-
.catch(function(err){
8-
console.log(err)
13+
.catch(function(err){ // agar mongodb server se connect nahi huva to
14+
dbgr(err)
915
})
10-
module.exports= mongoose.connection;
16+
module.exports= mongoose.connection; //mongoose.connection jo hei vo database ka saara controll deta hei

config/multer.js

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
const multer = require("multer");
2+
const storage = multer.memoryStorage();// memory me store
3+
const upload = multer ({storage:storage})//bydifault upload storage par apload karna
4+
5+
6+
module.exports= upload; // upload variable file ko upload karata hei
7+
8+
9+
10+
11+
12+
13+
14+

controllers/authControler.js

+124
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
2+
const userModel = require("../models/user-model");
3+
const bcrypt = require('bcrypt');
4+
const jwt = require('jsonwebtoken');
5+
const cookieParser = require('cookie-parser');
6+
const {generateaToken} =require("../utils/generatetoken");
7+
const upload = require('../config/multer');
8+
const productModel = require("../models/product-model");
9+
const express =require("express");
10+
const router = express.Router();
11+
12+
//--------------------------------------------------------register---------------------------------------------------------------
13+
module.exports.registerUser= async function(req,res){
14+
15+
16+
const {fullname, email , password } = req.body ;
17+
18+
19+
20+
try{
21+
const user= await userModel.findOne({email:email})
22+
if(!user){
23+
24+
bcrypt.genSalt(10, async function(err,salt){//selt ganrate
25+
if(err) return res.status(500).send("error generating salt.")//agar salt ganrate nahi huva to
26+
27+
else{ //agar salt generate ho jaye to fir
28+
bcrypt.hash(password,salt, async function(err, hash){ // password ko us salt me convort kro or ak hash value do
29+
if (err) return res.status(500).send("Error hashing password.");//agar hash me convort na ho to
30+
else{ //hash me convort ho jaye to
31+
32+
const newUser = await userModel.create({ //user create kro
33+
fullname,
34+
email,
35+
password : hash // real password ki jagah hash value save kro
36+
37+
});
38+
39+
const token = generateaToken(newUser);//registeruser ko generateaToken jo function hei use as a argument bheja he jo /utils/generatetoken.js file se export ho raha hei
40+
// generateaToken me return hoke aa raha hei jsonwebtoken
41+
res.cookie("token",token); // use tokan ko hamane use user ki cookies me send kar diya hei
42+
res.redirect("/shop")
43+
44+
}
45+
})
46+
}
47+
})
48+
}
49+
else{
50+
res.send("you already have an account , please login.")
51+
}
52+
}
53+
catch(err){
54+
res.send(err.message);
55+
56+
}
57+
58+
}
59+
//---------------------------------------------------------login-----------------------------------------------------------------
60+
61+
62+
63+
64+
module.exports.loginUser= async function (req,res) {
65+
const {email,password}= req.body;
66+
67+
68+
69+
70+
try {
71+
const registerUser= await userModel.findOne({email});//sirf email ak hi denahe
72+
73+
74+
75+
if (!registerUser){
76+
77+
res.send("user not found");
78+
}else{
79+
bcrypt.compare(password,registerUser.password,(err,result)=>{//user ke password ko pahele hash me convort karega fir saved user ke hash se compare karega.
80+
if (result) {// hash === hash
81+
const token = generateaToken(registerUser);//registeruser ko generateaToken jo function hei use as a argument bheja he jo /utils/generatetoken.js file se export ho raha hei
82+
// generateaToken me return hoke aa raha hei jsonwebtoken
83+
res.cookie("token",token);
84+
res.redirect("/shop")
85+
} else {
86+
res.send("Invalid password")
87+
}
88+
})
89+
90+
}
91+
92+
93+
} catch (error) {
94+
95+
res.send(error)
96+
}
97+
98+
99+
100+
101+
}
102+
103+
// -----------------------------------------------------productCreate------------------------------------------------------------
104+
105+
106+
107+
108+
// const product= await productModel.create({
109+
110+
111+
// image:"/peoductImages/1bag.png",
112+
// name: "bag",
113+
// price: 74,
114+
115+
// bgcolor: "skyblue",
116+
// panelcolor : "orange",
117+
// textcolor : "black"
118+
119+
// });
120+
// const products = [ product,product,product,product,product,product,product,product]
121+
122+
123+
124+

middlewares/isLoggedin.js

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
const jwt= require('jsonwebtoken');
2+
const userModel = require('../models/user-model');
3+
4+
module.exports=async function(req,res,next){
5+
6+
const token= req.cookies.token;
7+
try {
8+
9+
if(!token){
10+
11+
req.flash("error","you need to login first");
12+
return res.redirect("/")
13+
}else{
14+
const decoded= jwt.verify(token,process.env.EXPRESS_SESSION_SECRET)
15+
const user =await userModel
16+
.findOne({email:decoded.email})
17+
.select("-password");
18+
req.user = user ;
19+
20+
next()
21+
}
22+
23+
} catch (error) {
24+
req.flash("error","somthing went wrong");
25+
res.redirect("/")
26+
}
27+
28+
}

models/owner-model.js

+10-5
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@ const mongoose = require("mongoose")
44

55
const ownerSchema = mongoose.Schema({
66

7-
fullname : String,
7+
fullname : {
8+
type:String,
9+
minLength:3,
10+
trim:true,
11+
},
812
email : String,
913
password :String,
1014

11-
products: {
12-
type: Array,
13-
default:[]
14-
},
15+
products: [{
16+
type: mongoose.Schema.Types.ObjectId,
17+
ref: 'product' // Name of the product model
18+
}],
19+
1520
picture:String,
1621
gstin: String
1722

models/product-model.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const mongoose = require("mongoose")
55
const productSchema = mongoose.Schema({
66

77

8-
image:String,
8+
image: Buffer,
99
name: String,
1010
price: Number,
1111
discount: {
@@ -14,11 +14,10 @@ const productSchema = mongoose.Schema({
1414
} ,
1515
bgcolor: String,
1616
panelcolor : String,
17-
textcolor : String
17+
textcolor : String,
1818

1919

2020

2121

22-
2322
});
2423
module.exports= mongoose.model('product',productSchema)

models/user-model.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ const userSchema = mongoose.Schema({
66
fullname : String,
77
email : String,
88
password :String,
9-
cart : {
10-
type: Array,
11-
default:[]
12-
},
13-
isadmin: Boolean,
9+
cart : [{
10+
type: mongoose.Schema.Types.ObjectId, //product ki id hogi
11+
ref : "product" // cart me product save kar paye
12+
}],
13+
isadmin: Boolean, // kya vo seller hei ye chek karane ke liye
1414
orders: {
1515
type: Array,
1616
default:[]

notes/basic.txt

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
git init ==> folders ko track karane ke liye
2+
jab ham commit kare to nodemodule or .env file ko git gitignore jaroor kare
3+
git add karane par jo khali folders hote hei vo terck nahi hote create a ==> .gitkeep
4+
form me valid info ko check karne ke liye validiter ka use hota he ==> mongoose.validiter
5+
environment variable "development" ko change kar sakte hei yese routes bana sakte hei jo sirf agar "development" fease chalu ho to hi chale iska maksad hei ki koi dusara owner create na kar paye
6+
ese kai environment evariable bana sakte hei expl "development","production"...
7+
8+
9+
"dependencies": {
10+
"bcrypt": "^5.1.1", --------------------- password ko bcrypt karne ke liye
11+
"config": "^3.3.11", --------------------?
12+
"cookie-parser": "^1.4.6",--------------- login logout karane ke kam aata hei, cookie set karta hei
13+
"debug": "^4.3.5", ---------------------?
14+
"dotenv": "^16.4.5", ------------------- environment variable handel karne ke liye
15+
"ejs": "^3.1.10", ---------------------- ejs pages ko run karne ke liye
16+
"express": "^4.19.2",-------------------- backend connect karne ke liye req se lekar kya res bhejana hei vo saara kam
17+
"jsonwebtoken": "^9.0.2", --------------- ?
18+
"mongoose": "^8.4.1", ------------------- mongodb database se connect karane ke liye
19+
"multer": "^1.4.5-lts.1"----------------- files upload karne ke liye
20+
}
21+
22+
23+
brown
24+
text #774F3D
25+
penal #DEBEAE
26+
bg-color #F4DDD2
27+
28+
29+
lightblue
30+
text #48606E
31+
penal #D3E4EE
32+
bg-color #F3F8FB
33+
34+
35+
khakhi-brown
36+
text #5F4A30
37+
penal #C5B095
38+
bg-color #DED0BF
39+
40+
41+
PINK
42+
text #816264
43+
penal #E3C4C6
44+
bg-color #F4E0E1
45+
46+
47+
48+
49+
user= {
50+
51+
cart[
52+
{productId},
53+
{productId},
54+
{productId},
55+
{productId},
56+
]
57+
58+
59+
}

notes/routesPages.txt

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/ ==> registar and login
2+
/shop ==> shop
3+
/user/cart ==> cart
4+
/admin ==> admin panel
5+
/owner/products ==> show all products
6+
/owner/admin ==> show admin panel to create products

0 commit comments

Comments
 (0)