Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion app.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
const express = require("express");
const service = require("./config/constant.js");
const userRoute = require("./routes/userRoute.js");
const rdcon = require("./config/redisconfig.js")

const app = express();

app.use(express.json());

app.use("/user", userRoute)

rdcon.redisconnect();
app.listen(service.port,()=>{
console.log("server is running");
})
17 changes: 17 additions & 0 deletions config/redisconfig.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
const { createClient } = require('redis');

const client = createClient();

const redisconnect = async () =>{
try {
await client.connect();
console.log("database connected");
} catch (error) {
console.log(error);
}
}

module.exports = {
client,
redisconnect
}
11 changes: 10 additions & 1 deletion controllers/userController.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ exports.signin = async (req, res) => {
res.cookie('jwt', loggedin.refreshToken, { httpOnly: true,
sameSite: 'None', secure: true,
maxAge: 24 * 60 * 60 * 1000
});
});
res.status(200).send(loggedin.accessToken);
}
};
Expand Down Expand Up @@ -165,4 +165,13 @@ exports.aggregate = async (req,res) => {
} catch (error) {
res.status(401).send({success: "false",error});
}
}

exports.refreshuser = async (req,res) => {
try {
const token = await userServices.generateToken(req.data.email)
res.status(200).send(token);
} catch (error) {
res.status(401).send({success: "false",error});
}
}
28 changes: 26 additions & 2 deletions middleware/usermiddle.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ require("dotenv").config();
const jwt = require("jsonwebtoken");
const config = require("../config/constant");
const multer = require("multer")
const {User} = require("../models")
const {User} = require("../models");

exports.verifyEmail = async (req, res, next) => {
const userData = await User.findOne({where:{ email: req.body.email }});
Expand All @@ -19,14 +19,38 @@ exports.checkAuth = async (req, res, next) => {
if (typeof bearerHeader !== "undefined") {
const bearer = bearerHeader.split(" ");
const token = bearer[1];
const {email,id}=jwt.verify(token, config.secretKey);
const {email,id}=jwt.verify(token, config.ACCESS_TOKEN_SECRET);
req.data= {email, token, id}
next();
} else {
next();
}
};

exports.verifyRT = async (req,res,next) =>{
if (req.cookies?.jwt) {

// Destructuring refreshToken from cookie
const refreshToken = req.cookies.jwt;

// Verifying refresh token
jwt.verify(refreshToken, config.REFRESH_TOKEN_SECRET,
(err, decoded) => {
if (err) {
// Wrong Refesh Token
return res.status(406).json({ message: 'Unauthorized' });
}
else {
// Correct token we send a new access token
req.data = email;
next();
}
})
} else {
return res.status(406).json({ message: 'Unauthorized' });
}
}

exports.upload = multer({
storage:multer.diskStorage({
destination: function (req,file,cb){
Expand Down
10 changes: 5 additions & 5 deletions migrations/20231125074458-create-address.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ module.exports = {
},
user_id: {
type: Sequelize.INTEGER,
references:{
model:"Users",
key:"id",
as:"id"
}
// references:{
// model:"Users",
// key:"id",
// as:"id"
// }
},
address: {
type: Sequelize.STRING
Expand Down
3 changes: 2 additions & 1 deletion models/address.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ module.exports = (sequelize, DataTypes) => {
// define association here
address.belongsTo(models.User, {
foreignKey: "user_id",
onDelete:"CASCADE"
onDelete:"CASCADE",
hooks:true
});
}
}
Expand Down
146 changes: 146 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"mysql2": "^3.6.5",
"nodemailer": "^6.9.7",
"nodemon": "^3.0.1",
"redis": "^4.6.11",
"sequelize": "^6.35.1",
"sequelize-cli": "^6.6.2"
},
Expand Down
2 changes: 2 additions & 0 deletions routes/userRoute.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ router.get("/register",mid.verifyEmail,controller.signup);
router.get("/get",mid.checkAuth,controller.getuser);
router.post("/auth/signin",controller.signin);
router.post("/address",mid.checkAuth,controller.user_address);
router.put("/delete",mid.checkAuth,controller.deluser);
router.put("/refresh",mid.verifyRT,controller.refreshuser);


module.exports = router
Loading