{"_id":"@dav-nazaryan/brainstorm-task","_rev":"5-551f46515a0552d0ab9c86ef6a6ea375","name":"@dav-nazaryan/brainstorm-task","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@dav-nazaryan/brainstorm-task","version":"1.0.0","description":"JWT Bearer Auth module","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"David Nazaryan"},"license":"ISC","devDependencies":{"eslint":"~5.3.0","eslint-config-airbnb-base":"~13.1.0","eslint-plugin-import":"~2.14.0","express":"~4.16.4","jsdoc":"~3.5.5","jsdoc-to-markdown":"~4.0.1"},"dependencies":{"bcrypt":"~3.0.5","jsonwebtoken":"~8.5.1","mongoose":"~5.4.20"},"directories":{"example":"examples","lib":"lib"},"_id":"@dav-nazaryan/brainstorm-task@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.14.1","_npmUser":{"name":"dav-nazaryan","email":"ddd.nazaryan@gmail.com"},"dist":{"integrity":"sha512-1KuNeV3D98aswfwt2ci86cNLObBj44hj0a0MBb8s3D5N1FthJL0HQk2F5gV4QnzMMzw1AdVl9f+5L4NdaJp79A==","shasum":"e6af175526af9f9bfdf303f32ff21eac8ac4aa5c","tarball":"https://registry.npmjs.org/@dav-nazaryan/brainstorm-task/-/brainstorm-task-1.0.0.tgz","fileCount":21,"unpackedSize":61726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcnqRHCRA9TVsSAnZWagAATv8P/2pfo/AA9DA+s3b+/hz6\nOhiJmY+mB0A8QDcPy7/7kmQ/qT5g+lYKO6RfsG9LDMi2heeqMerGVQITMy39\nS2EYfE853ioc5ajfvTfgx5glJ6v/LxmqmRc/1aFYE7zZCC9Iq0WG5D4ZWbHW\n2TkKcPEh2YT7CXJrh4VHWw/8DmtbhoJCdKbWRftpUdVu/eWbURCXVb+aZzGL\n1sVl20IYL8N6G9Ms2dhMoofgQantzFnmvYEQKeZNmgJt1Xy9z6eWzsv/+i8V\nGtX4avS4hp+fDAfgQ8lGhWSwbeSnfPVZyPSY+VYFeW3TieEFH3sb9i6v2xem\ne9VrlgNPLLNnMU/04zkzvfDVf/eLUqrRSD4TKUgstAoZaGe71R/rUkAr4rFT\nOyPgOAacgnnN5mmo3wbs5+IdMxssmpx3fjVGiYJNyz5zNxxTjpK407NonFUZ\nZOOO65ZjJQu0jsoE0S/kRA40cT8n6kbkHgOF/Q/THfcKVAsNbjSg80j7hbqw\nNY2+43J/Iw/xieWlTL6lVMmnXvcKt/TG1Eo/wWAwaj7fxwzms45ecmR7Cvxj\nvVw2kCtnD6eWBSuQZSBWGLJqpADFzZ+cQylF/zChUj9IfOG9vQ2m8VsiIAXU\nmNSjIjReg2p219ZVRGa8NLcM5g+kJK52Sfxl/jHPRKVxhaipkpMoFuwheQiF\n+3RN\r\n=lXYa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDe63h84bPwjrfJpLkvQ9EFmG35zBaiYRxShPq6+Xt8sgIgReHOt7AB2MPdGLobFN2VClOkyVIxDkTdLqEoRCCqioQ="}]},"maintainers":[{"name":"dav-nazaryan","email":"ddd.nazaryan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/brainstorm-task_1.0.0_1553900615150_0.6956717107696555"},"_hasShrinkwrap":false},"1.0.1":{"name":"@dav-nazaryan/brainstorm-task","version":"1.0.1","description":"JWT Bearer Auth module","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"David Nazaryan"},"license":"ISC","devDependencies":{"eslint":"~5.3.0","eslint-config-airbnb-base":"~13.1.0","eslint-plugin-import":"~2.14.0","express":"~4.16.4","jsdoc":"~3.5.5","jsdoc-to-markdown":"~4.0.1"},"dependencies":{"bcrypt":"~3.0.5","jsonwebtoken":"~8.5.1","mongoose":"~5.4.20"},"directories":{"example":"examples","lib":"lib"},"_id":"@dav-nazaryan/brainstorm-task@1.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.14.1","_npmUser":{"name":"dav-nazaryan","email":"ddd.nazaryan@gmail.com"},"dist":{"integrity":"sha512-bEUQdasrMVp0kduSSKWnhbqrdG+u/3hHGgHJgfeAFEaK6JDHeCAhvdXMvcOuYUvhdyZ8HL4Rx3aspBTNAx9A8Q==","shasum":"2d00de8fcbca235fa4f18eaae24eb99769042985","tarball":"https://registry.npmjs.org/@dav-nazaryan/brainstorm-task/-/brainstorm-task-1.0.1.tgz","fileCount":21,"unpackedSize":61731,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcnqSDCRA9TVsSAnZWagAA4RIP/22roNsZCYSoUf04Zeky\nCC2dl8zmqSuf9/4u3viAcCUr9dPB842uFY25e7cA7T9XCtrWwsGNedbgygf1\n79P/JHjCMEY1sWjY1lDIG7YOFXAjaTFm1wEhdCCWCbmzv5sS7vNS+0Scsoic\nzmXqFZqlZ4MoGqVopUGyJliVOCgeUJjx8xStYbvE7lw8pBJNw26omRwF+bz8\nv0zpE2qCUeEM7nKGxFJEe4vGv6TArqYzE6R7A3adu+pF1Fa5A+T9Ka1/g1or\nrX2jXM5d4TV8CASKNFjKjrod8hhOPuv3Z0bLlCqSRn3xcN5Ch8BIdN1pow/k\n3ECGFMnxHm5VsmjinC//aZ0Q48PFcFhmrC8QsHrYfm8Pnu7SHnMhxDqPTt97\n0PcnsBCC1dIJBX5+7o5Y2jcYN5q4UZqwl6+4ynXuw+YF8tLiIM4D/YIXIs4c\nYo520hixNyMSFbBkTlZQESwRKAq7o8TDrUJpSQIlmAKI+/1n7/JYP/T5+KRc\nthkF/4CksN8jc9X0frdAGNLoWbsupwFhKMcegjdSnut6cokZA90qamcjqaj3\nL0UDZp5lhnwRN9QYkexYCAdqmFNTI2JvnrkrjrL5s8u+g1zGC8XmgKTk5IDb\nHewxUW1qPqK9XV6ZrHUn+U6t44c8asuiMEZLpQ2rMEpb8ceKmR2h+0mCRNZB\npDUp\r\n=wyiY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC21oRcdCbGxmwMe6eab7uQjtJOWJnBQW5sXghaPc2vqAIhAL2X9/1R/spX8oOoB8HQ43blzTZ4D3bqASvrGNod04Go"}]},"maintainers":[{"name":"dav-nazaryan","email":"ddd.nazaryan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/brainstorm-task_1.0.1_1553900674860_0.01874629588844745"},"_hasShrinkwrap":false},"1.0.2":{"name":"@dav-nazaryan/brainstorm-task","version":"1.0.2","description":"JWT Bearer Auth module","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"David Nazaryan"},"license":"ISC","devDependencies":{"eslint":"~5.3.0","eslint-config-airbnb-base":"~13.1.0","eslint-plugin-import":"~2.14.0","express":"~4.16.4","jsdoc":"~3.5.5","jsdoc-to-markdown":"~4.0.1"},"dependencies":{"bcrypt":"~3.0.5","jsonwebtoken":"~8.5.1","mongoose":"~5.4.20"},"directories":{"example":"examples","lib":"lib"},"_id":"@dav-nazaryan/brainstorm-task@1.0.2","_npmVersion":"6.4.1","_nodeVersion":"10.14.1","_npmUser":{"name":"dav-nazaryan","email":"ddd.nazaryan@gmail.com"},"dist":{"integrity":"sha512-A/2myhroLI4a6tQGQbMVY9hrozVmsS+QoujqfRY13c662+P8rulGFeaW6mvg1Bmqm+lL4PtC47c64Jlt8sPXww==","shasum":"3b9fcb47eaca2fb5543996d03a892fd70725247c","tarball":"https://registry.npmjs.org/@dav-nazaryan/brainstorm-task/-/brainstorm-task-1.0.2.tgz","fileCount":21,"unpackedSize":61691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcnqUqCRA9TVsSAnZWagAAUt4QAIMxgTyo0VHuBPXeJ/1+\nuCLOFOjHJofmlngSHYMmpKX9VADSdvAvSYan9wa7pOdVWrcVO8H9rSno6Qz/\nEXOaz6HlOKnxee3c/Cy1bW/QCWOB4ndQ9IpFLDd7vXV1tkD664zBgAd7opPa\nNtI4JPx+k/TgkcW49VQy4e4QpNKwuA2PHMVohqi3tO2Xs1wb/vjzX/nwMU1T\ntZGBk5tDiQ89KoNkFn66pepXQhQTDDFKpFRmxPvMvVNgc7/RaLqFYG8TFgqW\ngxa1e9p0A7fycud5oy4g8tUfr4eZm642UpFscz5cE9EdIQfgu2dHylR4e7DS\nJkZXc80wR0zLUtm2jVXgVeMUqG3COJGH+k1cSCv+xvD48ITm2ZSaCulkp7Xi\nUUQOQdrBAoC0IDMikP2gMvvRVFpuANc27DP+YebZ5SFoqOzAD7pI0648+4bc\nZ8NUjRzN0NwPRGrGYeB+yrl5UQAJRN8a3EsiphDyl59aJzhL5znWUyuqjrXP\nTbQeZAoRYAiI7qxcdQc9FB+sQi9uEUsH/LsanG5Z36/cv40D9RAT7ikd/PNI\nexpvR85AeatJ65y4npVzu1RUuUxhqV8eQbA+LHECiRW0QGzBbdvRkFCCuRkP\nZjYaab2DtS+mC9XYDl0MVibXQZps3DooRG/k3GSlsBjOGmGDsC4dSxnrWuD0\nxRPU\r\n=KJ35\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEtuTP5kl24cxgbsGJl6V6nJlLptJyK8UWplgN6o+WMcAiA0hRhK17j8SCo3MfiJKIxAGbN8yd0XN4LSxG0LgYc3qQ=="}]},"maintainers":[{"name":"dav-nazaryan","email":"ddd.nazaryan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/brainstorm-task_1.0.2_1553900841795_0.2773247742438083"},"_hasShrinkwrap":false},"1.0.3":{"name":"@dav-nazaryan/brainstorm-task","version":"1.0.3","description":"JWT Bearer Auth module","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"David Nazaryan"},"license":"ISC","devDependencies":{"eslint":"~5.3.0","eslint-config-airbnb-base":"~13.1.0","eslint-plugin-import":"~2.14.0","express":"~4.16.4","jsdoc":"~3.5.5","jsdoc-to-markdown":"~4.0.1"},"dependencies":{"bcrypt":"~3.0.5","jsonwebtoken":"~8.5.1","mongoose":"~5.4.20"},"directories":{"example":"examples","lib":"lib"},"_id":"@dav-nazaryan/brainstorm-task@1.0.3","_npmVersion":"6.4.1","_nodeVersion":"10.14.1","_npmUser":{"name":"dav-nazaryan","email":"ddd.nazaryan@gmail.com"},"dist":{"integrity":"sha512-ajLIrsiWHweBBvuMMzAHGZrZIZyDrbr/gu6FT/5ZI510USisdLphmKsZA/jTvLgne+zGXUliN2ZtWEwfUp3f4Q==","shasum":"11b17e3ed80c89a325ef797cb9a3b7d47f2c5c46","tarball":"https://registry.npmjs.org/@dav-nazaryan/brainstorm-task/-/brainstorm-task-1.0.3.tgz","fileCount":21,"unpackedSize":63116,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcnqXICRA9TVsSAnZWagAAVFUQAIgMi36VRG5/KBDs8KBI\n/KX8eomOlNY2W4Y89TrpcBiyowyTdG63SwtZSSr/UAXgW2BXaY67ydgGU902\nnLeVv7FduNF7TKdHPctjzyp56udch/aKbGbIjRCIv4lFxipjrpD9n0MHsoGV\nU4G7ZXs5ZHVzUgwUdrSgkdGcSBgECcxq0GQYvb4EVD+bmsk4vd+A3rv/d0u/\ne+gXr3wi8njV7MmanUK2RgTJiDlcDVyy0E1V2ApgDchOYLRbeQOowq6U3Sm3\nFysizvnIEEL6GJQu+UwDkMCyjrVCA5gvPt/07ioo57CvzhPQ/eHZRtyLzIoV\n3pJvj5KMM5na+pATlQ1ntSPf3I4r1qSxD/1pceg2NjZitRV4uwJhFUIB2bcH\nZqJLkoQYiVbQWJN0tqNuRT4Ql8zrZAvVrcgkdUqmmtgqDpjS/8cxwmhmozNh\nbG9rXyK2owq3RNjsa8omj3e0PDs3bUDGTcGWJ3W6xB0atek3iQ7G1nUWMs3G\nhlYsALs5xmOD3TEr7afRpYnjHJniA8QtbPdDwldzxLRyGTTX+GfTsvOcf8I+\nFoJTcy1EKVXbgPz/nB3NjAhWx+PlFntmX884iTHev/mVxgItPpaIW/fCqMpF\nrChDqbKGSFnsn01pLCFxx73lAgPsU2nfnfcx2ie1BsFuRf9D+cAwoy4LB+3a\njebX\r\n=Ntl+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDk2pssCaEX35B+alevzsgKbcNd9PiI/XkI5csWlbBKUAIhAIQcWNhlHjrPX/fVjRtFV3CNQyhuHdZLYsvA1OkkZWpH"}]},"maintainers":[{"name":"dav-nazaryan","email":"ddd.nazaryan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/brainstorm-task_1.0.3_1553900999487_0.515472341686571"},"_hasShrinkwrap":false},"1.1.0":{"name":"@dav-nazaryan/brainstorm-task","version":"1.1.0","description":"JWT Bearer Auth module","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"David Nazaryan"},"license":"ISC","devDependencies":{"eslint":"~5.3.0","eslint-config-airbnb-base":"~13.1.0","eslint-plugin-import":"~2.14.0","express":"~4.16.4","jsdoc":"~3.5.5","jsdoc-to-markdown":"~4.0.1"},"dependencies":{"bcrypt":"~3.0.5","jsonwebtoken":"~8.5.1","mongoose":"~5.4.20"},"directories":{"example":"examples","lib":"lib"},"_id":"@dav-nazaryan/brainstorm-task@1.1.0","_npmVersion":"6.4.1","_nodeVersion":"10.14.1","_npmUser":{"name":"dav-nazaryan","email":"ddd.nazaryan@gmail.com"},"dist":{"integrity":"sha512-nfcyxCYNZb7nt062B8JdR3XKkYL4gyhPL5BvlMnLMyAiBGs3MWCSTm7z91uOZYW/M5a/dVAfwKqUuVzvYkMaLA==","shasum":"fe521a45d54d2cc0e27df1037b98b8b68a7226c7","tarball":"https://registry.npmjs.org/@dav-nazaryan/brainstorm-task/-/brainstorm-task-1.1.0.tgz","fileCount":21,"unpackedSize":69113,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcnrSRCRA9TVsSAnZWagAAP2EQAINeyhzIUhoJOxItxkSe\n53rChL5NiFdJih/8fe4f/mWhYppNb+3gG2U9hndalsTbmKFAbIYswV3kOUHb\nry5kpO/I0Dpu/2I2q+NqTu5j8hf4clashiNdRqz5c87CuO77CkkQStWLqcOR\nE2e8j3iiuacd0pvl3yoNfb8op6w86QnGuyojWYI2yhbOPQ0b/lHm4eRx0SiM\n35qeOi6PB73WyO+wZeAH6yRevLZ/ByNl0msA6zbeah3DwerZKC2V0E724YPr\nGrZEY32UpjpOIpUWky9hxJ7ZDu2lmRBk4Vq/RFQdsc7SCCTASDo3EkDo48/Y\nhb/E4fhCO/ft3HVRUyVOia3He5CEkRFm0ZzX9io3pajz0Y0prXmAZmFBsVHW\nQ32iThK0GdUVBpOYAyGcKHEN69FtqaDeXV8bkJDFh5o4vUaXlBKvJg1EEEIC\nnG6aF+VUGKdnFbFTxFgPDs1vMaQYboxckezLumUFgg22li8ipoUp6M83hj9G\ni+pa6rl5JO7UAkMDacLYR8FyTlrQhZMWSK9O89ZrDqQnkGu0KN8VFZdwvo/7\nrGHjsbYFFhRuTfBhMYSpGNuKBvHaa4rGIoH2P1j6aqEy0Z8TRQG0zh2nblb2\nt2Y4neQ2It3ikSN35guoLf0hOnSIRrh0TuT0Eh/m+NFUtOvYpVc3pShMmwLB\njh9/\r\n=AH03\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHqlCZb379jDl3FYz0TT/e7WoXY/DXfGQ1A6wY6p4gmyAiAdXXjqN3DfS8EyImlMEu1YsOUgJAZ5kuzYOLnP6G13NA=="}]},"maintainers":[{"name":"dav-nazaryan","email":"ddd.nazaryan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/brainstorm-task_1.1.0_1553904784252_0.43265215355510134"},"_hasShrinkwrap":false}},"time":{"created":"2019-03-29T23:03:34.938Z","1.0.0":"2019-03-29T23:03:35.254Z","modified":"2022-04-05T03:04:48.578Z","1.0.1":"2019-03-29T23:04:34.996Z","1.0.2":"2019-03-29T23:07:22.003Z","1.0.3":"2019-03-29T23:09:59.633Z","1.1.0":"2019-03-30T00:13:04.420Z"},"maintainers":[{"name":"dav-nazaryan","email":"ddd.nazaryan@gmail.com"}],"description":"JWT Bearer Auth module","author":{"name":"David Nazaryan"},"license":"ISC","readme":"# Usage\n\n#### Init new instance\n```javascript\nconst auth = require('@dav-nazaryan/brainstorm-task');\n\nauth.init('admin', {\n  mongoUrl: 'mongodb://localhost:27017/auth-db',\n}).then((authInstance) => {\n  // use auth instance methods\n});\n```\n\n#### Usage example along with express and mongoose\n```javascript\nconst auth = require('@dav-nazaryan/brainstorm-task')\n\nconst mongoose = require('mongoose');\nconst express = require('express');\nconst app = express();\n\nconst dependencies = [\n  mongoose.connect('mongodb://localhost:27017/auth-demo', {\n    useNewUrlParser: true,\n    useCreateIndex: true,\n    useFindAndModify: false,\n  }),\n  auth.init('user', {\n    mongoUrl: 'mongodb://localhost:27017/auth-user',\n  }),\n];\n\nPromise.all(dependencies).then(() => {\n  app.listen(3000, () => {\n    console.log('Example app listening on port 3000!');\n  });\n});\n```\n\n#### Init instance on start and get it inside other file\n`server.js`\n```javascript\nconst auth = require('@dav-nazaryan/brainstorm-task');\n\nconst express = require('express');\nconst app = express();\n\nauth.init('user', {\n  mongoUrl: 'mongodb://localhost:27017/auth-db',\n}).then((authInstance) => {\n  app.listen(3000, () => {\n    console.log('Example app listening on port 3000!');\n  });\n});\n```\n`user.router.js`\n```javascript\nconst express = require('express');\nconst router = express.Router();\n\nconst auth = require('@dav-nazaryan/brainstorm-task');\nconst userAuth = auth.get('user');\n\nrouter.post('/register', async (req, res) => {\n  const user = await userAuth.register(req.body.login, req.body.password);\n  res.status(201).send(user);\n});\n```\n#### Usage without getting an instance\n`server.js`\n```javascript\nconst auth = require('@dav-nazaryan/brainstorm-task')\n\nconst mongoose = require('mongoose');\nconst express = require('express');\nconst app = express();\n\nconst dependencies = [\n  mongoose.connect('mongodb://localhost:27017/auth-demo', {\n    useNewUrlParser: true,\n    useCreateIndex: true,\n    useFindAndModify: false,\n  }),\n  // you can init multiple instances\n  auth.init('user', {\n    mongoUrl: 'mongodb://localhost:27017/auth-admin',\n  }),\n  auth.init('user', {\n      mongoUrl: 'mongodb://localhost:27017/auth-user',\n    }),\n];\n\nPromise.all(dependencies).then(() => {\n  app.listen(3000, () => {\n    console.log('Example app listening on port 3000!');\n  });\n});\n```\n`admin.router.js`\n```javascript\nconst express = require('express');\nconst router = express.Router();\n\nconst auth = require('@dav-nazaryan/brainstorm-task');\n\nrouter.post('/update', async (req, res, next) => {\n  try {\n    auth.bearer('admin', req.headers.authorization);\n    next();\n  } catch (e) {\n    next(e);\n  }\n});\n```\n\n# API\n\n## Main module\n\n<dl>\n<dt><a href=\"#init\">init(id, [options])</a> ⇒ <code>Promise</code></dt>\n<dd><p>Create new auth instance and save it inside module scope</p>\n</dd>\n<dt><a href=\"#get\">get(id)</a> ⇒ <code><a href=\"#Auth\">Auth</a></code></dt>\n<dd><p>Get instance from instances scope</p>\n</dd>\n<dt><a href=\"#callInstanceMethod\">callInstanceMethod(id, method, data)</a></dt>\n<dd><p>Call method of auth instance without getting it</p>\n</dd>\n<dt><a href=\"#activate\">activate(id, userId)</a></dt>\n<dd><p>Activate user in mongo for current auth instance</p>\n</dd>\n<dt><a href=\"#deactivate\">deactivate(id, userId)</a></dt>\n<dd><p>Deactivate user in mongo for current auth instance</p>\n</dd>\n<dt><a href=\"#register\">register(id, login, password, [options])</a></dt>\n<dd><p>Register new user in mongo for current auth instance</p>\n</dd>\n<dt><a href=\"#getUser\">getUser(id, login, password)</a></dt>\n<dd><p>Get user object from mongo for current auth instance</p>\n</dd>\n<dt><a href=\"#logIn\">logIn(id, login, password)</a> ⇒ <code>object</code></dt>\n<dd><p>Login registered user for current auth instance</p>\n</dd>\n<dt><a href=\"#bearer\">bearer(id, token)</a></dt>\n<dd><p>Check user access token for current auth instance</p>\n</dd>\n<dt><a href=\"#refresh\">refresh(id, accessToken, refreshToken)</a></dt>\n<dd><p>Check user access token for current auth instance</p>\n</dd>\n<dt><a href=\"#logOut\">logOut(id, userId, [options], login, password)</a></dt>\n<dd><p>Cut the users sessions via removing token/all tokens for current auth instance</p>\n</dd>\n<dt><a href=\"#update\">update(id, userId, [login], [password])</a></dt>\n<dd><p>Update user login or password</p>\n</dd>\n</dl>\n\n<a name=\"Auth\"></a>\n\n### Auth\n\n**Kind**: global constant\n<a name=\"init\"></a>\n\n### init(id, [options]) ⇒ <code>Promise</code>\nCreate new auth instance and save it inside module scope\n\n**Kind**: global function\n\n| Param | Type | Description |\n| --- | --- | --- |\n| id | <code>string</code> | unique id of auth instance |\n| [options] | <code>object</code> | new instance configs |\n\n<a name=\"get\"></a>\n\n### get(id) ⇒ [<code>Auth</code>](#Auth)\nGet instance from instances scope\n\n**Kind**: global function\n**Returns**: [<code>Auth</code>](#Auth) - - auth object instance\n\n| Param | Type | Description |\n| --- | --- | --- |\n| id | <code>string</code> | unique id of auth instance |\n\n<a name=\"callInstanceMethod\"></a>\n\n### callInstanceMethod(id, method, data)\nCall method of auth instance without getting it\n\n**Kind**: global function\n\n| Param | Type | Description |\n| --- | --- | --- |\n| id | <code>string</code> | instance id |\n| method | <code>string</code> | method to call |\n| data | <code>object</code> | data that need to be provided ot method |\n\n<a name=\"activate\"></a>\n\n### activate(id, userId)\nActivate user in mongo for current auth instance\n\n**Kind**: global function\n\n| Param | Type |\n| --- | --- |\n| id | <code>string</code> |\n| userId | <code>string</code> |\n\n<a name=\"deactivate\"></a>\n\n### deactivate(id, userId)\nDeactivate user in mongo for current auth instance\n\n**Kind**: global function\n\n| Param | Type |\n| --- | --- |\n| id | <code>string</code> |\n| userId | <code>string</code> |\n\n<a name=\"register\"></a>\n\n### register(id, login, password, [options])\nRegister new user in mongo for current auth instance\n\n**Kind**: global function\n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| id | <code>string</code> |  | instance id |\n| login | <code>string</code> |  |  |\n| password | <code>string</code> |  |  |\n| [options] | <code>object</code> |  | options object |\n| [options.login] | <code>boolean</code> | <code>false</code> | log in newly created user and return his token pair,   user must be activate for this option |\n| [options.active] | <code>boolean</code> |  | activate newly created user |\n| [options.getUser] | <code>boolean</code> | <code>false</code> | return new user object, options.login must be false |\n\n<a name=\"getUser\"></a>\n\n### getUser(id, login, password)\nGet user object from mongo for current auth instance\n\n**Kind**: global function\n\n| Param | Type | Description |\n| --- | --- | --- |\n| id | <code>string</code> | instance id |\n| login | <code>string</code> |  |\n| password | <code>string</code> |  |\n\n<a name=\"logIn\"></a>\n\n### logIn(id, login, password) ⇒ <code>object</code>\nLogin registered user for current auth instance\n\n**Kind**: global function\n**Returns**: <code>object</code> - - access and refresh tokens pair\n\n| Param | Type | Description |\n| --- | --- | --- |\n| id | <code>string</code> | instance id |\n| login | <code>string</code> |  |\n| password | <code>string</code> |  |\n\n<a name=\"bearer\"></a>\n\n### bearer(id, token)\nCheck user access token for current auth instance\n\n**Kind**: global function\n\n| Param | Type | Description |\n| --- | --- | --- |\n| id | <code>string</code> | instance id |\n| token | <code>string</code> | jwt access token |\n\n<a name=\"refresh\"></a>\n\n### refresh(id, accessToken, refreshToken)\nCheck user access token for current auth instance\n\n**Kind**: global function\n\n| Param | Type | Description |\n| --- | --- | --- |\n| id | <code>string</code> | instance id |\n| accessToken | <code>string</code> | jwt access token |\n| refreshToken | <code>string</code> | one time refresh token |\n\n<a name=\"logOut\"></a>\n\n### logOut(id, userId, [options], login, password)\nCut the users sessions via removing token/all tokens for current auth instance\n\n**Kind**: global function\n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| id | <code>string</code> |  | instance id |\n| userId | <code>string</code> |  | user mongo objectId |\n| [options] | <code>object</code> |  | options object |\n| [options.authByCredentials] | <code>boolean</code> | <code>false</code> | use user_id or get it via checking credentials |\n| [options.hard] | <code>boolean</code> | <code>false</code> | cut all user sessions (logout from all devices) |\n| [options.refreshToken] | <code>boolean</code> | <code>false</code> | use user_id or get it via checking credentials |\n| login | <code>string</code> |  |  |\n| password | <code>string</code> |  |  |\n\n<a name=\"update\"></a>\n\n### update(id, userId, [login], [password])\nUpdate user login or password\n\n**Kind**: global function\n\n| Param | Type | Description |\n| --- | --- | --- |\n| id | <code>string</code> | instance id |\n| userId | <code>string</code> | user mongo objectId |\n| [login] | <code>string</code> |  |\n| [password] | <code>string</code> |  |\n\n\n\n\n\n\n## Auth Instance\n**Kind**: global class\n\n* [Auth](#Auth)\n    * [new Auth([options])](#new_Auth_new)\n    * [.connect(enforcer)](#Auth+connect)\n    * [.initModels(enforcer)](#Auth+initModels)\n    * [.validateCredentials(login, password)](#Auth+validateCredentials)\n    * [.register(login, password, [options])](#Auth+register)\n    * [.getUser(login, password)](#Auth+getUser) ⇒ <code>object</code>\n    * [.logIn(login, password)](#Auth+logIn) ⇒ <code>object</code>\n    * [.activate(userId)](#Auth+activate)\n    * [.deactivate(userId)](#Auth+deactivate)\n    * [.bearer(token)](#Auth+bearer)\n    * [.refresh(accessToken, refreshToken)](#Auth+refresh) ⇒ <code>object</code>\n    * [.logOut(userId, [options], login, password)](#Auth+logOut)\n    * [.update(userId, [login], [password])](#Auth+update)\n\n<a name=\"new_Auth_new\"></a>\n\n#### new Auth([options])\n**Returns**: <code>auth</code> - - new auth object\n\n| Param | Type | Description |\n| --- | --- | --- |\n| [options] | <code>object</code> | options object |\n| [options.mongoUrl] | <code>object</code> | mongo connection url |\n| [options.collections.user] | <code>object</code> | user collection name |\n| [options.collections.token] | <code>object</code> | token collection name |\n\n<a name=\"Auth+connect\"></a>\n\n#### auth.connect(enforcer)\nConnect Auth object to mongo\n\n**Kind**: instance method of [<code>Auth</code>](#Auth)\n\n| Param | Type | Description |\n| --- | --- | --- |\n| enforcer | <code>symbol</code> | to avoid this method calling out of module |\n\n<a name=\"Auth+initModels\"></a>\n\n#### auth.initModels(enforcer)\nAdd models to instance, it can be done after instance db connect\n\n**Kind**: instance method of [<code>Auth</code>](#Auth)\n\n| Param | Type | Description |\n| --- | --- | --- |\n| enforcer | <code>symbol</code> | to avoid this method calling out of module |\n\n<a name=\"Auth+validateCredentials\"></a>\n\n#### auth.validateCredentials(login, password)\nValidate login and password\n\n**Kind**: instance method of [<code>Auth</code>](#Auth)\n\n| Param | Type |\n| --- | --- |\n| login | <code>string</code> |\n| password | <code>string</code> |\n\n<a name=\"Auth+register\"></a>\n\n#### auth.register(login, password, [options])\nRegister new user in mongo for current auth instance\n\n**Kind**: instance method of [<code>Auth</code>](#Auth)\n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| login | <code>string</code> |  |  |\n| password | <code>string</code> |  |  |\n| [options] | <code>object</code> |  | options object |\n| [options.login] | <code>object</code> | <code>false</code> | log in newly created user and return his token pair,     user must be activate for this option |\n| [options.active] | <code>object</code> | <code>false</code> | activate newly created user |\n| [options.getUser] | <code>object</code> | <code>false</code> | return new user object, options.login must be false |\n\n<a name=\"Auth+getUser\"></a>\n\n#### auth.getUser(login, password) ⇒ <code>object</code>\nCheck user auth credentials without logging him in\n\n**Kind**: instance method of [<code>Auth</code>](#Auth)\n**Returns**: <code>object</code> - - user object\n\n| Param | Type |\n| --- | --- |\n| login | <code>string</code> |\n| password | <code>string</code> |\n\n<a name=\"Auth+logIn\"></a>\n\n#### auth.logIn(login, password) ⇒ <code>object</code>\nLogin registered user\n\n**Kind**: instance method of [<code>Auth</code>](#Auth)\n**Returns**: <code>object</code> - - access and refresh tokens pair\n\n| Param | Type |\n| --- | --- |\n| login | <code>string</code> |\n| password | <code>string</code> |\n\n<a name=\"Auth+activate\"></a>\n\n#### auth.activate(userId)\nActivate registered user\n\n**Kind**: instance method of [<code>Auth</code>](#Auth)\n\n| Param | Type |\n| --- | --- |\n| userId | <code>string</code> |\n\n<a name=\"Auth+deactivate\"></a>\n\n#### auth.deactivate(userId)\nDeactivate registered user\n\n**Kind**: instance method of [<code>Auth</code>](#Auth)\n\n| Param | Type |\n| --- | --- |\n| userId | <code>string</code> |\n\n<a name=\"Auth+bearer\"></a>\n\n#### auth.bearer(token)\nCheck user access token\n\n**Kind**: instance method of [<code>Auth</code>](#Auth)\n\n| Param | Type | Description |\n| --- | --- | --- |\n| token | <code>string</code> | jwt access token |\n\n<a name=\"Auth+refresh\"></a>\n\n#### auth.refresh(accessToken, refreshToken) ⇒ <code>object</code>\nGenerate new refresh and access tokens pair and update document\n\n**Kind**: instance method of [<code>Auth</code>](#Auth)\n**Returns**: <code>object</code> - - access and refresh tokens pair\n\n| Param | Type | Description |\n| --- | --- | --- |\n| accessToken | <code>string</code> | jwt access token |\n| refreshToken | <code>string</code> | one time refresh token |\n\n<a name=\"Auth+logOut\"></a>\n\n#### auth.logOut(userId, [options], login, password)\nThe logOut method will mostly be used by admins cut the users session,\n  that's why I provide credentials check as an option\n\n**Kind**: instance method of [<code>Auth</code>](#Auth)\n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| userId | <code>string</code> |  | user mongo objectId |\n| [options] | <code>object</code> |  | options object |\n| [options.authByCredentials] | <code>boolean</code> | <code>false</code> | use user_id     or get it via checking credentials |\n| [options.hard] | <code>boolean</code> | <code>false</code> | cut all user sessions (logout from all devices) |\n| [options.refreshToken] | <code>boolean</code> | <code>false</code> | use user_id or get it via checking credentials |\n| login | <code>string</code> |  |  |\n| password | <code>string</code> |  |  |\n\n<a name=\"Auth+update\"></a>\n\n#### auth.update(userId, [login], [password])\nUpdate user login or password\n\n**Kind**: instance method of [<code>Auth</code>](#Auth)\n\n| Param | Type | Description |\n| --- | --- | --- |\n| userId | <code>string</code> | user mongo objectId |\n| [login] | <code>string</code> |  |\n| [password] | <code>string</code> |  |\n","readmeFilename":"README.md"}