{"_id":"@bluehalo/sof-scope-checker","_rev":"8-158df2edcdc4ca94770c25f851120f75","name":"@bluehalo/sof-scope-checker","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.7":{"name":"@bluehalo/sof-scope-checker","version":"1.0.7","author":{"name":"Robert-W","email":"rwinterbottom@asymmetrik.com"},"license":"MIT","_id":"@bluehalo/sof-scope-checker@1.0.7","maintainers":[{"name":"ashin-bluehalo","email":"andrew.shin@bluehalo.com"},{"name":"ekoon121","email":"ekoon@asymmetrik.com"},{"name":"reblace","email":"reblace@gmail.com"}],"homepage":"https://github.com/BlueHalo/node-fhir-server-core","dist":{"shasum":"eba5e6c9b408ecc91c1083531db12bfa2a6afea0","tarball":"https://registry.npmjs.org/@bluehalo/sof-scope-checker/-/sof-scope-checker-1.0.7.tgz","fileCount":17,"integrity":"sha512-WnyGIBiTqwcvFINB6qBzPJK2TQefEb2Cwd58ACk+XV82mym/infMTvH8H1YwBUzmhBGvvmpK2U7AlHHNyjWpHw==","signatures":[{"sig":"MEUCIQCGG+DD0GNJRg44sD+ezBiDkPCQyToGl6Lbl+sjHmcHlwIgfau0etrQqgDKxIcJZvrQBOPSdchrAwDj0wUnfMPzEgY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":62336},"main":"index.js","gitHead":"717c4ad053a5034563d778318b9ccb673d025930","scripts":{"test":"jest"},"_npmUser":{"name":"ashin-bluehalo","email":"andrew.shin@bluehalo.com"},"repository":{"type":"git","directory":"packages/sof-scope-checker"},"_npmVersion":"8.5.0","description":"Smart on FHIR scope checker","directories":{},"_nodeVersion":"16.14.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sof-scope-checker_1.0.7_1708114028102_0.16345092880049084","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@bluehalo/sof-scope-checker","version":"1.1.0","author":{"name":"Robert-W","email":"rwinterbottom@asymmetrik.com"},"license":"MIT","_id":"@bluehalo/sof-scope-checker@1.1.0","maintainers":[{"name":"ekdeveloper","email":"eugene.koon@bluehalo.com"},{"name":"shane-bh","email":"shane.oneill@bluehalo.com"},{"name":"ashin-bluehalo","email":"andrew.shin@bluehalo.com"},{"name":"reblace","email":"reblace@gmail.com"}],"homepage":"https://github.com/BlueHalo/node-fhir-server-core","dist":{"shasum":"983331f692f19335a0e22b486b4c02e3e70de64e","tarball":"https://registry.npmjs.org/@bluehalo/sof-scope-checker/-/sof-scope-checker-1.1.0.tgz","fileCount":6,"integrity":"sha512-b8AvLs7T8pX6A3ucncmaCELa2GOvJNzR65jqOWQhAwHRmPULTSRaVpkUmyKsQgkXHw9HljZI/Y+d+5DZkATtRQ==","signatures":[{"sig":"MEUCIQDDEvoZI60mbRBOKJGHb8qN4EqIug/h0lNkpZYFvDqYvgIge3NBhc+ZFDNIFSyVkgZ+kF244R3ltqfsBM7h5Fwzt8I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7032},"main":"index.js","gitHead":"717c4ad053a5034563d778318b9ccb673d025930","scripts":{"test":"jest"},"_npmUser":{"name":"ekdeveloper","email":"eugene.koon@bluehalo.com"},"repository":{"type":"git","directory":"packages/sof-scope-checker"},"description":"Smart on FHIR scope checker","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/sof-scope-checker_1.1.0_1726061267966_0.0705504307120508","host":"s3://npm-registry-packages"}}},"time":{"created":"2024-02-16T20:07:07.994Z","modified":"2026-03-25T20:06:13.655Z","1.0.7":"2024-02-16T20:07:08.306Z","1.1.0":"2024-09-11T13:27:48.126Z"},"author":{"name":"Robert-W","email":"rwinterbottom@asymmetrik.com"},"license":"MIT","homepage":"https://github.com/BlueHalo/node-fhir-server-core","repository":{"type":"git","directory":"packages/sof-scope-checker"},"description":"Smart on FHIR scope checker","maintainers":[{"email":"reblace@gmail.com","name":"reblace"},{"email":"eugene.koon@bluehalo.com","name":"ekdeveloper"},{"email":"andrew.shin@bluehalo.com","name":"ashin-bluehalo"},{"email":"shane.oneill@bluehalo.com","name":"shane-bh"},{"email":"rnmercado@gmail.com","name":"rodmercad"}],"readme":"# `SOF-Scope-Checker`\n\n> Utility for validating patient and user level scopes for the SMART on FHIR specification.\n\n# Install\n\n```shell\nyarn add @bluehalo/sof-scope-checker\n```\n\n## Usage\n\n```\nconst scopeChecker = require('@bluehalo/sof-scope-checker');\n\nlet hasValidScopes = (name, action) => {\n  return function (req, res, next) {\n    let scopes = parseScopes(req && req.user);\n    let { error, success } = scopeChecker(name, action, scopes);\n\n    // Log the error, wrap in operation outcome or GraphQL specific error\n    // You can check the type of the error as well since we use custom errors\n\n    if (error) {\n      next(error);\n    } else {\n      next();\n    }\n  }\n};\n\napp.get(\n  '/Patient',\n  hasValidScopes('Patient', 'read'),\n  patientController\n)\n```\n\nSee [sof-scope-checker tests](https://github.com/BlueHalo/node-fhir-server-core/tree/master/packages/sof-scope-checker/index.test.js) for more usage examples.\n\nNOTE: The error returned is an extension of the native JS error. It adds a type property to the error which can have a value of 'internal' representing a misconfiguration, or 'forbidden' representing a case where the scopes are not sufficient.\n\n## Arguments\n\n`@bluehalo/sof-scope-checker` exports a single function which takes three arguments.\n\n#### `name`\n\nName of the resource or patient.\n\nType: `String`  \nRequired: `true`\n\n#### `action`\n\nThe action the user wants to take. Can be `read`, `write`, or `*`.\n\nType: `String`  \nRequired: `true`\n\n#### `scopes`\n\nThe scopes available to the user.\n\nType: `Array<String>`  \nRequired: `true`\n","readmeFilename":"README.md"}