This repository has moved to php-casbin/laminas-db-adapter.
Zend-Db adapter for PHP-Casbin.
The list of officially supported drivers:
IbmDb2
: The ext/ibm_db2 driverMysqli
: The ext/mysqli driverOci8
: The ext/oci8 driverPgsql
: The ext/pgsql driverSqlsrv
: The ext/sqlsrv driver (from Microsoft)Pdo_Mysql
: MySQL via the PDO extensionPdo_Sqlite
: SQLite via the PDO extensionPdo_Pgsql
: PostgreSQL via the PDO extension
Use Composer.
composer require casbin/zend-db-adapter
Before using it, you need to create a table named casbin_rule
for Casbin to store the policy.
Take mysql as an example:
CREATE TABLE `casbin_rule` (
`ptype` varchar(255) NOT NULL,
`v0` varchar(255) DEFAULT NULL,
`v1` varchar(255) DEFAULT NULL,
`v2` varchar(255) DEFAULT NULL,
`v3` varchar(255) DEFAULT NULL,
`v4` varchar(255) DEFAULT NULL,
`v5` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Then you can start like this:
require_once './vendor/autoload.php';
use Casbin\Enforcer;
use Casbin\Util\Log;
use CasbinAdapter\ZendDb\Adapter;
$adapter = new Adapter([
'driver' => 'Pdo_Mysql', // IbmDb2, Mysqli, Oci8, Pgsql, Sqlsrv, Pdo_Mysql, Pdo_Sqlite, Pdo_Pgsql
'hostname' => '127.0.0.1',
'database' => 'test',
'username' => 'root',
'password' => '',
'port' => '3306',
]);
$e = new Enforcer('path/to/model.conf', $adapter);
$sub = "alice"; // the user that wants to access a resource.
$obj = "data1"; // the resource that is going to be accessed.
$act = "read"; // the operation that the user performs on the resource.
if ($e->enforce($sub, $obj, $act) === true) {
// permit alice to read data1
} else {
// deny the request, show an error
}
This project is licensed under the Apache 2.0 license.