UNPKG

@superawesome/permissions

Version:

Fine grained permissions / access control with ownerships & attribute picking, done right.

179 lines (146 loc) 8.39 kB
<!doctype html> <html class="no-js" lang=""> <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <title>SuperAwesome Permissions (@superawesome/permissions)</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" type="image/x-icon" href="./images/favicon.ico"> <link rel="stylesheet" href="./styles/style.css"> <link rel="stylesheet" href="./styles/postmark.css"> </head> <body> <div class="navbar navbar-default navbar-fixed-top visible-xs"> <a href="./" class="navbar-brand">SuperAwesome Permissions (@superawesome/permissions)</a> <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button> </div> <div class="xs-menu menu" id="mobile-menu"> <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu> </div> <div class="container-fluid main"> <div class="row main"> <div class="hidden-xs menu"> <compodoc-menu mode="normal"></compodoc-menu> </div> <!-- START CONTENT --> <div class="content getting-started"> <div class="content-data"> <h1 id="superawesome-permissions">SuperAwesome Permissions</h1> <ul> <li><p>NPM package: <code>@superawesome/permissions</code></p> </li> <li><p>Github: <code>https://github.com/SuperAwesomeLTD/permissions</code></p> </li> </ul> <h1 id="features">Features</h1> <p>In lieu of a proper landing page, <strong>SuperAwesome Permissions</strong> features:</p> <ul> <li><p><a href="/#">:left_luggage:</a> <strong>Controlled Access</strong> to Resources</p> </li> <li><p><a href="/#">:nail_care:</a> <strong>Fine Grained</strong> Resource Attributes picking</p> </li> <li><p><a href="/#">:customs:</a> Dynamic <strong>Ownership</strong> Rules, hooked to your data layer</p> </li> <li><p><a href="/#">:performing_arts:</a> Trivial conversion of <strong>Business Rules for Access Control</strong> to <strong>executing permissions</strong> (and vise versa).</p> </li> <li><p><a href="/#">:atom:</a> Straight-forward fusion of <a href="https://en.wikipedia.org/wiki/Role-based_access_control">Role-Based Access Control</a>, <a href="https://en.wikipedia.org/wiki/Attribute-based_access_control">Attribute-Based Access Control</a> and <strong>Whatever-You-Make-it Access control</strong></p> </li> <li><p><a href="/#">:telescope:</a> Unlimited <strong>Scalability</strong> (lazy &amp; eager ownership evaluation)</p> </li> <li><p><a href="/#">:wrench:</a> Easy <strong>Integration</strong> with everything (REST, Graphql, SQL, NoSQL, APIs, Frontend, Games, anything)</p> </li> <li><p><a href="/#">:shell:</a> <strong>Zero dependencies</strong> with servers, services &amp; other moving parts</p> </li> <li><p><a href="/#">:triangular_ruler:</a> Orthogonal / <strong>Aspect Oriented</strong> philosophy</p> </li> <li><p><a href="/#">:ticket:</a> <strong>Permit</strong> is all you need to allow a <strong>user</strong> do an <strong>action</strong> on a <strong>resource</strong> </p> </li> </ul> <p><em>(^^ github needed to show icons ^^)</em></p> <h2 id="contents">Contents</h2> <p>The actual generated docs are at <code>npm run docs:serve</code> and <strong>coming soon</strong> at <a href="https://permissions.docs.superawesome.com"><strong>SuperAwesome Permissions Documentation</strong></a>. Go to the left, at the CompoDocs Nav Bar.</p> <p><strong>NOTE: THESE LINKS BREAK ON GITHUB! (^^^ read above ^^^)</strong></p> <ul> <li><p><a href="additional-documentation/introduction-&amp;-glossary.html">Introduction &amp; Glossary</a></p> </li> <li><p><a href="additional-documentation/basic-usage.html">Basic Usage</a></p> </li> <li><p><a href="additional-documentation/detailed-usage-&amp;-examples.html">Detailed Usage &amp; Examples</a></p> </li> <li><p><a href="additional-documentation/philosophy,-principles-&amp;-architecture.html">Philosophy, Principles &amp; Architecture</a></p> </li> <li><p><a href="/additional-documentation/inspiration,-problem,-prior-art.html">Inspiration, Problem and Prior Art</a>.</p> </li> <li><p><a href="additional-documentation/faq,-gotchas-&amp;-caveats.html">FAQ, Gotchas &amp; Caveats</a></p> </li> <li><p><a href="additional-documentation/future-roadmap.html">Future Roadmap</a></p> </li> </ul> <p><strong>Note</strong>: We also have <a href="https://github.com/SuperAwesomeLTD/permissions-nestjs">native Nestjs Guard &amp; Decorators</a> empowering an Orthogonal / Aspect Oriented Architecture.</p> <h1 id="versioning">Versioning</h1> <p>The project follows <a href="https://semver.org/">semantic versioning</a> which effectively means a new major version x.0.0 is released for breaking changes, minor 0.x.0 for new features and patch 0.0.x for fixes. </p> <h1 id="how-to-develop">How to develop</h1> <h2 id="code">Code</h2> <ul> <li><p>Simply do an <code>npm run test:watch</code> to develop and test at each change.</p> </li> <li><p>With <code>npm run build:ts</code> you get a build of the library at <code>/dist</code>.</p> </li> <li><p>With <code>npm run build</code> you get a full build of library &amp; docs at <code>/dist</code>.</p> </li> </ul> <h2 id="documentation">Documentation</h2> <p>End user docs reside at <code>src/docs</code> &amp; <code>*.md.spec</code> files:</p> <ul> <li><p>With <code>npm run docs:build</code> it builds docs at <code>dist/docs</code> once.</p> </li> <li><p>With <code>npm run docs:serve</code> it serves docs at <a href="http://127.0.0.1:8090">http://127.0.0.1:8090</a> in non-watch mode.</p> </li> <li><p>With <code>npm run docs:watch</code> it serves docs at <a href="http://127.0.0.1:8090">http://127.0.0.1:8090</a> in watch &amp; serve mode.</p> </li> </ul> <h2 id="docs-generation">Docs generation</h2> <p>All <code>*.md.spec.ts</code> files generate equivalent <code>src/docs/generated/*.generated.md</code></p> <p><strong>Note</strong>: On watch mode it&#39;s sometimes slow to build &amp; serve, especially initially. Just change &amp; save the <code>*.md.spec.ts</code> file to trigger generation &amp; also refresh browser if its not refreshing automatically.</p> </div><div class="search-results"> <div class="has-results"> <h1 class="search-results-title"><span class='search-results-count'></span> result-matching "<span class='search-query'></span>"</h1> <ul class="search-results-list"></ul> </div> <div class="no-results"> <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1> </div> </div> </div> <!-- END CONTENT --> </div> </div> <script> var COMPODOC_CURRENT_PAGE_DEPTH = 0; var COMPODOC_CURRENT_PAGE_CONTEXT = 'getting-started'; var COMPODOC_CURRENT_PAGE_URL = 'future-roadmap.html'; </script> <script src="./js/libs/custom-elements.min.js"></script> <script src="./js/libs/lit-html.js"></script> <!-- Required to polyfill modern browsers as code is ES5 for IE... --> <script src="./js/libs/custom-elements-es5-adapter.js" charset="utf-8" defer></script> <script src="./js/menu-wc.js" defer></script> <script src="./js/libs/bootstrap-native.js"></script> <script src="./js/libs/es6-shim.min.js"></script> <script src="./js/libs/EventDispatcher.js"></script> <script src="./js/libs/promise.min.js"></script> <script src="./js/libs/zepto.min.js"></script> <script src="./js/compodoc.js"></script> <script src="./js/tabs.js"></script> <script src="./js/menu.js"></script> <script src="./js/libs/clipboard.min.js"></script> <script src="./js/libs/prism.js"></script> <script src="./js/sourceCode.js"></script> <script src="./js/search/search.js"></script> <script src="./js/search/lunr.min.js"></script> <script src="./js/search/search-lunr.js"></script> <script src="./js/search/search_index.js"></script> <script src="./js/lazy-load-graphs.js"></script> </body> </html>