fix: fix login logic
This commit is contained in:
		
							parent
							
								
									143a76ac42
								
							
						
					
					
						commit
						cd493da3e8
					
				| 
						 | 
				
			
			@ -38,10 +38,19 @@ const assert = async (queueName, req, res) => {
 | 
			
		|||
                channel.consume(q.queue, function (msg) {
 | 
			
		||||
                    console.log(msg)
 | 
			
		||||
                    if (msg.properties.correlationId == correlationId) {
 | 
			
		||||
                        console.log(msg)
 | 
			
		||||
                        console.log(' [.] Got %s', msg.content.toString());
 | 
			
		||||
                        msg = JSON.parse(msg.content)
 | 
			
		||||
                        res.status(msg.status).send(msg.body)
 | 
			
		||||
                        console.log(msg.cookie)
 | 
			
		||||
                        if (msg.cookie) {
 | 
			
		||||
                            res.cookie("token", msg.cookie, {
 | 
			
		||||
                                httpOnly: true,
 | 
			
		||||
                                secure: true,
 | 
			
		||||
                                sameSite: "lax"
 | 
			
		||||
                            }).status(msg.status).send(msg.body)
 | 
			
		||||
                        }
 | 
			
		||||
                        else {
 | 
			
		||||
                            res.status(msg.status).send(msg.body)
 | 
			
		||||
                        }
 | 
			
		||||
                        setTimeout(function () {
 | 
			
		||||
                            connection.close();
 | 
			
		||||
                        }, 500);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,13 +2,7 @@ const express = require('express')
 | 
			
		|||
const router = express.Router()
 | 
			
		||||
const UserAPI = require('../apis/user-apis')
 | 
			
		||||
 | 
			
		||||
const test = async(req,res) => {
 | 
			
		||||
    await new Promise(resolve => setTimeout(resolve, 1000));
 | 
			
		||||
    res.send("hi")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
router.post('/login', UserAPI.loginUser)
 | 
			
		||||
router.post('/register', UserAPI.registerUser)
 | 
			
		||||
router.post('/test', test)
 | 
			
		||||
 | 
			
		||||
module.exports = router
 | 
			
		||||
							
								
								
									
										29
									
								
								auth/auth/auth.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								auth/auth/auth.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,29 @@
 | 
			
		|||
const jwt = require("jsonwebtoken")
 | 
			
		||||
const config = require('../config')
 | 
			
		||||
 | 
			
		||||
function authManager() {
 | 
			
		||||
    getUserID = function (token) {
 | 
			
		||||
        try {
 | 
			
		||||
            if (!token) {
 | 
			
		||||
                return 'Guest';
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                const verified = jwt.verify(token, config.JWT_SECRET)
 | 
			
		||||
                return verified.userId
 | 
			
		||||
            }
 | 
			
		||||
        } catch (err) {
 | 
			
		||||
            return 'Guest'
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    signToken = function (user) {
 | 
			
		||||
        return jwt.sign({
 | 
			
		||||
            userId: user._id
 | 
			
		||||
        }, config.JWT_SECRET);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return this;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const auth = authManager();
 | 
			
		||||
module.exports = auth;
 | 
			
		||||
| 
						 | 
				
			
			@ -2,10 +2,12 @@ const rabbitMQ = 'amqp://localhost'
 | 
			
		|||
const mongoURL = "mongodb://localhost:27017/users"
 | 
			
		||||
const mongoUser = ''
 | 
			
		||||
const mongoPassword = ''
 | 
			
		||||
const JWT_SECRET = ''
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
    rabbitMQ,
 | 
			
		||||
    mongoURL,
 | 
			
		||||
    mongoUser,
 | 
			
		||||
    mongoPassword
 | 
			
		||||
    mongoPassword,
 | 
			
		||||
    JWT_SECRET
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -3,6 +3,7 @@ const bcrypt = require("bcryptjs")
 | 
			
		|||
const User = require('./models/user-model')
 | 
			
		||||
const db = require('./db/db')
 | 
			
		||||
const config = require('./config')
 | 
			
		||||
const auth = require('./auth/auth')
 | 
			
		||||
 | 
			
		||||
const rabbitMQ = config.rabbitMQ
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -11,10 +12,47 @@ db.on('error', console.error.bind(console, "MongoDB Atlas connection error"))
 | 
			
		|||
 | 
			
		||||
const register = async (req) => {
 | 
			
		||||
  try {
 | 
			
		||||
    console.log(req);
 | 
			
		||||
    console.log("request: ", req);
 | 
			
		||||
    const { name, password, email, passwordVerify } = req;
 | 
			
		||||
    // TODO check password
 | 
			
		||||
    // TODO verify code?
 | 
			
		||||
    if (password.length < 6 || password.length > 16) {
 | 
			
		||||
      let res = {
 | 
			
		||||
        status: 400,
 | 
			
		||||
        body: {
 | 
			
		||||
          msg: "Password length must between 6 to 16."
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      return JSON.stringify(res);
 | 
			
		||||
    }
 | 
			
		||||
    if (password !== passwordVerify) {
 | 
			
		||||
      let res = {
 | 
			
		||||
        status: 400,
 | 
			
		||||
        body: {
 | 
			
		||||
          msg: "Passwords don't match."
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      return JSON.stringify(res);
 | 
			
		||||
    }
 | 
			
		||||
    const existingEmail = await User.findOne({ email: email });
 | 
			
		||||
    if (existingEmail) {
 | 
			
		||||
      let res = {
 | 
			
		||||
        status: 400,
 | 
			
		||||
        body: {
 | 
			
		||||
          msg: "An account with this email address already exists."
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      return JSON.stringify(res)
 | 
			
		||||
    }
 | 
			
		||||
    const existingName = await User.findOne({ name: name });
 | 
			
		||||
    if (existingName) {
 | 
			
		||||
      let res = {
 | 
			
		||||
        status: 400,
 | 
			
		||||
        body: {
 | 
			
		||||
          msg: "An account with the same name already exists."
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      return JSON.stringify(res)
 | 
			
		||||
    }
 | 
			
		||||
    const salt = await bcrypt.genSalt();
 | 
			
		||||
    const passwordHash = await bcrypt.hash(password, salt);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -24,10 +62,19 @@ const register = async (req) => {
 | 
			
		|||
      email: email,
 | 
			
		||||
      favorites: []
 | 
			
		||||
    });
 | 
			
		||||
    await newUser.save();
 | 
			
		||||
    const savedUser = await newUser.save();
 | 
			
		||||
 | 
			
		||||
    // LOGIN THE USER
 | 
			
		||||
    const token = auth.signToken(savedUser);
 | 
			
		||||
 | 
			
		||||
    let res = {
 | 
			
		||||
      status: 200,
 | 
			
		||||
      body: "ok"
 | 
			
		||||
      body: {
 | 
			
		||||
        name: savedUser.name,
 | 
			
		||||
        email: savedUser.email,
 | 
			
		||||
        msg: "ok"
 | 
			
		||||
      },
 | 
			
		||||
      cookie: token
 | 
			
		||||
    }
 | 
			
		||||
    return JSON.stringify(res);
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			@ -35,7 +82,9 @@ const register = async (req) => {
 | 
			
		|||
    console.error(err);
 | 
			
		||||
    let res = {
 | 
			
		||||
      status: 500,
 | 
			
		||||
      body: "server error"
 | 
			
		||||
      body: {
 | 
			
		||||
        msg: "server error"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return JSON.stringify(res)
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			@ -44,26 +93,34 @@ const register = async (req) => {
 | 
			
		|||
 | 
			
		||||
const login = async (req) => {
 | 
			
		||||
  try {
 | 
			
		||||
    console.log(req);
 | 
			
		||||
    console.log("request: ", req);
 | 
			
		||||
    const { email, password } = req;
 | 
			
		||||
 | 
			
		||||
    const user = await User.findOne({ email: email })
 | 
			
		||||
    console.log(user)
 | 
			
		||||
    console.log(!user)
 | 
			
		||||
    if (!user) {
 | 
			
		||||
      let res = {
 | 
			
		||||
        status: 500,
 | 
			
		||||
        body: "User does not exist!"
 | 
			
		||||
        body: {
 | 
			
		||||
          msg: "User does not exist!"
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      return JSON.stringify(res)
 | 
			
		||||
    }
 | 
			
		||||
    console.log(user)
 | 
			
		||||
    const match = await bcrypt.compare(password, user.passwordHash)
 | 
			
		||||
    if (match) {
 | 
			
		||||
      console.log("user login successful")  // TODO JWT
 | 
			
		||||
      console.log("user login successful")
 | 
			
		||||
      const token = auth.signToken(user);
 | 
			
		||||
      let res = {
 | 
			
		||||
        status: 200,
 | 
			
		||||
        body: {
 | 
			
		||||
          name: user.name
 | 
			
		||||
        }
 | 
			
		||||
          name: user.name,
 | 
			
		||||
          email: user.email,
 | 
			
		||||
          msg: "ok"
 | 
			
		||||
        },
 | 
			
		||||
        cookie: token
 | 
			
		||||
      }
 | 
			
		||||
      return JSON.stringify(res)
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -71,7 +128,9 @@ const login = async (req) => {
 | 
			
		|||
      console.log("user login failed, wrong password")
 | 
			
		||||
      let res = {
 | 
			
		||||
        status: 401,
 | 
			
		||||
        body: "wrong password"
 | 
			
		||||
        body: {
 | 
			
		||||
          msg: "wrong password"
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      return JSON.stringify(res)
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -80,7 +139,9 @@ const login = async (req) => {
 | 
			
		|||
    console.error(err);
 | 
			
		||||
    let res = {
 | 
			
		||||
      status: 500,
 | 
			
		||||
      body: "server error"
 | 
			
		||||
      body: {
 | 
			
		||||
        msg: "server error"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return JSON.stringify(res)
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										186
									
								
								auth/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										186
									
								
								auth/package-lock.json
									
									
									
										generated
									
									
									
								
							| 
						 | 
				
			
			@ -11,6 +11,7 @@
 | 
			
		|||
      "dependencies": {
 | 
			
		||||
        "amqplib": "^0.10.3",
 | 
			
		||||
        "bcryptjs": "^2.4.3",
 | 
			
		||||
        "jsonwebtoken": "^8.5.1",
 | 
			
		||||
        "mongoose": "^6.6.1",
 | 
			
		||||
        "pg": "^8.8.0"
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			@ -119,6 +120,11 @@
 | 
			
		|||
        "ieee754": "^1.1.13"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/buffer-equal-constant-time": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/buffer-more-ints": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -161,6 +167,14 @@
 | 
			
		|||
        "node": ">=0.10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/ecdsa-sig-formatter": {
 | 
			
		||||
      "version": "1.0.11",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
 | 
			
		||||
      "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "safe-buffer": "^5.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/ieee754": {
 | 
			
		||||
      "version": "1.2.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -195,11 +209,86 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/jsonwebtoken": {
 | 
			
		||||
      "version": "8.5.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
 | 
			
		||||
      "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "jws": "^3.2.2",
 | 
			
		||||
        "lodash.includes": "^4.3.0",
 | 
			
		||||
        "lodash.isboolean": "^3.0.3",
 | 
			
		||||
        "lodash.isinteger": "^4.0.4",
 | 
			
		||||
        "lodash.isnumber": "^3.0.3",
 | 
			
		||||
        "lodash.isplainobject": "^4.0.6",
 | 
			
		||||
        "lodash.isstring": "^4.0.1",
 | 
			
		||||
        "lodash.once": "^4.0.0",
 | 
			
		||||
        "ms": "^2.1.1",
 | 
			
		||||
        "semver": "^5.6.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=4",
 | 
			
		||||
        "npm": ">=1.4.28"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/jwa": {
 | 
			
		||||
      "version": "1.4.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
 | 
			
		||||
      "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "buffer-equal-constant-time": "1.0.1",
 | 
			
		||||
        "ecdsa-sig-formatter": "1.0.11",
 | 
			
		||||
        "safe-buffer": "^5.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/jws": {
 | 
			
		||||
      "version": "3.2.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
 | 
			
		||||
      "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "jwa": "^1.4.1",
 | 
			
		||||
        "safe-buffer": "^5.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/kareem": {
 | 
			
		||||
      "version": "2.4.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.4.1.tgz",
 | 
			
		||||
      "integrity": "sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/lodash.includes": {
 | 
			
		||||
      "version": "4.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
 | 
			
		||||
      "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/lodash.isboolean": {
 | 
			
		||||
      "version": "3.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/lodash.isinteger": {
 | 
			
		||||
      "version": "4.0.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
 | 
			
		||||
      "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/lodash.isnumber": {
 | 
			
		||||
      "version": "3.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/lodash.isplainobject": {
 | 
			
		||||
      "version": "4.0.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
 | 
			
		||||
      "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/lodash.isstring": {
 | 
			
		||||
      "version": "4.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/lodash.once": {
 | 
			
		||||
      "version": "4.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/memory-pager": {
 | 
			
		||||
      "version": "1.5.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -442,6 +531,14 @@
 | 
			
		|||
        "node": ">=6"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/semver": {
 | 
			
		||||
      "version": "5.7.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
 | 
			
		||||
      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "semver": "bin/semver"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/sift": {
 | 
			
		||||
      "version": "16.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -608,6 +705,11 @@
 | 
			
		|||
        "ieee754": "^1.1.13"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "buffer-equal-constant-time": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
 | 
			
		||||
    },
 | 
			
		||||
    "buffer-more-ints": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -636,6 +738,14 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw=="
 | 
			
		||||
    },
 | 
			
		||||
    "ecdsa-sig-formatter": {
 | 
			
		||||
      "version": "1.0.11",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
 | 
			
		||||
      "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "safe-buffer": "^5.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "ieee754": {
 | 
			
		||||
      "version": "1.2.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -656,11 +766,82 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "jsonwebtoken": {
 | 
			
		||||
      "version": "8.5.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
 | 
			
		||||
      "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "jws": "^3.2.2",
 | 
			
		||||
        "lodash.includes": "^4.3.0",
 | 
			
		||||
        "lodash.isboolean": "^3.0.3",
 | 
			
		||||
        "lodash.isinteger": "^4.0.4",
 | 
			
		||||
        "lodash.isnumber": "^3.0.3",
 | 
			
		||||
        "lodash.isplainobject": "^4.0.6",
 | 
			
		||||
        "lodash.isstring": "^4.0.1",
 | 
			
		||||
        "lodash.once": "^4.0.0",
 | 
			
		||||
        "ms": "^2.1.1",
 | 
			
		||||
        "semver": "^5.6.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "jwa": {
 | 
			
		||||
      "version": "1.4.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
 | 
			
		||||
      "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "buffer-equal-constant-time": "1.0.1",
 | 
			
		||||
        "ecdsa-sig-formatter": "1.0.11",
 | 
			
		||||
        "safe-buffer": "^5.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "jws": {
 | 
			
		||||
      "version": "3.2.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
 | 
			
		||||
      "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "jwa": "^1.4.1",
 | 
			
		||||
        "safe-buffer": "^5.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "kareem": {
 | 
			
		||||
      "version": "2.4.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.4.1.tgz",
 | 
			
		||||
      "integrity": "sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA=="
 | 
			
		||||
    },
 | 
			
		||||
    "lodash.includes": {
 | 
			
		||||
      "version": "4.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
 | 
			
		||||
      "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
 | 
			
		||||
    },
 | 
			
		||||
    "lodash.isboolean": {
 | 
			
		||||
      "version": "3.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
 | 
			
		||||
    },
 | 
			
		||||
    "lodash.isinteger": {
 | 
			
		||||
      "version": "4.0.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
 | 
			
		||||
      "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
 | 
			
		||||
    },
 | 
			
		||||
    "lodash.isnumber": {
 | 
			
		||||
      "version": "3.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
 | 
			
		||||
    },
 | 
			
		||||
    "lodash.isplainobject": {
 | 
			
		||||
      "version": "4.0.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
 | 
			
		||||
      "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
 | 
			
		||||
    },
 | 
			
		||||
    "lodash.isstring": {
 | 
			
		||||
      "version": "4.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
 | 
			
		||||
    },
 | 
			
		||||
    "lodash.once": {
 | 
			
		||||
      "version": "4.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
 | 
			
		||||
    },
 | 
			
		||||
    "memory-pager": {
 | 
			
		||||
      "version": "1.5.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -850,6 +1031,11 @@
 | 
			
		|||
        "sparse-bitfield": "^3.0.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "semver": {
 | 
			
		||||
      "version": "5.7.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
 | 
			
		||||
      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "sift": {
 | 
			
		||||
      "version": "16.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,7 @@
 | 
			
		|||
  "dependencies": {
 | 
			
		||||
    "amqplib": "^0.10.3",
 | 
			
		||||
    "bcryptjs": "^2.4.3",
 | 
			
		||||
    "jsonwebtoken": "^8.5.1",
 | 
			
		||||
    "mongoose": "^6.6.1",
 | 
			
		||||
    "pg": "^8.8.0"
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user