PageSourceSearch

https://feathers-casl.netlify.app/

html feathers-casl.netlify.app collected 2026-10-03 10:43:40 UTC 13,348 bytes, 26 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-US" dir="ltr">
3  <head>
4    <meta charset="utf-8">
5    <meta name="viewport" content="width=device-width,initial-scale=1">
6    <title>feathers-casl</title>
7    <meta name="description" content="Add access control with CASL to your feathers application">
8    <meta name="generator" content="VitePress v2.0.0-alpha.17">
9    <link rel="preload stylesheet" href="/assets/style.BUHdsUFN.css" as="style">
10    <link rel="preload stylesheet" href="/vp-icons.css" as="style">
11    
12    
12<script type="module" src="/assets/app.CwQ1rY3O.js"></script>
12
13    <link rel="preload" href="/assets/inter-roman-latin.Cy4MYw_J.woff2" as="font" type="font/woff2" crossorigin="">
14    <link rel="modulepreload" href="/assets/chunks/theme.BsDwXA-J.js">
15    <link rel="modulepreload" href="/assets/chunks/framework.DWIwSZ-6.js">
16    <link rel="modulepreload" href="/assets/index.md.Btq2ebLl.lean.js">
17    <link rel="icon" href="/favicon.ico">
18    
18<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
18
19    
19<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
19
20  </head>
21  <body>
22    <div id="app"><div class="Layout" data-v-7ee4747a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-56ddb84b></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-56ddb84b>Skip to content</a><!--]--><!----><header class="VPNav" data-v-7ee4747a data-v-8187dc6d><div class="VPNavBar home top" data-v-8187dc6d data-v-17451696><div class="wrapper" data-v-17451696><div class="container" data-v-17451696><div class="title" data-v-17451696><div class="VPNavBarTitle" data-v-17451696 data-v-7f767ae5><a class="title" href="/" data-v-7f767ae5><!--[--><!--]--><!--[--><img class="VPImage logo" src="/img/logo.svg" alt data-v-f9fc7ca2><!--]--><span data-v-7f767ae5>feathers-casl</span><!--[--><!--]--></a></div></div><div class="content" data-v-17451696><div class="content-body" data-v-17451696><!--[--><!--]--><div class="VPNavBarSearch search" data-v-17451696 data-v-b115b792><!--[--><button type="button" class="VPNavBarSearchButton" aria-label="Search" aria-keyshortcuts="/ control+k meta+k" data-v-b115b792 data-v-32351076><span class="vpi-search" aria-hidden="true" data-v-32351076></span><span class="text" data-v-32351076>Search</span><span class="keys" aria-hidden="true" data-v-32351076><kbd class="key-cmd" data-v-32351076>⌘</kbd><kbd class="key-ctrl" data-v-32351076>Ctrl</kbd><kbd data-v-32351076>K</kbd></span></button><!----><!----><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-17451696 data-v-b1964aab><span id="main-nav-aria-label" class="visually-hidden" data-v-b1964aab> Main Navigation </span><!--[--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-b1964aab data-v-48018a98><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-48018a98><span class="text" data-v-48018a98><!----><span data-v-48018a98>Ecosystem</span><span class="vpi-chevron-down text-icon" data-v-48018a98></span></span></button><div class="menu" data-v-48018a98><div class="VPMenu" data-v-48018a98 data-v-e21def72><div class="items" data-v-e21def72><!--[--><!--[--><div class="VPMenuLink" data-v-e21def72 data-v-328078e2><a class="VPLink link vp-external-link-icon" href="https://feathersjs.com/" target="_blank" rel="noreferrer" data-v-328078e2><!--[--><span data-v-328078e2>www.feathersjs.com</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-e21def72 data-v-328078e2><a class="VPLink link vp-external-link-icon" href="https://github.com/feathersjs/feathers" target="_blank" rel="noreferrer" data-v-328078e2><!--[--><span data-v-328078e2>Feathers Github Repo</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-e21def72 data-v-328078e2><a class="VPLink link vp-external-link-icon" href="https://github.com/feathersjs/awesome-feathersjs" target="_blank" rel="noreferrer" data-v-328078e2><!--[--><span data-v-328078e2>Awesome Feathersjs</span><!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-17451696 data-v-d0e9ddd6><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-d0e9ddd6 data-v-88d2d789 data-v-9ae567d2><span class="check" data-v-9ae567d2><span class="icon" data-v-9ae567d2><!--[--><span class="vpi-sun sun" data-v-88d2d789></span><span class="vpi-moon moon" data-v-88d2d789></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-17451696 data-v-b2135855 data-v-31833492><!--[--><a class="VPSocialLink no-icon" href="https://twitter.com/feathersjs" aria-label="twitter" target="_blank" rel="me noopener" data-v-31833492 data-v-fd5e6b74><span class="vpi-social-twitter"></span></a><a class="VPSocialLink no-icon" href="https://discord.gg/qa8kez8QBx" aria-label="discord" target="_blank" rel="me noopener" data-v-31833492 data-v-fd5e6b74><span class="vpi-social-discord"></span></a><a class="VPSocialLink no-icon" href="https://github.com/fratzinger/feathers-casl" aria-label="github" target="_blank" rel="me noopener" data-v-31833492 data-v-fd5e6b74><span class="vpi-social-github"></span></a>
22<!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-17451696 data-v-339e20dc data-v-48018a98><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-48018a98><span class="vpi-more-horizontal icon" data-v-48018a98></span></button><div class="menu" data-v-48018a98><div class="VPMenu" data-v-48018a98 data-v-e21def72><!----><!--[--><!--[--><!----><div class="group" data-v-339e20dc><div class="item appearance" data-v-339e20dc><p class="label" data-v-339e20dc>Appearance</p><div class="appearance-action" data-v-339e20dc><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-339e20dc data-v-88d2d789 data-v-9ae567d2><span class="check" data-v-9ae567d2><span class="icon" data-v-9ae567d2><!--[--><span class="vpi-sun sun" data-v-88d2d789></span><span class="vpi-moon moon" data-v-88d2d789></span><!--]--></span></span></button></div></div></div><div class="group" data-v-339e20dc><div class="item social-links" data-v-339e20dc><div class="VPSocialLinks social-links-list" data-v-339e20dc data-v-31833492><!--[--><a class="VPSocialLink no-icon" href="https://twitter.com/feathersjs" aria-label="twitter" target="_blank" rel="me noopener" data-v-31833492 data-v-fd5e6b74><span class="vpi-social-twitter"></span></a><a class="VPSocialLink no-icon" href="https://discord.gg/qa8kez8QBx" aria-label="discord" target="_blank" rel="me noopener" data-v-31833492 data-v-fd5e6b74><span class="vpi-social-discord"></span></a><a class="VPSocialLink no-icon" href="https://github.com/fratzinger/feathers-casl" aria-label="github" target="_blank" rel="me noopener" data-v-31833492 data-v-fd5e6b74><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-17451696 data-v-25aec7de><span class="container" data-v-25aec7de><span class="top" data-v-25aec7de></span><span class="middle" data-v-25aec7de></span><span class="bottom" data-v-25aec7de></span></span></button></div></div></div></div><div class="divider" data-v-17451696><div class="divider-line" data-v-17451696></div></div></div><!----></header><!----><!----><div class="VPContent is-home" id="VPContent" data-v-7ee4747a data-v-70980a40><div class="VPHome" data-v-70980a40 data-v-c9a23710><!--[--><!--]--><div class="VPHero has-image VPHomeHero" data-v-c9a23710 data-v-b2e91193><div class="container" data-v-b2e91193><div class="main" data-v-b2e91193><!--[--><!--]--><!--[--><h1 class="heading" data-v-b2e91193><span class="name clip" data-v-b2e91193>feathers-casl</span><!----></h1><p class="tagline" data-v-b2e91193>Add access control with CASL to your feathers application.</p><!--]--><!--[--><!--]--><div class="actions" data-v-b2e91193><!--[--><!--]--><!--[--><div class="action" data-v-b2e91193><a class='VPButton medium brand' data-v-611f22eb data-v-b2e91193 href='/getting-started'><!--[-->Get Started<!--]--></a></div><div class="action" data-v-b2e91193><a class="VPButton medium alt" href="https://github.com/fratzinger/feathers-casl" target="_blank" rel="noreferrer" data-v-b2e91193 data-v-611f22eb><!--[-->View on GitHub<!--]--></a></div><!--]--></div><!--[--><!--]--></div><div class="image" data-v-b2e91193><div class="image-container" data-v-b2e91193><div class="image-bg" data-v-b2e91193></div><!--[--><!--[--><img class="VPImage image-src" src="/img/logo.svg" alt="feathers-casl" data-v-f9fc7ca2><!--]--><!--]--></div></div></div></div><!--[--><!--]--><!--[--><!--]--><div class="VPFeatures VPHomeFeatures" data-v-c9a23710 data-v-b84b804a><div class="container" data-v-b84b804a><div class="items" data-v-b84b804a><!--[--><div class="grid-3 item" data-v-b84b804a><div class="VPLink no-icon VPFeature" data-v-b84b804a data-v-d44ad5a2><!--[--><article class="box" data-v-d44ad5a2><div class="icon" data-v-d44ad5a2>🛡️</div><h2 class="title" data-v-d44ad5a2>Decide who can do what</h2><p class="details" data-v-d44ad5a2>Make permissions for create, read, update or delete (even separate multiple support)</p><!----></article><!--]--></div></div>
22<div class="grid-3 item" data-v-b84b804a><div class="VPLink no-icon VPFeature" data-v-b84b804a data-v-d44ad5a2><!--[--><article class="box" data-v-d44ad5a2><div class="icon" data-v-d44ad5a2>❓</div><h2 class="title" data-v-d44ad5a2>complex access control with fields & conditions</h2><p class="details" data-v-d44ad5a2>Simple query syntax supports multiple, nested, and even recursive populates.</p><!----></article><!--]--></div></div><div class="grid-3 item" data-v-b84b804a><div class="VPLink no-icon VPFeature" data-v-b84b804a data-v-d44ad5a2><!--[--><article class="box" data-v-d44ad5a2><div class="icon" data-v-d44ad5a2>💬</div><h2 class="title" data-v-d44ad5a2>Built in channels support</h2><p class="details" data-v-d44ad5a2>Channels aren't a after thought but a first class citizen for permissions.</p><!----></article><!--]--></div></div><!--]--></div></div></div><!--[--><!--]--><div class="vp-doc container" style="" data-v-c9a23710 data-v-750d30ef><!--[--><div style="position:relative;" data-v-c9a23710><div></div></div><!--]--></div></div></div><footer class="VPFooter" data-v-7ee4747a data-v-7325e293><div class="container" data-v-7325e293><p class="message" data-v-7325e293>Released under the MIT License.</p><p class="copyright" data-v-7325e293>Copyright © 2020-present Frederik Schmatz<br />This site is powered by <a href="https://www.netlify.com" target="blank">Netlify</a></p></div></footer><!--[--><!--]--></div></div>
23    
23<script>window.__VP_HASH_MAP__=JSON.parse("{\"channels.md\":\"O1CseBp_\",\"client-side.md\":\"BIKoN4Mz\",\"cookbook.md\":\"CgOHqBSA\",\"getting-started.md\":\"BlL7VB7m\",\"gotchas.md\":\"BPwWJOEX\",\"hooks.md\":\"BF0jEmHj\",\"index.md\":\"Btq2ebLl\",\"utils.md\":\"CXwUvBvW\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"feathers-casl\",\"description\":\"Add access control with CASL to your feathers application\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"/img/logo.svg\",\"editLink\":{\"pattern\":\"https://github.com/fratzinger/feathers-casl/edit/main/docs/:path\",\"text\":\"Edit this page on GitHub\"},\"lastUpdatedText\":\"Last Updated\",\"socialLinks\":[{\"icon\":\"twitter\",\"link\":\"https://twitter.com/feathersjs\"},{\"icon\":\"discord\",\"link\":\"https://discord.gg/qa8kez8QBx\"},{\"icon\":\"github\",\"link\":\"https://github.com/fratzinger/feathers-casl\"}],\"sidebar\":[{\"text\":\"Guide\",\"items\":[{\"text\":\"Getting Started\",\"link\":\"/getting-started\"},{\"text\":\"Hooks\",\"link\":\"/hooks\"},{\"text\":\"Channels\",\"link\":\"/channels\"},{\"text\":\"Utils\",\"link\":\"/utils\"},{\"text\":\"Client Side\",\"link\":\"/client-side\"},{\"text\":\"Gotchas\",\"link\":\"/gotchas\"},{\"text\":\"Cookbook\",\"link\":\"/cookbook\"}]}],\"nav\":[{\"text\":\"Ecosystem\",\"items\":[{\"text\":\"www.feathersjs.com\",\"link\":\"https://feathersjs.com/\"},{\"text\":\"Feathers Github Repo\",\"link\":\"https://github.com/feathersjs/feathers\"},{\"text\":\"Awesome Feathersjs\",\"link\":\"https://github.com/feathersjs/awesome-feathersjs\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2020-present Frederik Schmatz<br />This site is powered by <a href=\\\"https://www.netlify.com\\\" target=\\\"blank\\\">Netlify</a>\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"appId\":\"XJKV0V1N7U\",\"apiKey\":\"a4c3e7c6c2fcd7b1baa2ac04e17b9f72\",\"indexName\":\"feathers-casl\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false,\"additionalConfig\":{}}");</script>
23
24    
25  </body>
26</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.