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
19 changes: 0 additions & 19 deletions app.js

This file was deleted.

19 changes: 19 additions & 0 deletions app.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import express,{Application} from "express"
import service from "./config/constant"
import cookieparser from "cookie-parser"
import {router} from"./routes/userRoute"
import {redisconnect} from"./config/redisconfig"
import {dbConnection} from "./config/dbconnect"

const app: Application = express();

app.use(express.json())
app.use(cookieparser())
app.use("/user", router)

dbConnection();
redisconnect();

app.listen(service.PORT, () => {
console.log("server is running");
});
15 changes: 15 additions & 0 deletions build/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import express from "express";
import service from "./config/constant";
import cookieparser from "cookie-parser";
import { router } from "./routes/userRoute";
import { redisconnect } from "./config/redisconfig";
import { dbConnection } from "./config/dbconnect";
const app = express();
app.use(express.json());
app.use(cookieparser());
app.use("/user", router);
dbConnection();
redisconnect();
app.listen(service.PORT, () => {
console.log("server is running");
});
24 changes: 24 additions & 0 deletions build/config/constant.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import dotenv from "dotenv";
dotenv.config();
export default {
PORT: process.env.PORT_NO,
ACCESS_TOKEN_SECRET: process.env.ACCESS_TOKEN_SECRET,
REFRESH_TOKEN_SECRET: process.env.REFRESH_TOKEN_SECRET,
db_url: process.env.DB_URL,
ACCESS_TOKEN_EXPIRES: process.env.JWT_EXPIRY,
FPASS_EXPIRESIN: process.env.FPASS_EXPIRY,
API_KEY: process.env.APIKEY,
EMAIL_FROM: process.env.emailFrom,
URL: process.env.url,
URL1: process.env.url1,
snapURL: process.env.snapurl,
EMAIL_PASS: process.env.pass,
DB: process.env.database,
PASS: process.env.password,
CLIENT_ID: process.env.CLIENT_ID,
CLIENT_SECERET: process.env.CLIENT_SECERET,
REDIRECT_URI: process.env.REDIRECT_URI,
REFRESH_TOKEN: process.env.REFRESH_TOKEN,
USER: process.env.USER,
};
//export const port : pr
35 changes: 35 additions & 0 deletions build/config/dbconnect.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import mysql from 'mysql2';
import config from './constant.js';
export const con = mysql.createConnection({
host: "localhost",
user: "root",
database: config.DB,
password: config.PASS
});
export const dbConnection = () => __awaiter(void 0, void 0, void 0, function* () {
try {
yield con.connect();
const userTable = `CREATE TABLE IF NOT EXISTS users (
username VARCHAR(255),
firstname VARCHAR(255),
lastname VARCHAR(255),
email VARCHAR(255),
mobile VARCHAR(255),
password VARCHAR(255)
)`;
con.query(userTable);
console.log("db connected");
}
catch (error) {
console.log(error);
}
});
20 changes: 20 additions & 0 deletions build/config/redisconfig.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { createClient } from 'redis';
export const client = createClient();
export const redisconnect = () => __awaiter(void 0, void 0, void 0, function* () {
try {
yield client.connect();
console.log("redis connected");
}
catch (error) {
console.log(error);
}
});
144 changes: 144 additions & 0 deletions build/controllers/userController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import * as userServices from "../services/userservices";
export const signup = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
const data = yield userServices.usersignup(req.body);
if (data) {
res.status(201).send({ success: true, msg: "User registered successfully", data: data });
}
});
export const signin = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
const loggedin = yield userServices.userlogin(req.body);
if (!loggedin) {
return res.status(401).send({ success: false, msg: "Email or Password is wrong" });
}
else {
// Assigning refresh token in http-only cookie
res.cookie('refresh_token', loggedin.refreshToken, { httpOnly: true,
sameSite: 'none', secure: true,
maxAge: 24 * 60 * 60 * 1000
});
res.status(200).send(loggedin.accessToken);
}
});
export const changePass = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
const validpass = yield userServices.matchpass(req.body);
if (!validpass) {
return res.status(401).send({ success: "failed", message: "password doesn't match" });
}
try {
userServices.modifyPass(req.data.email, req.body.password);
res.status(201).send({ success: "true", message: "password changed" });
}
catch (error) {
res.status(401).send({ success: "false", message: "password is not changed" });
}
});
export const verifyuser = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
const validuser = yield userServices.verifyemail(req.body.email);
if (!validuser) {
res.status(401).send({ success: "false", message: "user doesn't exist" });
}
else {
res.status(201).send({ success: "true", message: "user exist", token: validuser });
}
});
export const forgetPass = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
const validpass = yield userServices.matchpass(req.body);
if (!validpass) {
return res.status(401).send({ success: "failed", message: "password doesn't match" });
}
try {
userServices.modifyPass(req.data.email, req.body.password);
res.status(201).send({ success: "true", message: "password updated" });
}
catch (error) {
res.status(401).send({ success: "false", message: "password is not updated" });
}
});
export const updateuser = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
try {
const response = yield userServices.updateuser1(req.data.email, req.body);
res.status(201).send({ success: "true", message: "user updated successfully", response });
}
catch (error) {
res.status(402).send({ success: "false", message: "user not updated" });
}
});
//get user data with the help of token (without body)
export const getuser = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
try {
const userData = yield userServices.getdata(req.data.id);
res.send(userData);
}
catch (error) {
console.log(error);
res.status(402).send(error);
}
});
//get user data with the help of token (without email)
export const deluser = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
try {
yield userServices.deleteuser(req.data.id);
res.status(201).send({ success: "true", message: "user deleted" });
}
catch (error) {
console.log(error);
res.status(402).send(error);
}
});
// get user in the form of list (page wise)
export const userlist = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
try {
const data = yield userServices.user_list(+req.params.page);
if (data) {
res.status(201).send({ success: "true", message: data });
}
}
catch (error) {
res.status(401).send({ success: "false", message: "userdata not found", error });
}
});
// user address
export const user_address = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
try {
const data = yield userServices.useraddress(req.body, req.data.id);
if (data) {
res.status(201).send({ success: "true", message: "address saved" });
}
else {
res.status(401).send({ success: "false", message: "address not saved" });
}
}
catch (error) {
res.status(401).send({ success: "false", message: error });
}
});
export const profileImg = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
if (req.file) {
res.status(201).send({ success: "true", message: "image uploaded" });
}
else {
res.status(401).send({ success: "false", message: "failed" });
}
});
export const refreshuser = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
try {
const token = yield userServices.generateToken(req.data);
res.cookie('refresh_token', token.refreshToken, { httpOnly: true,
sameSite: 'none', secure: true,
maxAge: 24 * 60 * 60 * 1000
});
res.status(200).send(token.accessToken);
}
catch (error) {
res.status(401).send({ success: "false", error });
}
});
1 change: 1 addition & 0 deletions build/interfaces.td.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export {};
69 changes: 69 additions & 0 deletions build/middleware/usermiddle.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import config from "../config/constant";
import multer from "multer";
import { con } from "../config/dbconnect";
import { client } from "../config/redisconfig";
import jwt from "jsonwebtoken";
export const verifyEmail = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
con.query(`SELECT * FROM users WHERE email ='${req.body.email}'`, (err, result) => {
if (err) {
res.send(err);
}
else if (result == null) {
console.log("email does not exist ");
next();
}
else {
console.log(result);
return res.status(409).send({ success: false, msg: "Email already exist" });
}
});
});
export const checkAuth = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
const bearerHeader = req.headers["authorization"];
if (typeof bearerHeader !== "undefined") {
const bearer = bearerHeader.split(" ");
const token = bearer[1];
const { email, id } = jwt.verify(token, config.ACCESS_TOKEN_SECRET);
req.data = { email, token, id };
next();
}
else {
return res.status(409).send({ success: false, msg: "invalid token" });
}
});
export const verifyRT = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
var _a;
if ((_a = req.cookies) === null || _a === void 0 ? void 0 : _a.refresh_token) {
// Destructuring refreshToken from cookie
const refreshToken = req.cookies.refresh_token;
// Verifying refresh token
const tokenData = yield client.hGetAll(refreshToken);
req.data = tokenData;
client.del(refreshToken);
next();
}
else {
return res
.status(406)
.json({ message: "Unauthorized ! Refresh token not found" });
}
});
export const upload = multer({
storage: multer.diskStorage({
destination: function (req, file, cb) {
cb(null, "uploads");
},
filename: function (req, file, cb) {
cb(null, file.fieldname + "-" + Date.now() + ".jpg");
},
}),
}).single("user_file");
7 changes: 1 addition & 6 deletions routes/userRoute.js → build/routes/userRoute.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import express from "express";
export const router = express.Router();
import * as mid from "../middleware/usermiddle.js";
import * as controller from "../controllers/userController.js";

router.get("/register", controller.signup);
router.get("/register", mid.verifyEmail, controller.signup);
router.get("/get", mid.checkAuth, controller.getuser);
router.get("/list/:page", controller.userlist);
router.post("/auth/signin", controller.signin);
Expand All @@ -14,7 +13,3 @@ router.put("/updateuser", mid.checkAuth, controller.updateuser);
router.put("/delete", mid.checkAuth, controller.deluser);
router.post("/forgot-password", controller.verifyuser);
router.put("/profile-image", mid.upload, controller.profileImg);
router.post("/fetch/flipkart/mobile", controller.flipkartMob);
router.post("/fetch/flipkart/mobile/all", controller.flipkartAllMob);
router.post("/fetch/snapdeal/t-shirt", controller.snapdealTshirt);
router.get("/aggregate", controller.aggregate);
Loading