PHPackages                             casbin/yii-permission - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. casbin/yii-permission

ActiveLibrary[Database &amp; ORM](/categories/database)

casbin/yii-permission
=====================

Use Casbin in Yii2 PHP Framework, Casbin is a powerful and efficient open-source access control library.

v2.0.0(1y ago)468.0k↓33.3%9Apache-2.0PHPPHP &gt;=8.0

Since Jun 2Pushed 4mo ago5 watchersCompare

[ Source](https://github.com/php-casbin/yii-permission)[ Packagist](https://packagist.org/packages/casbin/yii-permission)[ RSS](/packages/casbin-yii-permission/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (5)Versions (12)Used By (0)

Yii-Permission
==============

[](#yii-permission)

[![Build Status](https://github.com/php-casbin/yii-permission/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/php-casbin/yii-permission/actions/workflows/build.yml)[![Coverage Status](https://camo.githubusercontent.com/306af6091304513eb1f06652ceed6283a6718fd49c9dcba8e4ff5209edf6e262/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f7068702d63617362696e2f7969692d7065726d697373696f6e2f62616467652e737667)](https://coveralls.io/github/php-casbin/yii-permission)[![Latest Stable Version](https://camo.githubusercontent.com/48a6f06ab88ad241388c5eb6ed14df8f213fba5051fb24899b3891a348c4d6e9/68747470733a2f2f706f7365722e707567782e6f72672f63617362696e2f7969692d7065726d697373696f6e2f762f737461626c65)](https://packagist.org/packages/casbin/yii-permission)[![Total Downloads](https://camo.githubusercontent.com/1b4f553ca44ee3bcb4c43133bec6c471b665e82d9bd89c1ac6e6d8d905046f35/68747470733a2f2f706f7365722e707567782e6f72672f63617362696e2f7969692d7065726d697373696f6e2f646f776e6c6f616473)](https://packagist.org/packages/casbin/yii-permission)[![License](https://camo.githubusercontent.com/aa8adab5d2ca9a5035a8c6217e2155ddff82bf48aa1ffd18c9185af9d052b13a/68747470733a2f2f706f7365722e707567782e6f72672f63617362696e2f7969692d7065726d697373696f6e2f6c6963656e7365)](https://packagist.org/packages/casbin/yii-permission)

Use [Casbin](https://github.com/php-casbin/php-casbin) in Yii 2.0 PHP Framework.

Installation
------------

[](#installation)

### Getting Composer package

[](#getting-composer-package)

Require this package in the `composer.json` of your Yii 2.0 project. This will download the package.

```
composer require casbin/yii-permission

```

### Configuring application

[](#configuring-application)

To use this extension, you have to configure the `Casbin` class in your application configuration:

```
return [
    //....
    'components' => [
        'permission' => [
            'class' => \yii\permission\Permission::class,

            /*
             * Casbin model setting.
             */
            'model' => [
                // Available Settings: "file", "text"
                'config_type' => 'file',
                'config_file_path' => '/path/to/casbin-model.conf',
                'config_text' => '',
            ],

            // Casbin adapter .
            'adapter' => \yii\permission\Adapter::class,

            /*
             * Casbin database setting.
             */
            'database' => [
                // Database connection for following tables.
                'connection' => '',
                // CasbinRule tables and model.
                'casbin_rules_table' => '{{%casbin_rule}}',
            ],
        ],
    ]
];
```

Usage
-----

[](#usage)

### Quick start

[](#quick-start)

Once installed you can do stuff like this:

```
$permission = \Yii::$app->permission;

// adds permissions to a user
$permission->addPermissionForUser('eve', 'articles', 'read');
// adds a role for a user.
$permission->addRoleForUser('eve', 'writer');
// adds permissions to a rule
$permission->addPolicy('writer', 'articles','edit');
```

You can check if a user has a permission like this:

```
// to check if a user has permission
if ($permission->enforce("eve", "articles", "edit")) {
    // permit eve to edit articles
} else {
    // deny the request, show an error
}
```

### Using Enforcer Api

[](#using-enforcer-api)

It provides a very rich api to facilitate various operations on the Policy:

Gets all roles:

```
$permission->getAllRoles(); // ['writer', 'reader']
```

Gets all the authorization rules in the policy.:

```
$permission->getPolicy();
```

Gets the roles that a user has.

```
$permission->getRolesForUser('eve'); // ['writer']
```

Gets the users that has a role.

```
$permission->getUsersForRole('writer'); // ['eve']
```

Determines whether a user has a role.

```
$permission->hasRoleForUser('eve', 'writer'); // true or false
```

Adds a role for a user.

```
$permission->addRoleForUser('eve', 'writer');
```

Adds a permission for a user or role.

```
// to user
$permission->addPermissionForUser('eve', 'articles', 'read');
// to role
$permission->addPermissionForUser('writer', 'articles','edit');
```

Deletes a role for a user.

```
$permission->deleteRoleForUser('eve', 'writer');
```

Deletes all roles for a user.

```
$permission->deleteRolesForUser('eve');
```

Deletes a role.

```
$permission->deleteRole('writer');
```

Deletes a permission.

```
$permission->deletePermission('articles', 'read'); // returns false if the permission does not exist (aka not affected).
```

Deletes a permission for a user or role.

```
$permission->deletePermissionForUser('eve', 'articles', 'read');
```

Deletes permissions for a user or role.

```
// to user
$permission->deletePermissionsForUser('eve');
// to role
$permission->deletePermissionsForUser('writer');
```

Gets permissions for a user or role.

```
$permission->getPermissionsForUser('eve'); // return array
```

Determines whether a user has a permission.

```
$permission->hasPermissionForUser('eve', 'articles', 'read');  // true or false
```

### Using Yii Authorization

[](#using-yii-authorization)

It allows you to integrate Yii's authorization with the Casbin permission management system.

**(1) AccessChecker**

Add the accessChecker configuration in your application's `config/web.php` file:

```
$config = [
    'components' => [
        'user' => [
            ...
            'accessChecker' => 'yii\permission\components\PermissionChecker',
        ]
];
```

Once configured, you can use the `can()` method to check if a user has permission to perform certain actions:

```
$user->can('acrticles,read');
```

**(2) Behaviors**

The `PermissionControl` behavior allows you to enforce permission checks at the controller level. Add the PermissionControl behavior to your controller's behaviors() method:

```
public function behaviors()
{
    return [
        'permission' => [
            'class' => \yii\permission\components\PermissionControl::class,
            'user' => $user, // optional, defaults to \Yii::$app->user
            'only' => ['read-articles', 'write-articles'],
            'policy' => [
                [
                    'allow' => true,
                    'actions' => ['read-articles'],
                    'enforce' => ['articles', 'read']
                ],
                [
                    'allow' => true,
                    'actions' => ['write-articles'],
                    'enforce' => ['articles', 'write']
                ]
            ],
            'denyCallback' => function ($policy, $action) {
                // custom action when access is denied
            } // optional, defaults to throwing an exception
        ]
    ];
}
```

**Note:** Additionally,You can also configure a `denyCallback` for each `policy`, which will be invoked when the user does not meet the required permission. This callback takes precedence. The configuration is similar to Yii's official [AccessControl](https://www.yiiframework.com/doc/guide/2.0/en/security-authorization#access-control-filter).

See [Casbin API](https://casbin.org/docs/en/management-api) for more APIs.

Define your own model.conf
--------------------------

[](#define-your-own-modelconf)

[Supported models](https://github.com/php-casbin/php-casbin#supported-models).

Learning Casbin
---------------

[](#learning-casbin)

You can find the full documentation of Casbin [on the website](https://casbin.org/).

###  Health Score

48

—

FairBetter than 95% of packages

Maintenance58

Moderate activity, may be stable

Popularity37

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~161 days

Recently: every ~282 days

Total

11

Last Release

568d ago

Major Versions

v1.6.0 → v2.0.02024-10-28

### Community

Maintainers

![](https://www.gravatar.com/avatar/f32cb7625515c0969fec15915be4a137f057c3484420bb7abf025c8e975dd3a5?d=identicon)[leeqvip](/maintainers/leeqvip)

---

Top Contributors

[![leeqvip](https://avatars.githubusercontent.com/u/35752209?v=4)](https://github.com/leeqvip "leeqvip (8 commits)")[![basakest](https://avatars.githubusercontent.com/u/47746206?v=4)](https://github.com/basakest "basakest (6 commits)")[![Dobmod](https://avatars.githubusercontent.com/u/33273950?v=4)](https://github.com/Dobmod "Dobmod (4 commits)")[![zolbet](https://avatars.githubusercontent.com/u/11454583?v=4)](https://github.com/zolbet "zolbet (1 commits)")

---

Tags

abacaccess-controlacladapterauthcasbinpermissionrbacyiidatabaseaclpermissionrbacyiiabaccasbincasbin-adapter

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/casbin-yii-permission/health.svg)

```
[![Health](https://phpackages.com/badges/casbin-yii-permission/health.svg)](https://phpackages.com/packages/casbin-yii-permission)
```

###  Alternatives

[casbin/casbin

a powerful and efficient open-source access control library for php projects.

1.3k1.4M54](/packages/casbin-casbin)[casbin/laravel-authz

An authorization library that supports access control models like ACL, RBAC, ABAC in Laravel.

324339.9k4](/packages/casbin-laravel-authz)[casbin/dbal-adapter

Database Abstraction Layer adapter for php-casbin.

1494.7k1](/packages/casbin-dbal-adapter)[casbin/think-authz

An authorization library that supports access control models like ACL, RBAC, ABAC for ThinkPHP.

27918.5k6](/packages/casbin-think-authz)[casbin/webman-permission

webman casbin permission plugin

523.4k2](/packages/casbin-webman-permission)[casbin/database-adapter

Database adapter for php-casbin.

30106.8k2](/packages/casbin-database-adapter)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
