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
21 changes: 18 additions & 3 deletions controllers/userController.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const config = require("../config/config");
const users = require("../model/userModel");
const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");
const {updateuser1,getdata,matchpass,modifyPass,verifyemail,userlogin,usersignup,user_list} = require("../services/userservices")
const {updateuser1,getdata,useraddress,matchpass,modifyPass,verifyemail,userlogin,usersignup,user_list} = require("../services/userservices")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use classes or object and keep everything inside it a lot of import like this doesn't look good


exports.signup = async (req, res) => {
const data = await usersignup(req.body)
Expand Down Expand Up @@ -59,14 +59,14 @@ exports.updateuser = async (req, res) => {
res.status(201).send({success: "true", message: "user updated successfully" });
} catch (error) {
res.status(402).send({success: "false", message: "user not updated" });
}
}
};

//get user data with the help of token (without body)

exports.getuser = async (req, res) => {
try {
const userData = await getdata(req.data.email);
const userData = await getdata(req.data.id);
res.send(userData)
} catch (error) {
console.log(error)
Expand Down Expand Up @@ -97,4 +97,19 @@ exports.userlist = async (req, res) => {
}catch(error){
res.status(401).send({success: "false", message: "userdata not found" ,error});
}
};

// user address

exports.user_address = async (req,res)=>{
try{
const data = await useraddress(req.body,req.data.id)
if(data){
res.status(401).send({success: "true", message: "address found" ,error});
}else{
res.status(401).send({success: "false", message: "address not inserted" ,error});
}
}catch(error){
res.status(401).send({success: "false", message:error});
}
};
1 change: 0 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// require("dotenv").config()
const config = require("./config/config")
const express = require("express");
const app = express();
Expand Down
9 changes: 4 additions & 5 deletions middleware/mid_register.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,14 @@ exports.checkAuth = async (req, res, next) => {
if (typeof bearerHeader !== "undefined") {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

improve else if conditions here doesn't look good here

const bearer = bearerHeader.split(" ");
const token = bearer[1];
const {email}=jwt.verify(token, config.secretKey);
const {email,id}=jwt.verify(token, config.secretKey);
if(email){
req.data= {email, token}
req.data= {email, token, id}
next();
}else{
res.status(403).send({"success":"false", msg:"email not found in token"})
next();
}

} else {
res.status(401).send({"success":"false", msg:"email not found in token"})
next();
}
};
26 changes: 26 additions & 0 deletions model/address.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
const mongoose=require("mongoose");
const userModel = require("./userModel");
const user = mongoose.Schema({
user_id:{
type:'ObjectId',

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

createdat and updated At field should be there

required:true,
ref: 'userModel'
},
address:{
type:String
},
city:{
type:String
},
state:{
type:String
},
pin_code:{
type:Number
},
phone:{
type:Number
}
});

module.exports = mongoose.model("useraddress",user)
5 changes: 3 additions & 2 deletions model/userModel.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,9 @@ const user = mongoose.Schema({
required:true
},
address:{
type:String,
required:true
type:'ObjectId',
required:true,
ref:"useraddress"
},
});

Expand Down
2 changes: 2 additions & 0 deletions routes/register.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@ router.use('/changePassword',mid_register.checkAuth)
router.use('/updateuser',mid_register.checkAuth)
router.use('/get',mid_register.checkAuth)
router.use('/delete',mid_register.checkAuth)
router.use('/address',mid_register.checkAuth)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

move middleware in separate file instead route

router.use('/verify-reset-password',mid_register.checkAuth)

router.get("/register",mid_register.REG_MIDDLE,userController.signup);
router.get("/get",userController.getuser);
router.get("/list/:page",userController.userlist);
router.post("/auth/signin",userController.login_user);
router.post("/address",userController.user_address);
router.put("/changePassword",userController.changePass);
router.put("/verify-reset-password",userController.forgetPass);
router.put("/updateuser",userController.updateuser);
Expand Down
27 changes: 23 additions & 4 deletions services/userservices.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ const jwt = require("jsonwebtoken");
const bcrypt = require("bcryptjs");
const users = require("../model/userModel");
const userToken = require("../model/userToken");
const useradd = require("../model/address");

const getdata= async ({email})=>{
return await users.findOne(email);
const getdata= async (id)=>{
return await users.findOne({_id:id}).populate("address")
}

const deleteuser = async ()=>{
Expand Down Expand Up @@ -54,7 +55,7 @@ const modifyPass = async(email,data) =>{

const userlogin = async(data) =>{
const userData = await users.findOne({ email: data.email });
const pass = (userData.password === data.password)
const pass = bcrypt.compare(userData.password , data.password)

if(pass && userData){
const token = jwt.sign(
Expand Down Expand Up @@ -91,6 +92,23 @@ const user_list = async (page)=>{
const sliced_data = data.slice(firstindex, lastindex);
return sliced_data;
}

const useraddress = async (data,ID) => {
let user = new useradd({
user_id: ID,
address: data.address,
city: data.city,
state: data.state,
pin_code: data.pin_code,
phone: data.phone
});
if(user){

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are you checking user here ? you need to verify data

await user.save();
// await user.findByIdAndUpdate({})
}else{
return false;
}
};
module.exports={
getdata,
deleteuser,
Expand All @@ -100,5 +118,6 @@ module.exports={
verifyemail,
user_list,
userlogin,
usersignup
usersignup,
useraddress
}