{"_id":"connect-roles","_rev":"73-498ce89451705a1244a77950ff13330d","name":"connect-roles","description":"Provides dynamic roles based authorization for node.js connect and express servers.","dist-tags":{"latest":"3.1.2"},"versions":{"0.0.1":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"0.0.1","homepage":"http://documentup.com/Tuskan360/connect-roles","repository":{"type":"git","url":"git://github.com/Tuskan360/connect-roles.git"},"main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"connect-roles@0.0.1","scripts":{"start":"node server.js"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"893a6c4d9636475baf40cd10256f547a9132cee9","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-0.0.1.tgz","integrity":"sha512-IpQsb4XXJ4T1scj1dWPuOyxzLcTiFfnwSTZWK36ZB5ehVGq+6Wq+QArQGm5VSZ62rwsHuDDhFkh8JsxiB99Ypw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGM0FQ2qeVz8dIuNumtgrwBkzDSYqiCbRLWCF+y/H3vOAiEA6VBJ2ShgsGhk8XOMUAv8gLT7smf6Ssm8YQUTTtLrEwk="}]},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}],"directories":{}},"0.1.0":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"0.1.0","homepage":"http://documentup.com/Tuskan360/connect-roles","repository":{"type":"git","url":"git://github.com/Tuskan360/connect-roles.git"},"main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"connect-roles@0.1.0","scripts":{"start":"node server.js"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"9c1c2a3a93c682602689cbf44f80460d822b6f59","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-0.1.0.tgz","integrity":"sha512-2dO74jIvgAzaaqL1azh/4DzyxHkgT2j8905csY8gqaIUN2Qj22nKjzdsAazcFGU21Vo8AxmhuydG1p8vnZ8otQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHUIYsISocSjJbHUx36PhI00k8FJvLdTyyr2Jn6iaIeAAiB6FZ0TIvssUpQaUNft2nRPxk+b5yw9W7hiqFx2zrKlUg=="}]},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}],"directories":{}},"0.1.1":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"0.1.1","homepage":"http://documentup.com/Tuskan360/connect-roles","repository":{"type":"git","url":"git://github.com/Tuskan360/connect-roles.git"},"main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"connect-roles@0.1.1","scripts":{"start":"node server.js"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"df63ffed8c2dd3ede4206539dd499ae2110f19eb","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-0.1.1.tgz","integrity":"sha512-QE2RQCQWJWkazI0fcdYYv0nj5W365Alqvk0h8STj/WxXmMErpeFDA7R20AYDqO9gL/bDEVrnOtoJSTcUSDmzhw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2oFCosFaEy5H5h9UslDGLaI1DrH3YVJCIVQKrmFN6xAIgf35PER2f5ToXAj75vKh1GibOW7kXkqlpvs8QY9ojke0="}]},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}],"directories":{}},"0.1.2":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"0.1.2","homepage":"http://documentup.com/Tuskan360/connect-roles","repository":{"type":"git","url":"git://github.com/Tuskan360/connect-roles.git"},"main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"connect-roles@0.1.2","scripts":{"start":"node server.js"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"6f31451048c8fa4e3a764f054235f96ec2ed5f5b","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-0.1.2.tgz","integrity":"sha512-D3XVK4zIY3+qBLe+DnzbyY4RGGe5UhLBtGst60Z3da4vrXNiP35CU0CX2MCj102EAHzJLQK6ZM6PuehK0j54Ow==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYmTZQKK4bLeBV+3yvzCnSFxX26lvsNvcQIlkG3gBsLwIhAL95vRHXXXMSlIKNkMdQMeH0ARtjFf6NibNkPf/cuZLh"}]},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}],"directories":{}},"0.1.3":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"0.1.3","homepage":"http://documentup.com/Tuskan360/connect-roles","repository":{"type":"git","url":"git://github.com/Tuskan360/connect-roles.git"},"main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"connect-roles@0.1.3","scripts":{"start":"node server.js"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"495ebf34a706001806a2e3f5889376b83973b071","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-0.1.3.tgz","integrity":"sha512-e2n5y074gi1PpSlTy0gr8S5iepuoyf1wxSALaQoJi+kOTu87b+VZrl4D/u1tgjsZC/dWlCJGwSlzvq9hT7lznw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHwv5jPp356QWB0MF9m3lRbr3rmyje4w5vBt9lJ+nkxcAiEAtEBy2/uAPd0phc0El2xDADJaaEo9i920OvV+AltkvYA="}]},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}],"directories":{}},"0.1.4":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"0.1.4","homepage":"http://documentup.com/Tuskan360/connect-roles","repository":{"type":"git","url":"git://github.com/Tuskan360/connect-roles.git"},"main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"connect-roles@0.1.4","scripts":{"start":"node server.js"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"386b91a2c48ab24e491bb9119d9a5d3583611fa6","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-0.1.4.tgz","integrity":"sha512-EliUmgygLH2vCR0RVbY5bEV7QPy1L5iQieFa9O4U079NXsTpgEnCBYe3fm+S7TKJ3RL7jWzrywoS+ZRonogFMg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIELwIAylPSEsPDqwWyB8N8lmtG2mOPNgiWEVCAQi29oNAiBZXDdUjbkR12meTexGQu9RF/44s3IFMbE6++6rtF1cAw=="}]},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}],"directories":{}},"0.1.5":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"0.1.5","homepage":"http://documentup.com/Tuskan360/connect-roles","repository":{"type":"git","url":"git://github.com/Tuskan360/connect-roles.git"},"main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"connect-roles@0.1.5","scripts":{"start":"node server.js"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"592c4bd7d1b00d2b935bdc58e95e925e8362da68","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-0.1.5.tgz","integrity":"sha512-+k0Oy5jpylPZECZ2Uy9FCINS2Uhl1cIoL3lpWhzLCSXlrwm24dIZhkFgmhOMaH04ScvIYkt2RJeEXTckauUc4g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2byKeEh55SMQGqIiYWzNUc+Dykz3kEDG4hLzJDjV0nwIgNu7orTjjwdS9vxhcUID1xKSsPEZEy0X0THnfgqBkP48="}]},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}],"directories":{}},"0.1.6":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"0.1.6","homepage":"http://documentup.com/Tuskan360/connect-roles","repository":{"type":"git","url":"git://github.com/Tuskan360/connect-roles.git"},"main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"connect-roles@0.1.6","scripts":{"start":"node server.js"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"9e612881095e5f643de644dd8ace14c51301fbee","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-0.1.6.tgz","integrity":"sha512-tBgwISw+g91UjhPe+p6PsHATL6F640rtJJ/SB6FPRPocr8OkIb7yutgfdbP70+4ce7bQz3nHpnpZErjW+Hs/PA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCh8VNZxoq5F1Ivg9Mg99OvXGY7R+cuVN9CyA2hTAlfNwIhAMnJWv0Z5egvICzDoQcUS36bpWZR8WNxZR2gE2o1Vtjk"}]},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}],"directories":{}},"0.1.7":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"0.1.7","homepage":"http://documentup.com/ForbesLindesay/connect-roles","repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"main":"./index","_npmUser":{"name":"forbes","email":"forbes@lindesay.co.uk"},"_id":"connect-roles@0.1.7","scripts":{"start":"node server.js"},"dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"3c6154212b8cae189eda9e18ef330dff1dccb269","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-0.1.7.tgz","integrity":"sha512-ObeOPS8ltoYV5d5cBj5XnXPPSZJBKjIGfSxU0u8+9gIWKM84euGwKI0OzPTFRzSTBM4lc7t8WVmRXn4pCIqeXQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/4a63ZFOsoHQWmph2bKHVOllwErTP5TriWwKzJrYPKwIgMoGMAnnSDZS8hpQaheG6w48VY16CfDvFuLz3SA6F8uY="}]},"maintainers":[{"name":"forbes","email":"forbes@lindesay.co.uk"}],"directories":{}},"1.0.0":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"1.0.0","homepage":"http://documentup.com/ForbesLindesay/connect-roles","repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"main":"./index","devDependencies":{"should":"*","mocha":"*"},"scripts":{"prepublish":"mocha","test":"mocha -R spec","start":"node server.js"},"author":{"name":"Forbes Lindesay"},"license":"BSD","keywords":["roles","authorization","authentication","security","connect","express","passport","everyauth"],"_id":"connect-roles@1.0.0","dist":{"shasum":"a480a6c000ae6efa6222c5750918a22355bb040e","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-1.0.0.tgz","integrity":"sha512-pXOXTXgyWFUFwvXxDVqzcdveH0Ea1pb6Po/XZoGf/pC5Futryj4BH55JYpbOTi1IURniDU2rN5cDbcpItGCIWA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGGrq/2VnQBvkKUdJ6QTxF1W7L0IYXoMnTOmquw5xanYAiABNz8QbgTEEUXVYCHQ0347jmth5jRl/YNpybk5mcLtcg=="}]},"maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"directories":{}},"1.0.1":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"1.0.1","homepage":"http://documentup.com/ForbesLindesay/connect-roles","repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"main":"./index","devDependencies":{"should":"*","mocha":"*"},"scripts":{"prepublish":"mocha","test":"mocha -R spec","start":"node server.js"},"author":{"name":"Forbes Lindesay"},"license":"BSD","keywords":["roles","authorization","authentication","security","connect","express","passport","everyauth"],"_id":"connect-roles@1.0.1","dist":{"shasum":"5c0dabed074ad4fbcc367b62af1c2e6ec27f6ddd","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-1.0.1.tgz","integrity":"sha512-/UT6Z/aZhlCHzc+EcH4j1Ve98VcG79CTwOmz9BIxEywrtbZ02oW0+iGaOVFS9Mrj0vOx8NcHzaS6f2tspMoxFw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFM9vAv1gC90ami9F7W2nxbjWTcSjBXxMXzaPwNnMw2RAiEAskAAy49sCtzw5zcz9YJAnJohP5kYrl2FkqPGBvRkyL0="}]},"_npmVersion":"1.1.59","_npmUser":{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"},"maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"directories":{}},"2.0.0":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"2.0.0","homepage":"http://documentup.com/ForbesLindesay/connect-roles","repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"main":"./index","devDependencies":{"should":"*","mocha":"*"},"scripts":{"prepublish":"mocha","test":"mocha -R spec"},"author":{"name":"Forbes Lindesay"},"license":"BSD","keywords":["roles","authorization","authentication","security","connect","express","passport","everyauth"],"dependencies":{"debug":"https://github.com/ForbesLindesay/debug/archive/master.tar.gz","path-to-regexp":"https://github.com/ForbesLindesay/path-to-regexp/archive/master.tar.gz"},"_id":"connect-roles@2.0.0","dist":{"shasum":"f81f2af1769f4c1ed19cfe08d33bf90a20b6ec1e","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-2.0.0.tgz","integrity":"sha512-b4EzHXTEdDm+zjWsk92tbQlmp6UJw9kZlENuCWzr9wztWZFUb9YHvPMiKtI76tZXM6xgI1Rdq1gBXEQS+SvLSw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF72Qlyf+q5gywaApTvI08AFfOOQmVCdw3wHdjad1aoJAiEAj9lEOgy0H8VA4s/TBdewa3tGOO3v83JiY8WZDKSPsf8="}]},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"},"maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}]},"2.0.1":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"2.0.1","homepage":"http://documentup.com/ForbesLindesay/connect-roles","repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"main":"./index","devDependencies":{"should":"*","mocha":"*"},"scripts":{"prepublish":"mocha","test":"mocha -R spec"},"author":{"name":"Forbes Lindesay"},"license":"BSD","keywords":["roles","authorization","authentication","security","connect","express","passport","everyauth"],"dependencies":{"debug":"https://github.com/ForbesLindesay/debug/archive/master.tar.gz","path-to-regexp":"https://github.com/ForbesLindesay/path-to-regexp/archive/master.tar.gz"},"_id":"connect-roles@2.0.1","dist":{"shasum":"1d1d3e88036f3d5c200a3b1b35779f0b0ac0b589","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-2.0.1.tgz","integrity":"sha512-ngb3u8KO1DbB6d0tL/SPEek5JEhR7z4bJzkA+PiJzUCweRacPOmnhrYKGnZdeekNp9cellehhj0d7oaqzN5Lpg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICAwnaGso0zGH5zzaQAzNhTfPLno1DnKb3MDtde7zu2ZAiAuC9hzcLc0YveHtAInau1pWqRQPiHBO7x/7DVOtSZYRQ=="}]},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"},"maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}]},"2.0.2":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"2.0.2","homepage":"http://documentup.com/ForbesLindesay/connect-roles","repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"main":"./index","devDependencies":{"should":"*","mocha":"*"},"scripts":{"prepublish":"mocha","test":"mocha -R spec"},"author":{"name":"Forbes Lindesay"},"license":"BSD","keywords":["roles","authorization","authentication","security","connect","express","passport","everyauth"],"dependencies":{"debug":"https://github.com/ForbesLindesay/debug/archive/master.tar.gz","path-to-regexp":"https://github.com/ForbesLindesay/path-to-regexp/archive/master.tar.gz"},"_id":"connect-roles@2.0.2","dist":{"shasum":"bb244a9c889ad633282aaf8ec441d1d5785d5938","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-2.0.2.tgz","integrity":"sha512-0U/BmL863zrKsxAI4SuCqa8AyZjET1fhtV5AFXoJow0fEuua+oUiIGANFkjvrCu/WZocHLKGY1bK+pS2swFozQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFCBK6np2K1HUZjkPreacvXXNOtxm3MCN9WddxeIYgrEAiEAoQ/u+A5/7gzTwpprPreCEt1fJxQs+7/Yvw7guFomNW0="}]},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"},"maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}]},"2.0.3":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"2.0.3","homepage":"http://documentup.com/ForbesLindesay/connect-roles","repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"main":"./index","devDependencies":{"should":"*","mocha":"*"},"scripts":{"prepublish":"mocha","test":"mocha -R spec"},"author":{"name":"Forbes Lindesay"},"license":"BSD","keywords":["roles","authorization","authentication","security","connect","express","passport","everyauth"],"dependencies":{"debug":"https://github.com/ForbesLindesay/debug/archive/master.tar.gz","path-to-regexp":"https://github.com/ForbesLindesay/path-to-regexp/archive/master.tar.gz"},"_id":"connect-roles@2.0.3","dist":{"shasum":"617c453c5344e9cca8945d7bada188782d29be0b","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-2.0.3.tgz","integrity":"sha512-5riFPP4l4JK5BzBwmQ0lkJp8h1mkSk8tJpcrGNqkA7EsTTMNZmzpWsMVMZsSWvu8t32n7NCVZYrYwGNCAzfc1Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCR4dk4A0GWCfP9uCiIfMHvcsjXVuGwjU7fKiIeK6V1BwIgX0Qi0zZ0LHKWiXI01wFS8Etx906U04FH3+9V2eM/UHs="}]},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"},"maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}]},"2.1.0":{"name":"connect-roles","description":"Provides dynamic roles based authentication for node.js connect and express servers.","version":"2.1.0","homepage":"http://documentup.com/ForbesLindesay/connect-roles","repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"main":"./index","devDependencies":{"should":"*","mocha":"*"},"scripts":{"test":"mocha -R spec"},"author":{"name":"Forbes Lindesay"},"license":"BSD","keywords":["roles","authorization","authentication","security","connect","express","passport","everyauth"],"dependencies":{"debug":"0.7.2","path-to-regexp":"0.0.2"},"_id":"connect-roles@2.1.0","dist":{"shasum":"f403ec388d259628545468f55d0aa5496e011ecc","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-2.1.0.tgz","integrity":"sha512-MemiYb++D/0CTCWKitozhTO8eihmESXImOPKhjPF2nTACldx5zdX5/jGDzJVekk7vuLK6upm11tq/MaihcjSpA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAmGqQxVj5zJOBcfNM0Qhi8cu1vCEe097Jj2xPYnKes3AiEA2Jm3JJ0ZlikQm4ZWS8EcnYwcmZIiv2Xxmn//v3S6oN4="}]},"_from":".","_npmVersion":"1.2.10","_npmUser":{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"},"maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}]},"3.0.0":{"name":"connect-roles","description":"Provides dynamic roles based authorization for node.js connect and express servers.","version":"3.0.0","homepage":"http://documentup.com/ForbesLindesay/connect-roles","repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"main":"./index","devDependencies":{"mocha":"*"},"scripts":{"test":"mocha -R spec"},"author":{"name":"Forbes Lindesay"},"license":"BSD","keywords":["roles","authorization","authentication","security","connect","express","passport","everyauth"],"dependencies":{"path-to-regexp":"0.0.2","ert":"1.0.1","promise":"~4.0.0"},"bugs":{"url":"https://github.com/ForbesLindesay/connect-roles/issues"},"_id":"connect-roles@3.0.0","dist":{"shasum":"4033fb419df46b6893522a48110600d92024163b","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-3.0.0.tgz","integrity":"sha512-oqRPL2ndIC2C7WFRh59qatZSqSl/+Zfq8W7vMqFzBmVvQVgDDUxeVxbtwEQaKnN0V/K/04bYfF/CJEMhczOzCQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNSgTWCGINp+9WZo8B34tS82sHji1dUkQNdadZPOSXnwIgIqiIVEU3cM1uZTrs5dtO5mehq1Th405Ym24QfS1rPdY="}]},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"},"maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}]},"3.0.1":{"name":"connect-roles","description":"Provides dynamic roles based authorization for node.js connect and express servers.","version":"3.0.1","homepage":"http://documentup.com/ForbesLindesay/connect-roles","repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"main":"./index","devDependencies":{"mocha":"*"},"scripts":{"test":"mocha -R spec"},"author":{"name":"Forbes Lindesay"},"license":"BSD","keywords":["roles","authorization","authentication","security","connect","express","passport","everyauth"],"dependencies":{"path-to-regexp":"0.0.2","ert":"1.0.1","promise":"~4.0.0"},"bugs":{"url":"https://github.com/ForbesLindesay/connect-roles/issues"},"_id":"connect-roles@3.0.1","dist":{"shasum":"067f559281401393e38adc2482aba8a5058316f5","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-3.0.1.tgz","integrity":"sha512-zJ6jIbgoMTrRgoP2ZrroruTde8LJbbdByciV26iqe20aIkBDtS9jeMBV36TrNOG1bIrXRKEMSOeBT2J7iMRCFQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDBren1u9rmIyqd6uDAzA/gnrcPxERVSBLgJ1xluL8phAiEA2FiU2XE2eC7xQWQ8Vi2itEv3sx8bMx3VfwSFQrGTwEw="}]},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"},"maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}]},"3.0.2":{"name":"connect-roles","description":"Provides dynamic roles based authorization for node.js connect and express servers.","version":"3.0.2","homepage":"http://documentup.com/ForbesLindesay/connect-roles","repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"main":"./index","devDependencies":{"mocha":"*"},"scripts":{"test":"mocha -R spec"},"author":{"name":"Forbes Lindesay"},"license":"BSD","keywords":["roles","authorization","authentication","security","connect","express","passport","everyauth"],"dependencies":{"path-to-regexp":"0.0.2","ert":"1.0.1","promise":"~4.0.0"},"bugs":{"url":"https://github.com/ForbesLindesay/connect-roles/issues"},"_id":"connect-roles@3.0.2","dist":{"shasum":"5690f89aa97b8319aecf69bad98bf92f7a1bb475","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-3.0.2.tgz","integrity":"sha512-r+/HpJq7T2Ukfo192osCd3x/EFdUvV7om8Cvbf3WQoK38aYCJTHlczQ66NwSugqMManBpmVfCB7onCysGMXLVQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC6+CGZ+nlOYVCVQdgCUuDE/J3g0fRUIrRGMaUr6KuKeAiEAj2dz3qa7JBvXZ2RRqlGhrUQhMnkmh5bEvU+HVeWHOJY="}]},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"},"maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}]},"3.0.3":{"name":"connect-roles","description":"Provides dynamic roles based authorization for node.js connect and express servers.","version":"3.0.3","homepage":"http://documentup.com/ForbesLindesay/connect-roles","repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"main":"./index","devDependencies":{"mocha":"*"},"scripts":{"test":"mocha -R spec"},"author":{"name":"Forbes Lindesay"},"license":"BSD","keywords":["roles","authorization","authentication","security","connect","express","passport","everyauth"],"dependencies":{"path-to-regexp":"0.1.2","ert":"1.0.1","promise":"~4.0.0"},"bugs":{"url":"https://github.com/ForbesLindesay/connect-roles/issues"},"_id":"connect-roles@3.0.3","dist":{"shasum":"e392daf24dcda4f1cb6509f70aeee0d70c45a182","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-3.0.3.tgz","integrity":"sha512-rgqZ4uoifqef9mpH+F9UZGEIyPuJTDxDCq/kUlDvN/4md0mlVSFlGh2SSQfNVpOgKe1lfBnPod7mWXsESWOg/w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBo6TPhlxUCYy1W4eiNziN7gTwKXcPoJjDnzdWbdJcJyAiAoeo4tOHKN4MWBkq1zP+mhCJ7ckRw0zpcu/Tt5JEH8yA=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"forbeslindesay","email":"forbes@lindeay.co.uk"},"maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}]},"3.1.0":{"name":"connect-roles","description":"Provides dynamic roles based authorization for node.js connect and express servers.","version":"3.1.0","homepage":"http://documentup.com/ForbesLindesay/connect-roles","repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"main":"./index","devDependencies":{"mocha":"*"},"scripts":{"test":"mocha -R spec"},"author":{"name":"Forbes Lindesay"},"license":"BSD","keywords":["roles","authorization","authentication","security","connect","express","passport","everyauth"],"dependencies":{"path-to-regexp":"^1.0.1","ert":"^1.0.1","promise":"^6.0.1"},"gitHead":"e10445a30a4d8dca0d5463213c22ae9c6734b588","bugs":{"url":"https://github.com/ForbesLindesay/connect-roles/issues"},"_id":"connect-roles@3.1.0","_shasum":"63ba65c49f0f48b171c1cd9495e58f64a67b1b40","_from":".","_npmVersion":"1.5.0-alpha-4","_npmUser":{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"},"maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"dist":{"shasum":"63ba65c49f0f48b171c1cd9495e58f64a67b1b40","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-3.1.0.tgz","integrity":"sha512-bjXNWpaxgL/0Ij+qSL5wYIGjpy+cMlbW7fepytQPl+0xhcxn3SNozZyVDB6+MfIMYQblrf0vo+Jn33GT2EuHig==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHXdn2lo1hjA4/IgkdkSquC/MDXdpirV4wY+uvnPdIK7AiEAv/we8Cvodzlfaiaap/Qwhx7hCzgdbE5ykB4RYSB35v8="}]}},"3.1.1":{"name":"connect-roles","description":"Provides dynamic roles based authorization for node.js connect and express servers.","version":"3.1.1","homepage":"http://documentup.com/ForbesLindesay/connect-roles","repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"main":"./index","devDependencies":{"mocha":"*"},"scripts":{"test":"mocha -R spec"},"author":{"name":"Forbes Lindesay"},"license":"BSD","keywords":["roles","authorization","authentication","security","connect","express","passport","everyauth"],"dependencies":{"path-to-regexp":"^1.0.1","ert":"^1.0.1","promise":"^6.0.1"},"gitHead":"d811a5afe9d51e5d00ee90197c170fccd10bb491","bugs":{"url":"https://github.com/ForbesLindesay/connect-roles/issues"},"_id":"connect-roles@3.1.1","_shasum":"92c77b63f4142869282673cd2e5be870029c2779","_from":".","_npmVersion":"2.4.1","_nodeVersion":"0.10.28","_npmUser":{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"},"maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"dist":{"shasum":"92c77b63f4142869282673cd2e5be870029c2779","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-3.1.1.tgz","integrity":"sha512-DSB1BA1OsA6yHWdAbUOloGLKEMzCw9xsRMjZFotprWDTUtGddx6bF20UlMjo+agr33DMJjE3tIJdtlvJDJeRUw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBQBJHowlgqYfKeaJA0pZD5vpSFZUg+slSfONNqt6WgcAiEAtgeV9R5vBEko2E1SjkCjrHY8OA/FBvPl/+yFJkZKBpA="}]}},"3.1.2":{"name":"connect-roles","description":"Provides dynamic roles based authorization for node.js connect and express servers.","version":"3.1.2","homepage":"http://documentup.com/ForbesLindesay/connect-roles","repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"main":"./index","devDependencies":{"mocha":"*"},"scripts":{"test":"mocha -R spec"},"author":{"name":"Forbes Lindesay"},"license":"BSD","keywords":["roles","authorization","authentication","security","connect","express","passport","everyauth"],"dependencies":{"path-to-regexp":"^1.0.1","ert":"^1.0.1","promise":"^6.0.1"},"gitHead":"1f160e2cb0eb8ab15225f68b2e53df0f861f177f","bugs":{"url":"https://github.com/ForbesLindesay/connect-roles/issues"},"_id":"connect-roles@3.1.2","_shasum":"732bc627f857966dffd1797274e2ae760b072fea","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.2.0","_npmUser":{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"},"maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"dist":{"shasum":"732bc627f857966dffd1797274e2ae760b072fea","tarball":"https://registry.npmjs.org/connect-roles/-/connect-roles-3.1.2.tgz","integrity":"sha512-Fw4q/nN2C+vQ20cTWy+TAJ+qqMpGB0xU6vNC8zewnCLnnLYtvoIvyJrHjEFzOO+dShTFT8GxUupN+n3NzpbIcw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC7pfZqNqrrx8qmA+N8tC72nfg8wNDgrCsKDUUqxBmOjAiB/15+nDTK8dcNDPjly6FFJjwEwK1PO4/wiVlzSFCCyXA=="}]}}},"readme":"# Connect Roles\n<img src=\"http://i.imgur.com/opZKqAi.png\" align=\"right\"/>\n\nConnect roles is designed to work with connect or express.  It is an authorisation provider, not an authentication provider.  It is designed to support context sensitive roles/abilities, through the use of middleware style authorisation strategies.\n\nIf you're looking for an authentication system I suggest you check out [passport.js](https://github.com/jaredhanson/passport), which works perfectly with this module.\n\n[![Build Status](https://secure.travis-ci.org/ForbesLindesay/connect-roles.png?branch=master)](http://travis-ci.org/ForbesLindesay/connect-roles)\n[![Dependency Status](https://img.shields.io/david/ForbesLindesay/connect-roles.svg)](https://david-dm.org/ForbesLindesay/connect-roles)\n[![NPM version](https://img.shields.io/npm/v/connect-roles.svg)](https://www.npmjs.com/package/connect-roles)\n[![Gratipay](https://img.shields.io/gratipay/ForbesLindesay.svg)](https://gratipay.com/ForbesLindesay)\n\n## Installation\n\n    $ npm install connect-roles\n\n## Usage\n\n```javascript\nvar authentication = require('your-authentication-module-here');\nvar ConnectRoles = require('connect-roles');\nvar express = require('express');\nvar app = express();\n\nvar user = new ConnectRoles({\n  failureHandler: function (req, res, action) {\n    // optional function to customise code that runs when\n    // user fails authorisation\n    var accept = req.headers.accept || '';\n    res.status(403);\n    if (~accept.indexOf('html')) {\n      res.render('access-denied', {action: action});\n    } else {\n      res.send('Access Denied - You don\\'t have permission to: ' + action);\n    }\n  }\n});\n\napp.use(authentication)\napp.use(user.middleware());\n\n//anonymous users can only access the home page\n//returning false stops any more rules from being\n//considered\nuser.use(function (req, action) {\n  if (!req.isAuthenticated()) return action === 'access home page';\n})\n\n//moderator users can access private page, but\n//they might not be the only ones so we don't return\n//false if the user isn't a moderator\nuser.use('access private page', function (req) {\n  if (req.user.role === 'moderator') {\n    return true;\n  }\n})\n\n//admin users can access all pages\nuser.use(function (req) {\n  if (req.user.role === 'admin') {\n    return true;\n  }\n});\n\n\napp.get('/', user.can('access home page'), function (req, res) {\n  res.render('private');\n});\napp.get('/private', user.can('access private page'), function (req, res) {\n  res.render('private');\n});\napp.get('/admin', user.can('access admin page'), function (req, res) {\n  res.render('admin');\n});\n\napp.listen(3000);\n```\n\n## API\n\nTo access all methods, you must construct an instance via:\n\n```js\nvar ConnectRoles = require('connect-roles');\nvar roles = new ConnectRoles(options);\n```\n\noptions:\n\n - failureHandler {Function} - a function that takes (req, res) when the user has failed authorisation\n - async {Boolean} - experimental support for async rules\n - userProperty {String} - the property name for the user object on req.  Defaults to \"user\"\n - matchRelativePaths {Boolean} - by default, rules use absolute paths from the root of the application.\n\n### roles.use(fn(req, action))\n\nDefine and authorisation strategy which takes the current request and the action being performed.  fn may return `true`, `false` or `undefined`/`null`\n\nIf `true` is returned then no further strategies are considered, and the user is **granted** access.\n\nIf `false` is returned, no further strategies are considered, and the user is **denied** access.\n\nIf `null`/`undefined` is returned, the next strategy is considerd.  If it is the last strategy then access is **denied**.\n\n### roles.use(action, fn(req))\n\nThe strategy `fn` is only used when the action is equal to `action`.  It has the same behaviour with regards to return values as `roles.use(fn(req, action))` (see above).\n\nIt is equivallent to calling:\n\n```javascript\nroles.use(function (req, act) {\n  if (act === action) {\n    return fn(req);\n  }\n});\n```\n\n**N.B.** The action must not start with a `/` character\n\n### roles.use(action, path, fn(req))\n\nPath must be an express style route.  It will then attach any parameters to `req.params`.\n\ne.g.\n\n```javascript\nroles.use('edit user', '/user/:userID', function (req) {\n  if (req.params.userID === req.user.id) return true;\n});\n```\n\nNote that this authorisation strategy will only be used on routes that match `path`.\n\nIt is equivallent to calling:\n\n```javascript\nvar keys = [];\nvar exp = pathToRegexp(path, key);\nroles.use(function (req, act) {\n  var match;\n  if (act === action && match = exp.exec(req.path)) {\n    req = Object.create(req);\n    req.params = Object.create(req.params || {});\n    keys.forEach(function (key, i) {\n      req.params[key.name] = match[i + 1];\n    });\n    return fn(req);\n  }\n});\n```\n\n### roles.can(action) and roles.is(action)\n\n`can` and `is` are synonyms everywhere they appear.\n\nYou can use these as express route middleware:\n\n```javascript\nvar user = roles;\n\napp.get('/profile/:id', user.can('edit profile'), function (req, res) {\n  req.render('profile-edit', { id: req.params.id });\n})\napp.get('/admin', user.is('admin'), function (req, res) {\n  res.render('admin');\n}\n```\n\nIf you want to skip only the current routes, you can also use `.here`\n\n```js\napp.get('/', user.can('see admin page').here, function (req, res, next) {\n  res.render('admin-home-page');\n});\napp.get('/', function (req, res, next) {\n  res.render('default-home-page');\n});\n```\n\n### req.userCan(action) and req.userIs(action)\n\n`can` and `is` are synonyms everywhere they appear.\n\nThese functions return `true` or `false` depending on whether the user has access.\n\ne.g.\n\n```javascript\napp.get('/', function (req, res) {\n  if (req.user.is('admin')) {\n    res.render('home/admin');\n  } else if (user.can('login')) {\n    res.render('home/login');\n  } else {\n    res.render('home');\n  }\n})\n```\n\n### user.can(action) and user.is(action)\n\nInside the views of an express application you may use `userCan` and `userIs` which are equivallent to `req.userCan` and `req.userIs`\n\ne.g.\n\n```html\n<% if (userCan('impersonate')) { %>\n  <button id=\"impersonate\">Impersonate</button>\n<% } %>\n```\n\nor in jade:\n\n```jade\nif userCan('impersonate')\n  button#impersonate Impersonate\n```\n\n**N.B.** not displaying a button doesn't mean someone can't do the thing that the button would do if clicked.  The view is not where your security should go, but it is important for useability that you don't display buttons that will just result in 'access denied'.\n\n## License\n\nMIT\n\nIf you find it useful, a payment via [gittip](https://www.gittip.com/ForbesLindesay) would be appreciated.\n","maintainers":[{"name":"forbeslindesay","email":"forbes@lindesay.co.uk"}],"time":{"modified":"2022-06-13T21:43:26.485Z","created":"2012-04-13T01:26:11.487Z","0.0.1":"2012-04-13T01:26:14.455Z","0.1.0":"2012-04-15T17:14:12.548Z","0.1.1":"2012-05-20T02:13:55.317Z","0.1.2":"2012-05-20T15:08:25.328Z","0.1.3":"2012-05-20T15:17:41.389Z","0.1.4":"2012-05-20T15:26:10.697Z","0.1.5":"2012-05-20T15:27:14.153Z","0.1.6":"2012-05-20T16:39:28.361Z","0.1.7":"2012-05-20T17:03:15.251Z","1.0.0":"2012-08-24T13:09:26.076Z","1.0.1":"2012-12-27T12:44:05.020Z","2.0.0":"2013-02-08T20:09:03.738Z","2.0.1":"2013-02-08T20:17:16.244Z","2.0.2":"2013-02-08T20:23:12.416Z","2.0.3":"2013-02-10T16:32:01.115Z","2.1.0":"2013-06-13T11:46:44.650Z","3.0.0":"2014-02-19T21:24:51.908Z","3.0.1":"2014-02-19T21:31:40.432Z","3.0.2":"2014-02-19T21:33:18.420Z","3.0.3":"2014-04-22T15:04:43.067Z","3.1.0":"2014-11-03T11:43:26.342Z","3.1.1":"2015-02-04T23:32:12.616Z","3.1.2":"2016-01-03T15:01:39.810Z"},"repository":{"type":"git","url":"git://github.com/ForbesLindesay/connect-roles.git"},"author":{"name":"Forbes Lindesay"},"readmeFilename":"readme.md","homepage":"http://documentup.com/ForbesLindesay/connect-roles","keywords":["roles","authorization","authentication","security","connect","express","passport","everyauth"],"bugs":{"url":"https://github.com/ForbesLindesay/connect-roles/issues"},"license":"BSD","users":{"harinaths":true,"simnon":true,"codeshrew":true,"j3kz":true,"jmm23":true,"arbazsiddiqui":true,"ziehlke":true,"brorlandi":true,"wwwfreedom":true,"carlditzler":true,"davidcaballeroj":true,"code-curious":true,"tmurngon":true,"shaunieb":true,"rocket0191":true,"veliohart":true,"nisimjoseph":true,"leonstill":true,"456wyc":true}}