Viewing File: /home/ubuntu/efiexchange-node-base/src/middleware/walletApp.middleware.ts

import { NextFunction, Request, Response } from "express";
import jwt from "jsonwebtoken";
import config from "config";
import logger from "../utils/logger";
const { makeDb } = require('mysql-async-simple');
const mysql = require("mysql");

let connection = mysql.createConnection({
	host: config.get("DB_HOST"),
	database: config.get("DB_DATABASE"),
	user: config.get("DB_USER"),
	password: config.get("DB_PASSWORD")
});

const db = makeDb();
db.connect(connection);

export async function walletAppAuthRequest(req: any, res: any, next: NextFunction) {
	try {
		const token = req.body.token || req.query.token || req.headers["x-access-token"];

		const id = req.body.id;

		if (!id) {
			return res.sendError("ID is required for authentication", 1000);
		}
		if (!token) {
			return res.sendError("A token is required for authentication", 1000);
		}
		try {
			let user = await db.query(connection, `SELECT * FROM users WHERE id = '${id}'`);
			if (user.length <= 0) {
				return res.sendError("User details not found", 1002);
			}
			user = user.length > 0 ? user[0] : {};
			if (user.token != token) {
				return res.sendError("Invalid Token", 1001);
			}
			if (user.token_expiry < Math.floor(Date.now()/1000)) {
				return res.sendError("Loggin session expired", 1003);
			}
		} catch (err) {
			return res.sendError("Invalid Token", 1004);
		}
		return next();
	} catch (ex) {
		return res.sendError(ex.message, 200);
	}
}
Back to Directory File Manager