{"id":13780048,"url":"https://github.com/fratzinger/feathers-casl","last_synced_at":"2026-05-12T09:01:28.277Z","repository":{"id":39888962,"uuid":"329991975","full_name":"fratzinger/feathers-casl","owner":"fratzinger","description":"feathers.js + casl: hooks \u0026 channels","archived":false,"fork":false,"pushed_at":"2026-05-11T20:16:23.000Z","size":1688,"stargazers_count":43,"open_issues_count":21,"forks_count":18,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-05-11T22:14:24.393Z","etag":null,"topics":["acl","authorization","casl","feathersjs","nodejs","permissions","typescript"],"latest_commit_sha":null,"homepage":"https://feathers-casl.netlify.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fratzinger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-01-15T18:29:13.000Z","updated_at":"2026-01-25T19:12:35.000Z","dependencies_parsed_at":"2023-11-13T15:26:21.676Z","dependency_job_id":"cc717414-7559-4e5e-98b5-a33e6b7fc55c","html_url":"https://github.com/fratzinger/feathers-casl","commit_stats":{"total_commits":233,"total_committers":7,"mean_commits":"33.285714285714285","dds":"0.19313304721030045","last_synced_commit":"b8c015f8176a55eb419e92b7fa7c0e625ecb888c"},"previous_names":[],"tags_count":64,"template":false,"template_full_name":null,"purl":"pkg:github/fratzinger/feathers-casl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fratzinger%2Ffeathers-casl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fratzinger%2Ffeathers-casl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fratzinger%2Ffeathers-casl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fratzinger%2Ffeathers-casl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fratzinger","download_url":"https://codeload.github.com/fratzinger/feathers-casl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fratzinger%2Ffeathers-casl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32931321,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-11T17:09:15.040Z","status":"online","status_checked_at":"2026-05-12T02:00:06.338Z","response_time":102,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acl","authorization","casl","feathersjs","nodejs","permissions","typescript"],"created_at":"2024-08-03T18:01:11.835Z","updated_at":"2026-05-12T09:01:28.259Z","avatar_url":"https://github.com/fratzinger.png","language":"TypeScript","funding_links":[],"categories":["Plugins"],"sub_categories":["Authentication and Authorization"],"readme":"# feathers-casl\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://feathers-casl.netlify.app/img/logo.svg\" width=\"200\"\u003e\n\u003c/p\u003e\n\n[![npm](https://img.shields.io/npm/v/feathers-casl)](https://www.npmjs.com/package/feathers-casl)\n[![Github CI](https://github.com/fratzinger/feathers-casl/actions/workflows/node.js.yml/badge.svg)](https://github.com/fratzinger/feathers-casl/actions)\n[![Maintainability](https://qlty.sh/gh/fratzinger/projects/feathers-casl/maintainability.svg)](https://qlty.sh/gh/fratzinger/projects/feathers-casl)\n[![Code Coverage](https://qlty.sh/gh/fratzinger/projects/feathers-casl/coverage.svg)](https://qlty.sh/gh/fratzinger/projects/feathers-casl)\n[![libraries.io](https://img.shields.io/librariesio/release/npm/feathers-casl)](https://libraries.io/npm/feathers-casl)\n[![npm](https://img.shields.io/npm/dm/feathers-casl)](https://www.npmjs.com/package/feathers-casl)\n[![GitHub license](https://img.shields.io/github/license/fratzinger/feathers-casl)](https://github.com/fratzinger/feathers-casl/blob/main/LICENSE)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord\u0026label)](https://discord.gg/qa8kez8QBx)\n\n\u003e NOTE: This is the version for Feathers v5. For Feathers v4 use [feathers-casl v0](https://github.com/fratzinger/feathers-casl/tree/crow)\n\n## About\n\nAdd access control with CASL to your feathers application.\n\nThis project is built for [FeathersJS](http://feathersjs.com). An open source web framework for building modern real-time applications.\nIt's based on [CASL](https://casl.js.org/) and is a convenient layer to use **CASL** in feathers.js.\n\n## Features\n\n- Fully powered by Feathers 5 \u0026 CASL 6\n- Allows permissions for all methods `create`, `find`, `get`, `update`, `patch`, `remove`, or `create`, `read`, `update`, `delete`\n- Define permissions not based on methods: `can('view', 'Settings')` (Bring your custom logic)\n- Restrict by conditions: `can('create', 'Task', { userId: user.id })`\n- Restrict by individual fields: `cannot('update', 'User', ['roleId'])`\n- Native support for restrictive `$select`: `can('read', 'User', ['id', 'username'])` -\u003e `$select: ['id', 'username']`\n- Support to define abilities for anything (providers, users, roles, 3rd party apps, ...)\n- Fully supported adapters: `@feathersjs/knex`, `@feathersjs/memory`, `@feathersjs/mongodb`, `feathers-sequelize`, not supported: `feathers-mongoose`, `feathers-nedb`, `feathers-objection`\n- Support for dynamic rules stored in your database (Bring your own implementation ;) )\n- hooks:\n  - `checkBasicPermission` hook for client side usage as a before-hook\n  - `authorize` hook for complex rules\n  - Disallow/allow `multi` methods (`create`, `patch`, `remove`) dynamically with: `can('remove-multi', 'Task', { userId: user.id })`\n- channels:\n  - every connection only receives updates based on rules\n  - `channels`-support also regards restrictive fields\n  - rules can be defined individually for events\n- utils:\n  - `checkCan` to be used in hooks to check authorization before operations\n- Baked in support for `@casl/angular`, `@casl/react`, `@casl/vue` and `@casl/aurelia`\n\n## Documentation\n\nYou need more information? Please have a look:\nhttps://feathers-casl.netlify.app/\n\n## Installation\n\n```bash\nnpm i feathers-casl @casl/ability\n```\n\n## Testing\n\nSimply run `npm test` and all your tests in the `test/` directory will be run. It has full support for _Visual Studio Code_. You can use the debugger to set breakpoints.\n\n## Help\n\nFor more information on all the things you can do, visit [FeathersJS](http://docs.feathersjs.com) and [CASL](https://casl.js.org/v6/en/).\n\n## License\n\nLicensed under the [MIT license](LICENSE).\n\n\u003ca href=\"https://www.netlify.com\"\u003e \u003cimg src=\"https://www.netlify.com/v3/img/components/netlify-color-accent.svg\" alt=\"Deploys by Netlify\" /\u003e \u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffratzinger%2Ffeathers-casl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffratzinger%2Ffeathers-casl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffratzinger%2Ffeathers-casl/lists"}