diff --git a/middlewares/index.js b/middlewares/index.js
index f0e7ecb..17121c2 100644
--- a/middlewares/index.js
+++ b/middlewares/index.js
@@ -1,6 +1,4 @@
 const HttpStatus = require('http-status-codes')
-const { decodeTkn, getEvenToken, constants } = require('../utils')
-const { idClaim } = constants
 const payloadValidation = require('./payloadValidation')
 const upload = require('./uploadValidation')
 
@@ -40,42 +38,5 @@ exports.requireAdmin = (req, res, next) => {
   next()
 }
 
-exports.requireAuth = () => {
-  const skipPaths = ['/auth/register', '/auth/login']
-
-  return (req, res, next) => {
-    if (skipPaths.includes(req.path)) {
-      return next()
-    }
-
-    try {
-      const token = getEvenToken(req)
-
-      if (token) {
-        const decoded = decodeTkn(token, req.config.JWT_KEY)
-
-        if (!decoded[idClaim]) {
-          return res.status(HttpStatus.BAD_REQUEST).json({
-            success: false,
-            message: 'You must have an idClaim in your token'
-          })
-        }
-
-        req.user = decoded
-        return next()
-      }
-      return res.status(HttpStatus.UNAUTHORIZED).json({
-        success: false,
-        message: 'You must have an authorization token'
-      })
-    } catch (error) {
-      return res.status(HttpStatus.UNAUTHORIZED).json({
-        success: false,
-        message: error.message
-      })
-    }
-  }
-}
-
 exports.payloadValidation = payloadValidation
 exports.upload = upload
diff --git a/package-lock.json b/package-lock.json
index b40f1db..e1c8608 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -427,7 +427,7 @@
       "dependencies": {
         "resolve-from": {
           "version": "5.0.0",
-          "resolved": "https://nexus.ciitizen.com/repository/npm-group/resolve-from/-/resolve-from-5.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
           "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
           "dev": true
         }
@@ -940,7 +940,7 @@
     },
     "@sendgrid/client": {
       "version": "6.5.5",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/@sendgrid/client/-/client-6.5.5.tgz",
+      "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-6.5.5.tgz",
       "integrity": "sha512-Nbfgo94gbWSL8PIgJfuHoifyOJJepvV8NQkkglctAEfb1hyozKhrzE6v1kPG/z4j0RodaTtXD5LJj/t0q/VhLA==",
       "requires": {
         "@sendgrid/helpers": "^6.5.5",
@@ -950,7 +950,7 @@
     },
     "@sendgrid/helpers": {
       "version": "6.5.5",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/@sendgrid/helpers/-/helpers-6.5.5.tgz",
+      "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-6.5.5.tgz",
       "integrity": "sha512-uRFEanalfss5hDsuzVXZ1wm7i7eEXHh1py80piOXjobiQ+MxmtR19EU+gDSXZ+uMcEehBGhxnb7QDNN0q65qig==",
       "requires": {
         "chalk": "^2.0.1",
@@ -959,7 +959,7 @@
     },
     "@sendgrid/mail": {
       "version": "6.5.5",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/@sendgrid/mail/-/mail-6.5.5.tgz",
+      "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-6.5.5.tgz",
       "integrity": "sha512-DSu8oTPI0BJFH60jMOG9gM+oeNMoRALFmdAYg2PIXpL+Zbxd7L2GzQZtmf1jLy/8UBImkbB3D74TjiOBiLRK1w==",
       "requires": {
         "@sendgrid/client": "^6.5.5",
@@ -1033,7 +1033,7 @@
     },
     "@types/caseless": {
       "version": "0.12.2",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/@types/caseless/-/caseless-0.12.2.tgz",
+      "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz",
       "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w=="
     },
     "@types/color-name": {
@@ -1076,10 +1076,18 @@
         "@types/istanbul-lib-report": "*"
       }
     },
+    "@types/jsonwebtoken": {
+      "version": "8.3.9",
+      "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.3.9.tgz",
+      "integrity": "sha512-00rI8GbOKuRtoYxltFSRTVUXCRLbuYwln2/nUMPtFU9JGS7if+nnmLjeoFGmqsNCmblPLAaeQ/zMLVsHr6T5bg==",
+      "requires": {
+        "@types/node": "*"
+      }
+    },
     "@types/node": {
-      "version": "13.13.4",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.4.tgz",
-      "integrity": "sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA=="
+      "version": "13.13.5",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.5.tgz",
+      "integrity": "sha512-3ySmiBYJPqgjiHA7oEaIo2Rzz0HrOZ7yrNO5HWyaE5q0lQ3BppDZ3N53Miz8bw2I7gh1/zir2MGVZBvpb1zq9g=="
     },
     "@types/normalize-package-data": {
       "version": "2.4.0",
@@ -1101,7 +1109,7 @@
     },
     "@types/request": {
       "version": "2.48.4",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/@types/request/-/request-2.48.4.tgz",
+      "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.4.tgz",
       "integrity": "sha512-W1t1MTKYR8PxICH+A4HgEIPuAC3sbljoEVfyZbeFJJDbr30guDspJri2XOaM2E+Un7ZjrihaDi7cf6fPa2tbgw==",
       "requires": {
         "@types/caseless": "*",
@@ -1118,7 +1126,7 @@
     },
     "@types/tough-cookie": {
       "version": "4.0.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/@types/tough-cookie/-/tough-cookie-4.0.0.tgz",
+      "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz",
       "integrity": "sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A=="
     },
     "@types/yargs": {
@@ -1157,9 +1165,9 @@
       }
     },
     "acorn": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz",
-      "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==",
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz",
+      "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==",
       "dev": true
     },
     "acorn-globals": {
@@ -1299,12 +1307,12 @@
     },
     "aproba": {
       "version": "1.2.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/aproba/-/aproba-1.2.0.tgz",
+      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
       "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
     },
     "are-we-there-yet": {
       "version": "1.1.5",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
       "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
       "requires": {
         "delegates": "^1.0.0",
@@ -1368,7 +1376,7 @@
     },
     "asn1": {
       "version": "0.2.4",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/asn1/-/asn1-0.2.4.tgz",
+      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
       "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
       "requires": {
         "safer-buffer": "~2.1.0"
@@ -1376,7 +1384,7 @@
     },
     "assert-plus": {
       "version": "1.0.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/assert-plus/-/assert-plus-1.0.0.tgz",
+      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
       "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
     },
     "assign-symbols": {
@@ -1401,7 +1409,7 @@
     },
     "asynckit": {
       "version": "0.4.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/asynckit/-/asynckit-0.4.0.tgz",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
       "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
     },
     "atob": {
@@ -1412,12 +1420,12 @@
     },
     "aws-sign2": {
       "version": "0.7.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/aws-sign2/-/aws-sign2-0.7.0.tgz",
+      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
       "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
     },
     "aws4": {
       "version": "1.9.1",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/aws4/-/aws4-1.9.1.tgz",
+      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
       "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug=="
     },
     "axios": {
@@ -1610,7 +1618,7 @@
     },
     "bcrypt": {
       "version": "3.0.8",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/bcrypt/-/bcrypt-3.0.8.tgz",
+      "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-3.0.8.tgz",
       "integrity": "sha512-jKV6RvLhI36TQnPDvUFqBEnGX9c8dRRygKxCZu7E+MgLfKZbmmXL8a7/SFFOyHoPNX9nV81cKRC5tbQfvEQtpw==",
       "requires": {
         "nan": "2.14.0",
@@ -1619,7 +1627,7 @@
     },
     "bcrypt-pbkdf": {
       "version": "1.0.2",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
       "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
       "requires": {
         "tweetnacl": "^0.14.3"
@@ -1642,7 +1650,7 @@
     },
     "bluebird": {
       "version": "3.5.1",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/bluebird/-/bluebird-3.5.1.tgz",
+      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
       "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
     },
     "body-parser": {
@@ -1839,7 +1847,7 @@
     },
     "bson": {
       "version": "1.1.4",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/bson/-/bson-1.1.4.tgz",
+      "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.4.tgz",
       "integrity": "sha512-S/yKGU1syOMzO86+dGpg2qGoDL0zvzcb262G+gqEy6TgP6rt6z6qxSFX/8X6vLC91P7G7C3nLs0+bvDzmvBA3Q=="
     },
     "buffer-equal-constant-time": {
@@ -1990,7 +1998,7 @@
     },
     "caseless": {
       "version": "0.12.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/caseless/-/caseless-0.12.0.tgz",
+      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
       "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
     },
     "chalk": {
@@ -2040,7 +2048,7 @@
     },
     "chownr": {
       "version": "1.1.4",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/chownr/-/chownr-1.1.4.tgz",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
       "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
     },
     "ci-info": {
@@ -2164,7 +2172,7 @@
     },
     "code-point-at": {
       "version": "1.1.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/code-point-at/-/code-point-at-1.1.0.tgz",
+      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
       "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
     },
     "collect-v8-coverage": {
@@ -2235,7 +2243,7 @@
     },
     "combined-stream": {
       "version": "1.0.8",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/combined-stream/-/combined-stream-1.0.8.tgz",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
       "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
       "requires": {
         "delayed-stream": "~1.0.0"
@@ -2327,7 +2335,7 @@
     },
     "console-control-strings": {
       "version": "1.1.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/console-control-strings/-/console-control-strings-1.1.0.tgz",
+      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
       "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
     },
     "contains-path": {
@@ -2447,7 +2455,7 @@
     },
     "cryptr": {
       "version": "6.0.2",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/cryptr/-/cryptr-6.0.2.tgz",
+      "resolved": "https://registry.npmjs.org/cryptr/-/cryptr-6.0.2.tgz",
       "integrity": "sha512-1TRHI4bmuLIB8WgkH9eeYXzhEg1T4tonO4vVaMBKKde8Dre51J68nAgTVXTwMYXAf7+mV2gBCkm/9wksjSb2sA=="
     },
     "css-select": {
@@ -2491,7 +2499,7 @@
     },
     "dashdash": {
       "version": "1.14.1",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/dashdash/-/dashdash-1.14.1.tgz",
+      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
       "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
       "requires": {
         "assert-plus": "^1.0.0"
@@ -2567,7 +2575,7 @@
     },
     "deepmerge": {
       "version": "4.2.2",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/deepmerge/-/deepmerge-4.2.2.tgz",
+      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
       "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg=="
     },
     "defer-to-connect": {
@@ -2650,12 +2658,12 @@
     },
     "delayed-stream": {
       "version": "1.0.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
       "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
     },
     "delegates": {
       "version": "1.0.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/delegates/-/delegates-1.0.0.tgz",
+      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
       "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
     },
     "denque": {
@@ -2723,7 +2731,7 @@
     },
     "detect-libc": {
       "version": "1.0.3",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/detect-libc/-/detect-libc-1.0.3.tgz",
+      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
       "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
     },
     "detect-newline": {
@@ -2861,7 +2869,7 @@
     },
     "ecc-jsbn": {
       "version": "0.1.2",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
       "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
       "requires": {
         "jsbn": "~0.1.0",
@@ -2938,7 +2946,7 @@
     },
     "es-abstract": {
       "version": "1.17.5",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/es-abstract/-/es-abstract-1.17.5.tgz",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
       "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
       "dev": true,
       "requires": {
@@ -3153,7 +3161,7 @@
     },
     "eslint-module-utils": {
       "version": "2.6.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz",
+      "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz",
       "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==",
       "dev": true,
       "requires": {
@@ -3696,7 +3704,7 @@
     },
     "extend": {
       "version": "3.0.2",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/extend/-/extend-3.0.2.tgz",
+      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
       "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
     },
     "extend-shallow": {
@@ -3798,7 +3806,7 @@
     },
     "extsprintf": {
       "version": "1.3.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/extsprintf/-/extsprintf-1.3.0.tgz",
+      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
       "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
     },
     "fast-deep-equal": {
@@ -3967,12 +3975,12 @@
     },
     "forever-agent": {
       "version": "0.6.1",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/forever-agent/-/forever-agent-0.6.1.tgz",
+      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
       "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
     },
     "form-data": {
       "version": "2.5.1",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/form-data/-/form-data-2.5.1.tgz",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
       "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
       "requires": {
         "asynckit": "^0.4.0",
@@ -4012,7 +4020,7 @@
     },
     "fs-minipass": {
       "version": "1.2.7",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/fs-minipass/-/fs-minipass-1.2.7.tgz",
+      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
       "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
       "requires": {
         "minipass": "^2.6.0"
@@ -4044,7 +4052,7 @@
     },
     "gauge": {
       "version": "2.7.4",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/gauge/-/gauge-2.7.4.tgz",
+      "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
       "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
       "requires": {
         "aproba": "^1.0.3",
@@ -4092,7 +4100,7 @@
     },
     "getpass": {
       "version": "0.1.7",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/getpass/-/getpass-0.1.7.tgz",
+      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
       "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
       "requires": {
         "assert-plus": "^1.0.0"
@@ -4169,12 +4177,12 @@
     },
     "har-schema": {
       "version": "2.0.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/har-schema/-/har-schema-2.0.0.tgz",
+      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
       "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
     },
     "har-validator": {
       "version": "5.1.3",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/har-validator/-/har-validator-5.1.3.tgz",
+      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
       "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
       "requires": {
         "ajv": "^6.5.5",
@@ -4203,7 +4211,7 @@
     },
     "has-unicode": {
       "version": "2.0.1",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/has-unicode/-/has-unicode-2.0.1.tgz",
+      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
       "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
     },
     "has-value": {
@@ -4272,7 +4280,7 @@
     },
     "helmet": {
       "version": "3.22.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/helmet/-/helmet-3.22.0.tgz",
+      "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.22.0.tgz",
       "integrity": "sha512-Xrqicn2nm1ZIUxP3YGuTBmbDL04neKsIT583Sjh0FkiwKDXYCMUqGqC88w3NUvVXtA75JyR2Jn6jw6ZEMOD+ZA==",
       "requires": {
         "depd": "2.0.0",
@@ -4306,7 +4314,7 @@
     },
     "helmet-csp": {
       "version": "2.10.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/helmet-csp/-/helmet-csp-2.10.0.tgz",
+      "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.10.0.tgz",
       "integrity": "sha512-Rz953ZNEFk8sT2XvewXkYN0Ho4GEZdjAZy4stjiEQV3eN7GDxg1QKmYggH7otDyIA7uGA6XnUMVSgeJwbR5X+w==",
       "requires": {
         "bowser": "2.9.0",
@@ -4322,7 +4330,7 @@
     },
     "hosted-git-info": {
       "version": "2.8.8",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
       "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
       "dev": true
     },
@@ -4413,7 +4421,7 @@
     },
     "http-signature": {
       "version": "1.2.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/http-signature/-/http-signature-1.2.0.tgz",
+      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
       "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
       "requires": {
         "assert-plus": "^1.0.0",
@@ -4570,7 +4578,7 @@
     },
     "ignore-walk": {
       "version": "3.0.3",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/ignore-walk/-/ignore-walk-3.0.3.tgz",
+      "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
       "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
       "requires": {
         "minimatch": "^3.0.4"
@@ -4857,6 +4865,13 @@
       "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
       "dev": true
     },
+    "is-docker": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz",
+      "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==",
+      "dev": true,
+      "optional": true
+    },
     "is-extendable": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
@@ -4966,7 +4981,7 @@
     },
     "is-typedarray": {
       "version": "1.0.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/is-typedarray/-/is-typedarray-1.0.0.tgz",
+      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
       "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
     },
     "is-windows": {
@@ -4976,11 +4991,14 @@
       "dev": true
     },
     "is-wsl": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz",
-      "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+      "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
       "dev": true,
-      "optional": true
+      "optional": true,
+      "requires": {
+        "is-docker": "^2.0.0"
+      }
     },
     "is-yarn-global": {
       "version": "0.3.0",
@@ -5007,7 +5025,7 @@
     },
     "isstream": {
       "version": "0.1.2",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/isstream/-/isstream-0.1.2.tgz",
+      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
       "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
     },
     "istanbul-lib-coverage": {
@@ -6406,7 +6424,7 @@
     },
     "jsbn": {
       "version": "0.1.1",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/jsbn/-/jsbn-0.1.1.tgz",
+      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
       "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
     },
     "jsdom": {
@@ -6482,7 +6500,7 @@
     },
     "json-schema": {
       "version": "0.2.3",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/json-schema/-/json-schema-0.2.3.tgz",
+      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
       "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
     },
     "json-schema-traverse": {
@@ -6498,7 +6516,7 @@
     },
     "json-stringify-safe": {
       "version": "5.0.1",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
       "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
     },
     "json5": {
@@ -6536,7 +6554,7 @@
     },
     "jsprim": {
       "version": "1.4.1",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/jsprim/-/jsprim-1.4.1.tgz",
+      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
       "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
       "requires": {
         "assert-plus": "1.0.0",
@@ -6574,6 +6592,16 @@
         "safe-buffer": "^5.0.1"
       }
     },
+    "jwt-auth-middleware": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/jwt-auth-middleware/-/jwt-auth-middleware-1.0.5.tgz",
+      "integrity": "sha512-IXYnnaFLzWMD4BRDdlurAS933k36wfbCHSc3/905jNbynTxIRsTR36dNdnqMcNqTYnoBc5c0Tq0mM6N0zOv7OA==",
+      "requires": {
+        "@types/jsonwebtoken": "^8.3.9",
+        "http-status-codes": "^1.4.0",
+        "jsonwebtoken": "^8.5.1"
+      }
+    },
     "kareem": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz",
@@ -6889,7 +6917,7 @@
     },
     "minipass": {
       "version": "2.9.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/minipass/-/minipass-2.9.0.tgz",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
       "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
       "requires": {
         "safe-buffer": "^5.1.2",
@@ -6898,7 +6926,7 @@
     },
     "minizlib": {
       "version": "1.3.3",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/minizlib/-/minizlib-1.3.3.tgz",
+      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
       "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
       "requires": {
         "minipass": "^2.9.0"
@@ -6947,9 +6975,9 @@
       }
     },
     "mongoose": {
-      "version": "5.9.11",
-      "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.9.11.tgz",
-      "integrity": "sha512-xsPquUEBfJQ/ufT7SI4+qWHml1+HTNra5jQS0RsgCXIMMltCWxn3jeugLiPbyFkKZokMZ+tPy5yEDtLZu5gHeg==",
+      "version": "5.9.13",
+      "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.9.13.tgz",
+      "integrity": "sha512-MsFdJAaCTVbDA3gYskUEpUN1kThL7sp4zh8N9rGt0+9vYMn28q92NLK90vGssM9qjOGWp8HqLeT1fBgfMZDnKA==",
       "requires": {
         "bson": "^1.1.4",
         "kareem": "2.3.1",
@@ -7033,7 +7061,7 @@
     },
     "nan": {
       "version": "2.14.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/nan/-/nan-2.14.0.tgz",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
       "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg=="
     },
     "nanomatch": {
@@ -7063,7 +7091,7 @@
     },
     "needle": {
       "version": "2.4.1",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/needle/-/needle-2.4.1.tgz",
+      "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.1.tgz",
       "integrity": "sha512-x/gi6ijr4B7fwl6WYL9FwlCvRQKGlUNvnceho8wxkwXqN8jvVmmmATTmZPRRG7b/yC1eode26C2HO9jl78Du9g==",
       "requires": {
         "debug": "^3.2.6",
@@ -7073,7 +7101,7 @@
       "dependencies": {
         "debug": {
           "version": "3.2.6",
-          "resolved": "https://nexus.ciitizen.com/repository/npm-group/debug/-/debug-3.2.6.tgz",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
           "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
           "requires": {
             "ms": "^2.1.1"
@@ -7081,7 +7109,7 @@
         },
         "ms": {
           "version": "2.1.2",
-          "resolved": "https://nexus.ciitizen.com/repository/npm-group/ms/-/ms-2.1.2.tgz",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
           "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
         }
       }
@@ -7139,7 +7167,7 @@
     },
     "node-pre-gyp": {
       "version": "0.14.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz",
+      "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz",
       "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==",
       "requires": {
         "detect-libc": "^1.0.2",
@@ -7233,7 +7261,7 @@
     },
     "npm-bundled": {
       "version": "1.1.1",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/npm-bundled/-/npm-bundled-1.1.1.tgz",
+      "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",
       "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",
       "requires": {
         "npm-normalize-package-bin": "^1.0.1"
@@ -7241,12 +7269,12 @@
     },
     "npm-normalize-package-bin": {
       "version": "1.0.1",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
+      "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
       "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="
     },
     "npm-packlist": {
       "version": "1.4.8",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/npm-packlist/-/npm-packlist-1.4.8.tgz",
+      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
       "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
       "requires": {
         "ignore-walk": "^3.0.1",
@@ -7265,7 +7293,7 @@
     },
     "npmlog": {
       "version": "4.1.2",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/npmlog/-/npmlog-4.1.2.tgz",
+      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
       "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
       "requires": {
         "are-we-there-yet": "~1.1.2",
@@ -7284,7 +7312,7 @@
     },
     "number-is-nan": {
       "version": "1.0.1",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/number-is-nan/-/number-is-nan-1.0.1.tgz",
+      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
       "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
     },
     "nwsapi": {
@@ -7295,7 +7323,7 @@
     },
     "oauth-sign": {
       "version": "0.9.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/oauth-sign/-/oauth-sign-0.9.0.tgz",
+      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
       "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
     },
     "object-assign": {
@@ -7469,7 +7497,7 @@
     },
     "os-homedir": {
       "version": "1.0.2",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/os-homedir/-/os-homedir-1.0.2.tgz",
+      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
       "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
     },
     "os-tmpdir": {
@@ -7479,7 +7507,7 @@
     },
     "osenv": {
       "version": "0.1.5",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/osenv/-/osenv-0.1.5.tgz",
+      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
       "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
       "requires": {
         "os-homedir": "^1.0.0",
@@ -7630,7 +7658,7 @@
     },
     "performance-now": {
       "version": "2.1.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/performance-now/-/performance-now-2.1.0.tgz",
+      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
       "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
     },
     "picomatch": {
@@ -7872,7 +7900,7 @@
     },
     "psl": {
       "version": "1.8.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/psl/-/psl-1.8.0.tgz",
+      "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
       "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
     },
     "pstree.remy": {
@@ -7912,7 +7940,7 @@
     },
     "qs": {
       "version": "6.5.2",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/qs/-/qs-6.5.2.tgz",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
       "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
     },
     "range-parser": {
@@ -8097,7 +8125,7 @@
     },
     "request": {
       "version": "2.88.2",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/request/-/request-2.88.2.tgz",
+      "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
       "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
       "requires": {
         "aws-sign2": "~0.7.0",
@@ -8124,7 +8152,7 @@
       "dependencies": {
         "form-data": {
           "version": "2.3.3",
-          "resolved": "https://nexus.ciitizen.com/repository/npm-group/form-data/-/form-data-2.3.3.tgz",
+          "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
           "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
           "requires": {
             "asynckit": "^0.4.0",
@@ -8201,7 +8229,7 @@
       "dependencies": {
         "resolve-from": {
           "version": "5.0.0",
-          "resolved": "https://nexus.ciitizen.com/repository/npm-group/resolve-from/-/resolve-from-5.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
           "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
           "dev": true
         }
@@ -8455,7 +8483,7 @@
     },
     "sax": {
       "version": "1.2.4",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/sax/-/sax-1.2.4.tgz",
+      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
       "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
     },
     "saxes": {
@@ -8880,7 +8908,7 @@
     },
     "sshpk": {
       "version": "1.16.1",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/sshpk/-/sshpk-1.16.1.tgz",
+      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
       "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
       "requires": {
         "asn1": "~0.2.3",
@@ -8907,7 +8935,7 @@
     },
     "standard": {
       "version": "14.3.3",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/standard/-/standard-14.3.3.tgz",
+      "resolved": "https://registry.npmjs.org/standard/-/standard-14.3.3.tgz",
       "integrity": "sha512-HBEAD5eVXrr2o/KZ3kU8Wwaxw90wzoq4dOQe6vlRnPoQ6stn4LCLRLBBDp0CjH/aOTL9bDZJbRUOZcBaBnNJ0A==",
       "dev": true,
       "requires": {
@@ -8923,14 +8951,14 @@
       }
     },
     "standard-engine": {
-      "version": "12.0.0",
-      "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-12.0.0.tgz",
-      "integrity": "sha512-gJIIRb0LpL7AHyGbN9+hJ4UJns37lxmNTnMGRLC8CFrzQ+oB/K60IQjKNgPBCB2VP60Ypm6f8DFXvhVWdBOO+g==",
+      "version": "12.0.1",
+      "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-12.0.1.tgz",
+      "integrity": "sha512-XtR9NfoTqvHkWQCwL1aLMwXw1Qxy5s4rdSIqetgBNw+8faNbQ+BbB49hPhKXjxxfC4yg+fpH0lx/T5fuUbpDcQ==",
       "dev": true,
       "requires": {
-        "deglob": "^4.0.0",
+        "deglob": "^4.0.1",
         "get-stdin": "^7.0.0",
-        "minimist": "^1.1.0",
+        "minimist": "^1.2.5",
         "pkg-conf": "^3.1.0"
       }
     },
@@ -9020,7 +9048,7 @@
     },
     "string.prototype.trimleft": {
       "version": "2.1.2",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz",
       "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==",
       "dev": true,
       "requires": {
@@ -9031,7 +9059,7 @@
     },
     "string.prototype.trimright": {
       "version": "2.1.2",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz",
       "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==",
       "dev": true,
       "requires": {
@@ -9219,7 +9247,7 @@
     },
     "tar": {
       "version": "4.4.13",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/tar/-/tar-4.4.13.tgz",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
       "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
       "requires": {
         "chownr": "^1.1.1",
@@ -9376,7 +9404,7 @@
     },
     "tough-cookie": {
       "version": "2.5.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/tough-cookie/-/tough-cookie-2.5.0.tgz",
+      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
       "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
       "requires": {
         "psl": "^1.1.28",
@@ -9398,14 +9426,14 @@
       "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
     },
     "tslib": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz",
-      "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==",
+      "version": "1.11.2",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.2.tgz",
+      "integrity": "sha512-tTSkux6IGPnUGUd1XAZHcpu85MOkIl5zX49pO+jfsie3eP0B6pyhOlLXm3cAC6T7s+euSDDUUV+Acop5WmtkVg==",
       "dev": true
     },
     "tunnel-agent": {
       "version": "0.6.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
       "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
       "requires": {
         "safe-buffer": "^5.0.1"
@@ -9413,7 +9441,7 @@
     },
     "tweetnacl": {
       "version": "0.14.5",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/tweetnacl/-/tweetnacl-0.14.5.tgz",
+      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
       "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
     },
     "type-check": {
@@ -9666,7 +9694,7 @@
     },
     "uuid": {
       "version": "3.4.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/uuid/-/uuid-3.4.0.tgz",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
       "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
     },
     "v8-compile-cache": {
@@ -9676,9 +9704,9 @@
       "dev": true
     },
     "v8-to-istanbul": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.3.tgz",
-      "integrity": "sha512-sAjOC+Kki6aJVbUOXJbcR0MnbfjvBzwKZazEJymA2IX49uoOdEdk+4fBq5cXgYgiyKtAyrrJNtBZdOeDIF+Fng==",
+      "version": "4.1.4",
+      "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz",
+      "integrity": "sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==",
       "dev": true,
       "requires": {
         "@types/istanbul-lib-coverage": "^2.0.1",
@@ -9711,7 +9739,7 @@
     },
     "verror": {
       "version": "1.10.0",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/verror/-/verror-1.10.0.tgz",
+      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
       "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
       "requires": {
         "assert-plus": "^1.0.0",
@@ -9819,7 +9847,7 @@
     },
     "wide-align": {
       "version": "1.1.3",
-      "resolved": "https://nexus.ciitizen.com/repository/npm-group/wide-align/-/wide-align-1.1.3.tgz",
+      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
       "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
       "requires": {
         "string-width": "^1.0.2 || 2"
diff --git a/package.json b/package.json
index 0fb0f8d..6b36a35 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,7 @@
     "prod:default": "NODE_ENV=prod node index.js",
     "depcheck": "depcheck . --ignores=eslint",
     "lint": "standard",
-    "test": "jest tests/schedule",
+    "test": "jest",
     "test-coverage": "jest --coverage"
   },
   "repository": {
@@ -47,6 +47,7 @@
     "helmet": "^3.22.0",
     "http-status-codes": "^1.4.0",
     "jsonwebtoken": "^8.5.1",
+    "jwt-auth-middleware": "^1.0.5",
     "mongoose": "^5.9.9",
     "multer": "^1.4.2",
     "winston": "^3.2.1"
diff --git a/routes/index.js b/routes/index.js
index 7286c2e..faa6abf 100644
--- a/routes/index.js
+++ b/routes/index.js
@@ -5,8 +5,9 @@ const users = require('./users')
 const auth = require('./auth')
 const schedule = require('./schedule')
 const secrets = require('./secrets')
-
-const { requireAuth } = require('../middlewares')
+const { requireAuth } = require('jwt-auth-middleware')
+const Cryptr = require('cryptr')
+const db = require('../models')
 
 router.get('/', (req, res) => {
   return res.status(HttpStatus.OK).json({
@@ -16,7 +17,11 @@ router.get('/', (req, res) => {
 
 router.use('/auth', auth)
 
-router.use(requireAuth())
+db.Secret.findOne({ env: process.env.NODE_ENV, key: 'JWT_KEY' }, (err, secret) => {
+  if (err) return console.log(err)
+  const key = new Cryptr(process.env.SECRET_KEY).decrypt(secret.value)
+  router.use(requireAuth(key))
+})
 
 router.use('/users', users)
 router.use('/schedule', schedule)