{"_id":"trollbridge","_rev":"265-7dad57e0b22ac0736f32496e54f0d1bd","name":"trollbridge","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"trollbridge","version":"0.1.0","keywords":["permissions","permission"],"author":{"name":"Chris Alvares","email":"chris.alvares@pmg.co"},"license":"MIT","_id":"trollbridge@0.1.0","maintainers":[{"name":"agencypmg","email":"tech@pmg.co"}],"homepage":"https://github.com/AgencyPMG/node-trollbridge","bugs":{"url":"https://github.com/AgencyPMG/node-trollbridge/issues"},"dist":{"shasum":"d994b4da38b9285bf99f4d3d17aebb7ca2fe4617","tarball":"https://registry.npmjs.org/trollbridge/-/trollbridge-0.1.0.tgz","integrity":"sha512-h1rcySuLXfn/r1z0txuFnf45pH29gRVtJsXOM3t//YX5zlhrEdWw5I5LoXOcnT/XXWw2xBBCX4jPI7WG6j4DIA==","signatures":[{"sig":"MEUCIA696RzvB5a39YaZLtA7L2Xb4OXaTgEfI2hdhVxmenSYAiEAyxd8xjziX3x6q71PZBn7XlI+IQujN6AAcZNoKQQgMRc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":"./","_shasum":"d994b4da38b9285bf99f4d3d17aebb7ca2fe4617","gitHead":"1f1c9e12f2e7326769aa14d13af4863a4cd8f5ee","scripts":{"test":"mocha test"},"_npmUser":{"name":"agencypmg","email":"tech@pmg.co"},"repository":{"url":"https://github.com/AgencyPMG/node-trollbridge.git","type":"git"},"_npmVersion":"1.4.16","description":"A lightweight permissions library for express & Node","directories":{},"dependencies":{"underscore":"^1.6.0"},"devDependencies":{"mocha":"^1.20.1"}},"0.0.2":{"name":"trollbridge","version":"0.0.2","keywords":["permissions","permission"],"author":{"name":"Chris Alvares","email":"chris.alvares@pmg.co"},"license":"MIT","_id":"trollbridge@0.0.2","maintainers":[{"name":"agencypmg","email":"tech@pmg.co"}],"homepage":"https://github.com/AgencyPMG/node-trollbridge","bugs":{"url":"https://github.com/AgencyPMG/node-trollbridge/issues"},"dist":{"shasum":"d8454073f9a79d6451e2759dcfbca6f349d469a5","tarball":"https://registry.npmjs.org/trollbridge/-/trollbridge-0.0.2.tgz","integrity":"sha512-J03/RXGjdussMt39aOnOjkVnlc+cVL4b18Z5XRaO6bddQo+P342wPmNc8Z5tiqTnst1wOQiYb5BKHEbfEE0dog==","signatures":[{"sig":"MEUCIB1my1uGYL/3OxAVD5ImOg15WoL4dO4Aow73Xy0zpTOXAiEAnUdDUtVnrQz/Oece6+jN206daZPeel/XoGJVP+UUQi0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"d8454073f9a79d6451e2759dcfbca6f349d469a5","gitHead":"39c68a4720221ebc84f882d3a30c0833b764d482","scripts":{"test":"mocha test"},"_npmUser":{"name":"agencypmg","email":"tech@pmg.co"},"repository":{"url":"https://github.com/AgencyPMG/node-trollbridge.git","type":"git"},"_npmVersion":"1.4.16","description":"A lightweight permissions library for express & Node","directories":{},"dependencies":{"underscore":"^1.6.0"},"devDependencies":{"mocha":"^1.20.1"}},"0.1.2":{"name":"trollbridge","version":"0.1.2","keywords":["permissions","permission"],"author":{"name":"Chris Alvares","email":"chris.alvares@pmg.co"},"license":"MIT","_id":"trollbridge@0.1.2","maintainers":[{"name":"agencypmg","email":"tech@pmg.co"}],"homepage":"https://github.com/AgencyPMG/node-trollbridge","bugs":{"url":"https://github.com/AgencyPMG/node-trollbridge/issues"},"dist":{"shasum":"2de0b15d4c8b0137d4944c48ac0ad6cc94478c16","tarball":"https://registry.npmjs.org/trollbridge/-/trollbridge-0.1.2.tgz","integrity":"sha512-Nmut3opJUGo+X8AZMlUz5lAgGV4tJeakI/qNHAk9ziAXFVgoic8fK1BN1INrcLSeng81D8t3sDRQYGGM3847RA==","signatures":[{"sig":"MEUCIQDx1aGXG/rQhMmimpGj1HSdMdKXXU69LkOezbwRrHACWwIgPw/Me5xpc7sDzv+HnWsqu4YSDuhKjUjui0Ad8ZTTFzE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"2de0b15d4c8b0137d4944c48ac0ad6cc94478c16","gitHead":"876c882a0d17df36d9469a3705ef75447b1b2664","scripts":{"test":"mocha test"},"_npmUser":{"name":"agencypmg","email":"tech@pmg.co"},"repository":{"url":"https://github.com/AgencyPMG/node-trollbridge.git","type":"git"},"_npmVersion":"1.4.16","description":"A lightweight permissions library for express & Node","directories":{},"dependencies":{"underscore":"^1.6.0"},"devDependencies":{"mocha":"^1.20.1"}},"0.1.3":{"name":"trollbridge","version":"0.1.3","keywords":["permissions","permission"],"author":{"name":"Chris Alvares","email":"chris.alvares@pmg.co"},"license":"MIT","_id":"trollbridge@0.1.3","maintainers":[{"name":"agencypmg","email":"tech@pmg.co"}],"homepage":"https://github.com/AgencyPMG/node-trollbridge","bugs":{"url":"https://github.com/AgencyPMG/node-trollbridge/issues"},"dist":{"shasum":"13a4831f65ebc6101f0354ae63a54fa7824770bf","tarball":"https://registry.npmjs.org/trollbridge/-/trollbridge-0.1.3.tgz","integrity":"sha512-oGxCj8zNWpPjJmXUic+RixPD6NWvfgsvxFYPT9A4UoL7jDSaHzxTXbGcfIiZqti0mJGKrAx9SLaa+gORIYbG8w==","signatures":[{"sig":"MEYCIQDx7r3o83bcG13fe1OqvfOol4MKA506WOev8LEBLnG90wIhAMMxEDb2yQ40EFM/qhJBAK1qEoOwxnMyTRsYGFmbXmBa","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2+SMCRA9TVsSAnZWagAA6owP/0afslAcmhn0l9ONXKqy\n9ynbtWSfKnX9+YqleZJ9lt7CXY+XJaYci87VpzjIrthucVTlv+uEt3noD6hg\nCZYXnxkdabcsDFbKUOXooHoIyOhpkVc4O7rlnjSbtuKHMLQmaHUGvK1+LAid\nuXBT2IqHGuvKmW3FrggT6NzWVv4iIg28uKfFJw11+oa/dPZrWiImqkQDHGBl\nV24GQMh1z3CNTGwTwAPtfym+cLYQAqog2eeEu4Z44QuEarsQpvzhC7CIcX8Z\nCEAmEByCJ2nzD7z287HHkNi+yWuqu1Y1ZPdOBPUTmso6CUD/3YjMSlLmkxy0\njpP3umDytY64d+YtiKy9M2CZWVdXThAGZnD5E+o/E1bsLuO0dqFn6e69lcKf\nm/k45L/68sYPf7AJ1taehWmwFNw3t+cr1/ZwVns0xHJHR9vWV86wdPDBlKa/\n6IGmjvhJM6KgOqkooXMTjaEQHH/n1WOt2+jGEeP9CEsdSWaKPZJtxcFbEF65\nANtZ44DJePRXhjqxThXCMSyRTjeiWhSnr7XGYpdOfSElIUjSpooHlSS4kJ2x\nZdKzsGYXkK5XfRifIV6HzwW1KJ7EYzGbX4CNT32j4zBJcGIxP9oMgAqPte3W\nObMQVcAIH670OOR99mkx9LFvWtZkX5F15Owf/kwGmZVE02rPCi39AywP7B8V\nm6Rz\r\n=s1GP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","_from":".","_shasum":"13a4831f65ebc6101f0354ae63a54fa7824770bf","gitHead":"b7d92f172462494f5f45781e484631d20d19434e","scripts":{"test":"mocha test"},"_npmUser":{"name":"agencypmg","email":"tech@pmg.co"},"repository":{"url":"https://github.com/AgencyPMG/node-trollbridge.git","type":"git"},"_npmVersion":"1.4.16","description":"A lightweight permissions library for express & Node","directories":{},"dependencies":{"underscore":"^1.6.0"},"devDependencies":{"mocha":"^1.20.1"}}},"time":{"created":"2014-06-18T16:40:39.526Z","modified":"2026-09-15T22:38:13.165Z","0.1.0":"2014-06-18T16:40:39.526Z","0.0.2":"2014-08-14T04:21:18.652Z","0.1.2":"2014-08-14T04:23:03.661Z","0.1.3":"2014-08-14T04:24:38.403Z"},"bugs":{"url":"https://github.com/AgencyPMG/node-trollbridge/issues"},"author":{"name":"Chris Alvares","email":"chris.alvares@pmg.co"},"license":"MIT","homepage":"https://github.com/AgencyPMG/node-trollbridge","keywords":["permissions","permission"],"repository":{"url":"https://github.com/AgencyPMG/node-trollbridge.git","type":"git"},"description":"A lightweight permissions library for express & Node","maintainers":[{"email":"precious.smith@pmg.com","name":"psmith22"},{"email":"cdavis9999@gmail.com","name":"chrisguitarguy"},{"email":"mail@chrisalvares.com","name":"chrisalvares"},{"email":"tech@pmg.co","name":"pmgbot"},{"email":"emilysnothererightnow@gmail.com","name":"emilysnothere"},{"email":"evan@pmg.com","name":"eawooten"},{"email":"andre.thio@pmg.com","name":"andrethio"},{"email":"shing.ng@pmg.com","name":"shinghim-pmg"},{"email":"phil@dier.us","name":"phildier"},{"email":"becca@pmg.com","name":"becconk"},{"email":"frazier.stephenjames@gmail.com","name":"siephen"},{"email":"brianna.gaskill@pmg.com","name":"briannagaskill"},{"email":"evidente.ian@gmail.com","name":"ian-evidente"},{"email":"andrew.gazda@pmg.com","name":"andrewgazda"},{"email":"tomasx@live.com","name":"tomasx"},{"email":"vitaly.iskrin@pmg.com","name":"goodmain"},{"email":"talin.hallajian@pmg.com","name":"talinhall"},{"email":"nicholas.lee@pmg.com","name":"niclee521"},{"email":"abdullah.alhamoud@pmg.com","name":"abdullah.alhamoud"},{"email":"shlok.khetan@gmail.com","name":"shlokkhetan"},{"email":"harshitha.mandru@pmg.com","name":"harshithamandru"},{"email":"shu.luu@pmg.com","name":"shuluu"},{"email":"jorge.gonzalez@pmg.com","name":"jgmpmg"},{"email":"rebecca.hartlage@pmg.com","name":"rebeccakingry"},{"email":"keerthi.kamarthi@pmg.com","name":"keerthi_kamarthi"},{"email":"yash.dhariwal@pmg.com","name":"yashodhara"},{"email":"aliciazavalaf@gmail.com","name":"aliciazavala"},{"email":"adam.dutton@pmg.com","name":"adamdutton08"},{"email":"jay.rughani@pmg.com","name":"jrughani"},{"email":"tanishka.shah@pmg.com","name":"tani-shah"},{"email":"subrahmanya.nishtala@pmg.com","name":"satishns"},{"email":"bo.arnold@pmg.com","name":"bbarnold"},{"email":"jay.anderson@pmg.com","name":"jay-anderson"},{"email":"melvyn.binoy@pmg.com","name":"melvyn1497"},{"email":"gautam.sharma@pmg.com","name":"gautamsharmav"},{"email":"sean.goodchild@pmg.com","name":"sean_goodchild"},{"email":"colin@pmg.com","name":"colinpmg"},{"email":"Zaaim.rashid@pmg.com","name":"zaaim.r"},{"email":"omar.assaf@pmg.com","name":"omarassaf106"},{"email":"jena.cameron@pmg.com","name":"jena"},{"email":"anthony.pileggi@pmg.com","name":"theantpile"},{"email":"scott.henley@pmg.com","name":"scotthenley"},{"email":"ethan.karpeles@pmg.com","name":"ethankarpeles"},{"email":"jim.furnier@pmg.com","name":"jimfurnierpmg"},{"email":"aditya.chaudhari@pmg.com","name":"adityachaudhari1412"},{"email":"katt.baum@pmg.com","name":"katthartic"},{"email":"joshua.johns@pmg.com","name":"joshuajohns"},{"email":"tristan.desoto@pmg.com","name":"tristand0703"},{"email":"juntao.li@pmg.com","name":"juntao-dev"},{"email":"kendrick.mcadams@pmg.com","name":"kendrick-mcadams"},{"email":"noah.webber@pmg.com","name":"noahwebber"},{"email":"jess.kizer@pmg.com","name":"jess-kizer"},{"email":"joshua.dienye@pmg.com","name":"joshua.dienye"},{"email":"kyle.cielencki@pmg.com","name":"kcielencki"},{"email":"aayush.aggarwal@pmg.com","name":"aayush1999"},{"email":"muhammad.ali@pmg.com","name":"mohdali236"},{"email":"leo.vogel@pmg.com","name":"leovogel_pmg"},{"email":"eric.williams@pmg.com","name":"datamadeeezy"},{"email":"caleb.welch@pmg.com","name":"caleb.welch"},{"email":"edward.gemar@pmg.com","name":"edwardpmg"},{"email":"lawir.muhammed@pmg.com","name":"lawirmuhammed"},{"email":"william980822@gmail.com","name":"williamng822"},{"email":"sheshasai.sairam@pmg.com","name":"sairashe001"},{"email":"brian.liu@pmg.com","name":"bliuh"},{"email":"jordan.russell@pmg.com","name":"jordanrussell"},{"email":"bruce.quach@pmg.com","name":"bquach1"},{"email":"adiv.ahsan@pmg.com","name":"adiv24"},{"email":"artem.polupan@pmg.com","name":"artem.polupan.pmg"},{"email":"eric.vistnes@pmg.com","name":"evistnes"},{"email":"jace.kole@pmg.com","name":"jkole971"},{"email":"spencer.reynoso@pmg.com","name":"spencer-reynoso"},{"email":"Bryce.Devaughn@pmg.com","name":"brycedev-pmg"},{"email":"ramprasad.koya@pmg.com","name":"ramprasad.koya"},{"email":"Nick.Swope@pmg.com","name":"nswopepmg"},{"email":"john.tunison@pmg.com","name":"john.tunison"},{"email":"Marlon.Miguel@pmg.com","name":"marlonmiguelpmg"},{"email":"vatsal.nayak@pmg.com","name":"vatsal.nayak"},{"email":"bill.huertas@pmg.com","name":"billhuertas"},{"email":"tyler.dumont@pmg.com","name":"tdumont-pmg"},{"email":"cooper.runstein@pmg.com","name":"cooperunpmg"},{"email":"jaiden.ritter@pmg.com","name":"jaiden.ritter"},{"email":"bhavana.tripuraneni@pmg.com","name":"bhavana.tripuraneni"},{"email":"hunter.merrill@pmg.com","name":"hunter-merrill"},{"email":"samuel.goodell@pmg.com","name":"samuelgoodellpmg"},{"email":"ronald.velasquez@pmg.com","name":"ronvel"},{"email":"joseph.dabkowski@pmg.com","name":"josephdabkowski"},{"email":"yize.zhao@pmg.com","name":"steven_z"},{"email":"miles.rosoff@pmg.com","name":"milesrosoff"},{"email":"philippe.desrosiers@pmg.com","name":"phildesro123"},{"email":"landon.prince@pmg.com","name":"landon.prince"},{"email":"samad.sajanlal@pmg.com","name":"ssajanlal"},{"email":"annie.nguyen@pmg.com","name":"annieatpmg"},{"email":"diane.park@pmg.com","name":"diane.park"},{"email":"rhys.jackson@pmg.com","name":"rhysjackson_pmg"},{"email":"nabha.kumthekar@pmg.com","name":"nabha"},{"email":"serena.dimartino@pmg.com","name":"serenadimartino"},{"email":"brent.ruppi@pmg.com","name":"brentruppi-pmg"},{"email":"alicia.yu@pmg.com","name":"aliciayu"},{"email":"sriram.basavaraju@pmg.com","name":"sriram.basavaraju"},{"email":"aaron.xu@pmg.com","name":"aaron_xu92"},{"email":"xinyu.liang@pmg.com","name":"xinyu.liang"},{"email":"diego.escobar@pmg.com","name":"diegoscbr"},{"email":"antonio.salinas@pmg.com","name":"antonio.salinas.pmg"},{"email":"edgar.macias@pmg.com","name":"edgarmacias-ops"},{"email":"julio.zebadua@pmg.com","name":"jzpmg"},{"email":"premkumar.rasakonda@pmg.com","name":"premrasakonda"},{"email":"dong.nguyen@pmg.com","name":"dong.nguyen"},{"email":"ketan.tak@pmg.com","name":"ketanpmg"},{"email":"tyler.gregory@pmg.com","name":"tyler-gregory"},{"email":"mike.treon@pmg.com","name":"miketreon-dev"},{"email":"adam.hamdan@pmg.com","name":"adam.hamdan"},{"email":"eric@pmg.com","name":"ericelskenpmg"},{"email":"jon.davidson@pmg.com","name":"jond85"},{"email":"john.forstmeier@pmg.com","name":"johnforstmeierpmg"},{"email":"a.reedy@gmail.com","name":"asreedy82"},{"email":"tre.guillory@pmg.com","name":"pmg-sevenonethree"},{"email":"cade.bauer@pmg.com","name":"cadebauer"},{"email":"johnathan.rodriguez@pmg.com","name":"johnathan.rodriguez"},{"email":"andy@pmg.com","name":"andypmg"},{"email":"huan.yang@pmg.com","name":"huanyangpmg"},{"email":"leo.blanchard@pmg.com","name":"leoblanchard"},{"email":"noe.sanchez@pmg.com","name":"noesanchez17"},{"email":"caleb.ford@pmg.com","name":"calebford"},{"email":"anjali.singh@pmg.com","name":"anjalisingh17"},{"email":"joanna.yi@pmg.com","name":"joannayi3"},{"email":"ashley.cardot@pmg.com","name":"ashleycardot"},{"email":"tyler.nelson@pmg.com","name":"tyler-nelson"},{"email":"zoe.le@pmg.com","name":"zoekle424"},{"email":"claire.chou@pmg.com","name":"clairechou"},{"email":"cameron.kettler@pmg.com","name":"cameronkettler"},{"email":"john.reinker@pmg.com","name":"randyyy"},{"email":"aastha.verma@pmg.com","name":"aasthavcode"},{"email":"tharun.ragalapalli@pmg.com","name":"tharunr"},{"email":"caroline.schafer@pmg.com","name":"cschafer103"},{"email":"nathan.hunter@pmg.com","name":"nathanpmg"},{"email":"michell.sicking@Pmg.com","name":"michellsickingpmg"},{"email":"dan.levere@pmg.com","name":"dlevere"},{"email":"saiprashant.vaka@pmg.com","name":"saivaka19"}],"readme":"node-trollbridge\n================\n\nA permissions system for Node and Express\n\n## How to use\ninclude the troll library and setup any of the strategies you want to include.\n\nYou can make your own strategy functions or use some of the premade ones\n\n```js\nvar trollbridge = require('trollbridge');\n```\n\n```js\ntrollbridge.addStrategies([\n   trollbridge.PREMADESTRATEGIES.PASSPORT,\n   require('./myownstrategy')\n]);\n```\nWhen creating routes, add a middleware for each route you want to secure\n\n```js\napp.get('/user/edit', trollbridge.shallNotPass('edit_user'), userEditFunct));\n```\n\nYou can also include a locals variable for templating languages\n```js\napp.use(function(req, res, next) {\n    res.locals.has_permission = trollbridge.layoutHasPermission(req);\n    next();\n})\n```\nand then in your template\n```html\n{% if has_permission('edit_user') %}\n<a href=\"/user/edit\">Edit User</a>\n{% endif %}\n```\n\n## Creating Strategies\nStrategies will throw an error if they are unable to be authenticated.\n```js\n//sample strategy\nmodule.exports = function(req, permission) {\n    if (!req.isAuthenticated()) {\n        throw \"User is not authenticated\";\n    }\n\n    if (typeof req.user === 'undefined' || req.user == null) {\n        throw \"Should not be able to login\";\n    }\n}\n```\n","readmeFilename":"README.md","users":{"fgribreau":true}}