{"_id":"passport-json","_rev":"7-303cd22d08cdb84b1b8eff3b943a5b75","name":"passport-json","description":"A Passport.js strategy for username/password authentication via JSON from the request body","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"passport-json","version":"1.0.0","description":"A Passport.js strategy for username/password authentication via JSON from the request body","repository":{"type":"git","url":"git+https://github.com/JamesMGreene/passport-json.git"},"keywords":["passport","strategy","passport-strategy","passportstrategy","passportplugin","authentication","auth","identity","json","middleware"],"author":{"name":"James M. Greene","email":"james.m.greene@gmail.com","url":"http://greene.io/"},"license":"MIT","bugs":{"url":"https://github.com/JamesMGreene/passport-json/issues"},"homepage":"https://github.com/JamesMGreene/passport-json#readme","scripts":{"test":"grunt travis --verbose"},"config":{"blanket":{"pattern":"","data-cover-never":["node_modules","test"],"data-cover-reporter-options":{"relativepath":true}},"travis-cov":{"threshold":100}},"dependencies":{"passport-strategy":"^1.0.0"},"devDependencies":{"chai":"^3.4.1","chai-passport-strategy":"^0.2.0","grunt":"^0.4.5","grunt-contrib-jshint":"^0.11.3","grunt-env":"^0.4.4","grunt-mocha-cov":"^0.4.0","grunt-open":"^0.2.3","mocha":"^2.3.4","travis-cov":"^0.2.5"},"gitHead":"f544016746db8775e458564e5bb6c3d57936a6e6","_id":"passport-json@1.0.0","_shasum":"068e7810a6b9a7fc6eceebe4da16ee61180b00ff","_from":".","_npmVersion":"3.4.0","_nodeVersion":"4.2.2","_npmUser":{"name":"jamesmgreene","email":"james.m.greene@gmail.com"},"maintainers":[{"name":"jamesmgreene","email":"james.m.greene@gmail.com"}],"dist":{"shasum":"068e7810a6b9a7fc6eceebe4da16ee61180b00ff","tarball":"https://registry.npmjs.org/passport-json/-/passport-json-1.0.0.tgz","integrity":"sha512-a+yR8HntIffqmmcekrPYhlF2bxouW9OhW+zdhZJ6EUJQl8QF/NI8hdekixEj6YlTM/t45PGo+Ndps3k4SqgJzQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHk5A3q5r6K3e4f5fF/z2Z8ob8D0/8MY9o+uo6ZRjY2/AiBvJ046RWLPJLKnLmnjGf7lrIevSFS8k7n9jnRSXj2AXA=="}]},"directories":{}},"1.1.0":{"name":"passport-json","version":"1.1.0","description":"A Passport.js strategy for username/password authentication via JSON from the request body","repository":{"type":"git","url":"git+https://github.com/JamesMGreene/passport-json.git"},"keywords":["passport","strategy","passport-strategy","passportstrategy","passportplugin","authentication","auth","identity","json","middleware"],"author":{"name":"James M. Greene","email":"james.m.greene@gmail.com","url":"http://greene.io/"},"license":"MIT","bugs":{"url":"https://github.com/JamesMGreene/passport-json/issues"},"homepage":"https://github.com/JamesMGreene/passport-json#readme","scripts":{"test":"grunt travis --verbose"},"config":{"blanket":{"pattern":"","data-cover-never":["node_modules","test"],"data-cover-reporter-options":{"relativepath":true}},"travis-cov":{"threshold":100}},"dependencies":{"passport-strategy":"^1.0.0"},"devDependencies":{"chai":"^3.4.1","chai-passport-strategy":"^0.2.0","grunt":"^0.4.5","grunt-contrib-jshint":"^0.11.3","grunt-env":"^0.4.4","grunt-mocha-cov":"^0.4.0","grunt-open":"^0.2.3","mocha":"^2.3.4","travis-cov":"^0.2.5"},"gitHead":"f27ba78bcf37cd4c0c004e987a95b60f6a077531","_id":"passport-json@1.1.0","_shasum":"ab7b98bde5934788ecb2ef1ffb3817287a1fb4e1","_from":".","_npmVersion":"3.4.0","_nodeVersion":"4.2.2","_npmUser":{"name":"jamesmgreene","email":"james.m.greene@gmail.com"},"maintainers":[{"name":"jamesmgreene","email":"james.m.greene@gmail.com"}],"dist":{"shasum":"ab7b98bde5934788ecb2ef1ffb3817287a1fb4e1","tarball":"https://registry.npmjs.org/passport-json/-/passport-json-1.1.0.tgz","integrity":"sha512-UyanGbhGKMvfvogbubT1cvu9hhhjQ2X8Nkj7suF/n4B8K58fk/iI9AdIwcQN2T7t85+/w3jffsZwlePWEPow5A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFjpQClK/DlURQxCDqqJqajzzPInB677DWgekHFnQ+d6AiAC0kwY5CK0e63M9lS3rvTdXi1t1kbrrAU5GZbA77oOtg=="}]},"directories":{}},"1.2.0":{"name":"passport-json","version":"1.2.0","description":"A Passport.js strategy for username/password authentication via JSON from the request body","repository":{"type":"git","url":"git+https://github.com/JamesMGreene/passport-json.git"},"keywords":["passport","strategy","passport-strategy","passportstrategy","passportplugin","authentication","auth","identity","json","middleware"],"author":{"name":"James M. Greene","email":"james.m.greene@gmail.com","url":"http://greene.io/"},"license":"MIT","bugs":{"url":"https://github.com/JamesMGreene/passport-json/issues"},"homepage":"https://github.com/JamesMGreene/passport-json#readme","scripts":{"test":"grunt travis --verbose"},"config":{"blanket":{"pattern":"","data-cover-never":["node_modules","test"],"data-cover-reporter-options":{"relativepath":true}},"travis-cov":{"threshold":100}},"dependencies":{"passport-strategy":"^1.0.0"},"devDependencies":{"chai":"^3.4.1","chai-passport-strategy":"^0.2.0","grunt":"^0.4.5","grunt-contrib-jshint":"^0.11.3","grunt-env":"^0.4.4","grunt-mocha-cov":"^0.4.0","grunt-open":"^0.2.3","mocha":"^2.3.4","travis-cov":"^0.2.5"},"gitHead":"af7a13705c4e527b9c275ed21b6e88c3cd0ac643","_id":"passport-json@1.2.0","_shasum":"c974f35a486f5a400df8b95aa0007f8715f467d4","_from":".","_npmVersion":"3.4.0","_nodeVersion":"4.2.2","_npmUser":{"name":"jamesmgreene","email":"james.m.greene@gmail.com"},"maintainers":[{"name":"jamesmgreene","email":"james.m.greene@gmail.com"}],"dist":{"shasum":"c974f35a486f5a400df8b95aa0007f8715f467d4","tarball":"https://registry.npmjs.org/passport-json/-/passport-json-1.2.0.tgz","integrity":"sha512-q4K7iMjz4wlSXsxSbtCnNXSxFYFKScYAJDUuisAhJrDKrSSUTRQ4jVOzEnEyvX+dHrHQORo52HKjemxZPu0QGA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAm7WO98m/QwaQpSeNfJlDWGjhoF2d9Agga7193UiyEbAiAq/rg4Y1w7mU1CFs1ybRyF1rE7Lo9lTnKkA5ZaS0PvEg=="}]},"directories":{}}},"readme":"# passport-json\n[![GitHub Latest Release](https://badge.fury.io/gh/JamesMGreene%2Fpassport-json.svg)](https://github.com/JamesMGreene/passport-json) [![Build Status](https://secure.travis-ci.org/JamesMGreene/passport-json.svg?branch=master)](https://travis-ci.org/JamesMGreene/passport-json) [![Coverage Status](https://coveralls.io/repos/JamesMGreene/passport-json/badge.svg?branch=master&service=github)](https://coveralls.io/github/JamesMGreene/passport-json?branch=master) [![Dependency Status](https://david-dm.org/JamesMGreene/passport-json.svg?theme=shields.io)](https://david-dm.org/JamesMGreene/passport-json) [![Dev Dependency Status](https://david-dm.org/JamesMGreene/passport-json/dev-status.svg?theme=shields.io)](https://david-dm.org/JamesMGreene/passport-json#info=devDependencies)\n\n\nA [Passport][] strategy for username/password authentication via JSON from the request body.\n\nThis module lets you authenticate using a username and password in your Node.js\napplications.  By plugging into Passport, JSON authentication can be easily and\nunobtrusively integrated into any application or framework that supports\n[Connect][]-style middleware, including\n[Express][].\n\n\n## Install\n\n```shell\n$ npm install passport-json\n```\n\n\n## Usage\n\n### Prerequisites\n\nBefore you can use this strategy, you _MUST_ ensure that your request (`req`) object always has a `body` property that is populated appropriately with parsed JSON.\n\nFor example, if you are using Passport and this strategy within Express `4.x` or above, you would want to set up the [`'body-parser'` middleware](https://www.npmjs.com/package/body-parser) to parse the request body's JSON before setting up the Passport middleware:\n\n```js\nvar express = require('express');\nvar bodyParser = require('body-parser');\n\nvar app = express();\n\napp.use(bodyParser.json());\n```\n\n\n### Configure Strategy\n\nThe JSON authentication strategy authenticates users using a username and\npassword.  The strategy requires a `verify` callback, which accepts these\ncredentials and calls `done` providing a user.\n\n```js\nvar JsonStrategy = require('passport-json').Strategy;\n\npassport.use(new JsonStrategy(\n  function(username, password, done) {\n    Users.findOne({ username: username }, function (err, user) {\n      if (err) { return done(err); }\n      if (!user) { return done(null, false); }\n      if (!user.verifyPassword(password)) { return done(null, false); }\n      return done(null, user);\n    });\n  }\n));\n```\n\n#### Available Options\n\nThis strategy takes an optional options hash before the `verify` function, e.g. `new JsonStrategy(/* { options }, */ verify)`.\n\nThe available options include:\n\n - `usernameProp` - Optional, defaults to `'username'`\n - `passwordProp` - Optional, defaults to `'password'`\n - `passReqToCallback` - Optional, defaults to `false`\n - `allowEmptyPasswords` - Optional, defaults to `false`\n\n\n##### Using Those Options\n\n###### `usernameProp`\n###### `passwordProp`\n\nBy default, the `JsonStrategy` expects to find credentials in JSON properties named `'username'` and `'password'`, e.g.:\n\n```json\n{\n  \"username\": \"JamesMGreene\",\n  \"password\": \"Th3 8e57 p@$sw0rd 3v4r\"\n}\n```\n\nIf your app prefers to name these properties differently, the `usernameProp` and `passwordProp` options are available to change the defaults:\n\n```js\npassport.use(new JsonStrategy(\n  {\n    usernameProp: 'email',\n    passwordProp: 'passwd'\n  },\n  function(username, password, done) {\n    // ...\n  }\n));\n```\n\nAdditionally, if your app prefers to have these properties be nested within other object(s), the `usernameProp` and `passwordProp` options are available to support that using either dot or bracket [minus the quotes] notation as well:\n\n```js\npassport.use(new JsonStrategy(\n  {\n    usernameProp: 'user.email',\n    passwordProp: 'user[passwd]'\n  },\n  function(username, password, done) {\n    // ...\n  }\n));\n```\n\n\n###### `passReqToCallback`\n\nThe `verify` callback can be supplied with the `request` object _as the first argument_ by setting the `passReqToCallback` option to `true`, and changing the expected callback parameters accordingly. This may be useful if you also need access to the request's HTTP headers. For example:\n\n```js\npassport.use(new JsonStrategy(\n  {\n    usernameProp: 'email',\n    passwordProp: 'passwd',\n    passReqToCallback: true\n  },\n  function(req, username, password, done) {\n    // request object is now first argument\n    // ...\n  }\n));\n```\n\n\n###### `allowEmptyPasswords`\n\nBy setting the `allowEmptyPasswords` option to `true`, passwords of empty string (`''`) will be allowed to pass the validation checks. For example:\n\n```js\npassport.use(new JsonStrategy(\n  {\n    allowEmptyPasswords: false\n  },\n  function(username, password, done) {\n    // ...\n  }\n));\n```\n\n\n### Authenticating Requests\n\nUse `passport.authenticate('json')` to specify that you want to employ the configured `'json'` strategy to authenticate requests.\n\nFor example, as route middleware in an [Express][] application:\n\n```js\napp.post(\n  '/login', \n  passport.authenticate('json', { failureRedirect: '/login' }),\n  function(req, res) {\n    res.redirect('/');\n  }\n);\n```\n\n\n## License\n\nCopyright (c) 2015, James M. Greene (MIT License)\n\n\n\n<!--- RESOURCE LINKS -->\n\n[Passport]: http://passportjs.org/\n[Connect]: http://www.senchalabs.org/connect/\n[Express]: http://expressjs.com/\n","maintainers":[{"name":"jamesmgreene","email":"james.m.greene@gmail.com"}],"time":{"modified":"2022-06-23T12:51:51.727Z","created":"2015-12-03T18:16:27.189Z","1.0.0":"2015-12-03T18:16:27.189Z","1.1.0":"2015-12-03T18:58:36.728Z","1.2.0":"2015-12-04T12:32:11.358Z"},"homepage":"https://github.com/JamesMGreene/passport-json#readme","keywords":["passport","strategy","passport-strategy","passportstrategy","passportplugin","authentication","auth","identity","json","middleware"],"repository":{"type":"git","url":"git+https://github.com/JamesMGreene/passport-json.git"},"author":{"name":"James M. Greene","email":"james.m.greene@gmail.com","url":"http://greene.io/"},"bugs":{"url":"https://github.com/JamesMGreene/passport-json/issues"},"license":"MIT","readmeFilename":"README.md","users":{"sn0wdr1am":true,"mike-feldmeier":true}}