Skip to content

Commit

Permalink
Change signature with jwt (#431)
Browse files Browse the repository at this point in the history
  • Loading branch information
hichri-louay committed Mar 7, 2024
2 parents 9cf7e69 + 48f5f1c commit 93bf5ab
Show file tree
Hide file tree
Showing 5 changed files with 109 additions and 95 deletions.
86 changes: 38 additions & 48 deletions controllers/external.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ const {
formatTokenBalance,
getNativeBalance,
} = require('../web3/wallets')

const { generateAccessTokenExternal } = require('../helpers/utils')
const { Constants, TronConstant } = require('../conf/const')
const {
getInstagramUserName,
Expand Down Expand Up @@ -86,22 +88,33 @@ exports.createUserFromExternalWallet = async (req, res) => {
walletId: req.body.wallet,
})
const savedUser = await user.save()

const token = generateAccessTokenExternal({ _id: savedUser.UserId })
var params = {
user: savedUser,
token,
}
return makeResponseData(
res,
200,
'User created successfully',
savedUser
params
)
}
//await externalUpdateStatforUser(userExist.UserId)
else
else {
const token = generateAccessTokenExternal({ _id: userExist.UserId })

var params = {
user: userExist,
token,
}
return makeResponseData(
res,
200,
'User signed In successfully',
userExist
params
)
}
} catch (err) {
return makeResponseError(
res,
Expand All @@ -123,10 +136,8 @@ exports.campaignsPictureUploadExternal = multer({

exports.externalSocialAccounts = async (req, res) => {
try {
const user = await UserExternalWallet.findOne({
walletId: req.address,
})

const _id = req.user._id
const user = await UserExternalWallet.findOne({ _id })
let UserId = user.UserId
let networks = {}
let [channelsGoogle, channelsTwitter] = await Promise.all([
Expand Down Expand Up @@ -177,9 +188,8 @@ exports.externalSocialAccounts = async (req, res) => {

exports.externalDeleteTiktokChannel = async (req, res) => {
try {
let user = await UserExternalWallet.findOne({
walletId: req.address,
})
const _id = req.user._id
const user = await UserExternalWallet.findOne({ _id })

let tiktokProfiles = await TikTokProfile.find({
userId: user.UserId,
Expand All @@ -202,9 +212,8 @@ exports.externalDeleteTiktokChannel = async (req, res) => {

exports.externalDeleteTiktokChannels = async (req, res) => {
try {
let user = await UserExternalWallet.findOne({
walletId: req.address,
})
const _id = req.user._id
const user = await UserExternalWallet.findOne({ _id })

let tiktokProfiles = await TikTokProfile.find({
userId: user.UserId,
Expand All @@ -227,12 +236,10 @@ exports.externalDeleteTiktokChannels = async (req, res) => {

exports.externalDeleteGoogleChannel = async (req, res) => {
try {
const UserId = await UserExternalWallet.findOne({
walletId: req.address,
})
const user = await UserExternalWallet.findOne({ _id: req.user._id })
let _id = req.params.id
let googleProfile = await GoogleProfile.findOne({ _id }).lean()
if (googleProfile?.UserId !== UserId.UserId)
if (googleProfile?.UserId !== user.UserId)
return makeResponseError(res, 401, 'unauthorized')
else {
await GoogleProfile.deleteOne({ _id })
Expand All @@ -249,9 +256,7 @@ exports.externalDeleteGoogleChannel = async (req, res) => {

exports.externalDeleteGoogleChannels = async (req, res) => {
try {
const user = await UserExternalWallet.findOne({
walletId: req.address,
})
const user = await UserExternalWallet.findOne({ _id: req.user._id })
const result = await GoogleProfile.deleteMany({
UserId: user.UserId,
})
Expand All @@ -271,9 +276,7 @@ exports.externalDeleteGoogleChannels = async (req, res) => {

exports.externalDeleteFacebookChannels = async (req, res) => {
try {
const user = await UserExternalWallet.findOne({
walletId: req.address,
})
const user = await UserExternalWallet.findOne({ _id: req.user._id })
const result = await FbPage.deleteMany({ UserId: user.UserId })
if (result.deletedCount === 0) {
return makeResponseError(res, 204, 'No channel found')
Expand All @@ -291,9 +294,7 @@ exports.externalDeleteFacebookChannels = async (req, res) => {

exports.externalDeleteFacebookChannel = async (req, res) => {
try {
const user = await UserExternalWallet.findOne({
walletId: req.address,
})
const user = await UserExternalWallet.findOne({ _id: req.user._id })
let _id = req.params.id
let facebookProfile = await FbPage.findOne({ _id })
if (facebookProfile?.UserId !== user.UserId)
Expand All @@ -313,9 +314,7 @@ exports.externalDeleteFacebookChannel = async (req, res) => {

exports.externalDeleteLinkedinChannels = async (req, res) => {
try {
const user = await UserExternalWallet.findOne({
walletId: req.address,
})
const user = await UserExternalWallet.findOne({ _id: req.user._id })
const result = await LinkedinProfile.deleteMany({
userId: user.UserId,
})
Expand All @@ -335,9 +334,7 @@ exports.externalDeleteLinkedinChannels = async (req, res) => {

exports.externalDeleteLinkedinChannel = async (req, res) => {
try {
const user = await UserExternalWallet.findOne({
walletId: req.address,
})
const user = await UserExternalWallet.findOne({ _id: req.user._id })
let { organization, linkedinId } = req.params
let linkedinProfile = await LinkedinProfile.findOne(
{ userId: user.UserId, linkedinId },
Expand Down Expand Up @@ -367,9 +364,7 @@ exports.externalDeleteLinkedinChannel = async (req, res) => {

exports.externalDeleteTwitterChannels = async (req, res) => {
try {
const user = await UserExternalWallet.findOne({
walletId: req.address,
})
const user = await UserExternalWallet.findOne({ _id: req.user._id })
const result = await TwitterProfile.deleteMany({
UserId: user.UserId,
})
Expand All @@ -389,9 +384,7 @@ exports.externalDeleteTwitterChannels = async (req, res) => {

exports.externalDeleteTwitterChannel = async (req, res) => {
try {
const user = await UserExternalWallet.findOne({
walletId: req.address,
})
const user = await UserExternalWallet.findOne({ _id: req.user._id })
let _id = req.params.id
let twitterProfile = await TwitterProfile.findOne({ _id })
if (twitterProfile?.UserId !== user.UserId)
Expand All @@ -411,7 +404,7 @@ exports.externalDeleteTwitterChannel = async (req, res) => {

exports.externalGetLinks = async (req, res) => {
try {
const accountData = req.body.wallet_id
const accountData = req.user.walletId
const limit = +req.query.limit || 50
const page = +req.query.page || 1
const skip = limit * (page - 1)
Expand Down Expand Up @@ -552,9 +545,7 @@ exports.externalGetOneLinks = async (req, res) => {

module.exports.externalVerifyLink = async (req, response) => {
try {
const user = await UserExternalWallet.findOne({
walletId: req.address,
})
const user = await UserExternalWallet.findOne({ _id: req.user._id })
var userId = user.UserId
var { typeSN, idUser, idPost } = req.params
let profileLinedin = null
Expand Down Expand Up @@ -736,7 +727,8 @@ module.exports.externalVerifyLink = async (req, response) => {
module.exports.externalSaveCampaign = async (req, res) => {
try {
let campaign = req.body
const user = await UserExternalWallet.findOne({ walletId: req.address })
const _id = req.user._id
const user = await UserExternalWallet.findOne({ _id })
campaign.idNode = user.UserId
campaign.createdAt = Date.now()
campaign.updatedAt = Date.now()
Expand Down Expand Up @@ -939,9 +931,7 @@ module.exports.externalAddKits = async (req, res) => {
}
module.exports.externalApply = async (req, res) => {
try {
const user = await UserExternalWallet.findOne({
walletId: req.address,
})
const user = await UserExternalWallet.findOne({ _id: req.user._id })
var id = user.UserId
// var pass = req.body.pass
var {
Expand Down Expand Up @@ -1519,7 +1509,7 @@ exports.getBalanceUserExternal = async (req, res) => {
module.exports.externalDeleteDraft = async (req, res) => {
try {
let user = await UserExternalWallet.findOne({
walletId: req.address,
_id: req.user._id,
})
let _id = req.params.id
let idUser = user.UserId
Expand Down
3 changes: 3 additions & 0 deletions helpers/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -429,3 +429,6 @@ exports.timeout = async (ms) =>
//global function that generates user acessToken
exports.generateAccessToken = (user) =>
jwt.sign(user, process.env.REFRESH_TOKEN_SECRET, { expiresIn: '3h' })

exports.generateAccessTokenExternal = (user) =>
jwt.sign(user, process.env.REFRESH_TOKEN_SECRET, { expiresIn: '7d' })
27 changes: 27 additions & 0 deletions middleware/passport.middleware.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const crypto = require('crypto')
var rp = require('axios')
const jwt = require('jsonwebtoken')
var User = require('../model/user.model')
var UserExternalWallet = require('../model/userExternalWallet.model.js')
var FbProfile = require('../model/fbProfile.model')
var TwitterProfile = require('../model/twitterProfile.model')
var GoogleProfile = require('../model/googleProfile.model')
Expand Down Expand Up @@ -1038,5 +1039,31 @@ module.exports.verifyAuthGetQuote = (req, res, next) => {
next()
}
}
module.exports.verifyAuthExternal = (req, res, next) => {
const authHeader = req.headers['authorization']
const token = authHeader?.split(' ')[1]
if (!token) {
return responseHandler.makeResponseError(res, 401, 'token required')
}
jwt.verify(token, process.env.REFRESH_TOKEN_SECRET, async (err, user) => {
if (err) return res.json(err)
const nowInSeconds = Math.floor(Date.now() / 1000)
if (nowInSeconds > user.exp) {
return responseHandler.makeResponseError(res, 401, 'Expired token')
} else {
let _id = user?._id ? user?._id : user?._doc._id
newUser = await UserExternalWallet.findOne({ UserId: _id })

if (!newUser) {
return responseHandler.makeResponseError(
res,
401,
'Invalid token'
)
}
req.user = newUser
next()
}
})
}
module.exports.createUser = createUser
Loading

0 comments on commit 93bf5ab

Please sign in to comment.