Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change signature with jwt #431

Merged
merged 2 commits into from
Mar 7, 2024
Merged
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
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
Loading