Laminas-db adapter for PHP-Casbin.
The list of officially supported drivers:
- IbmDb2: The ext/ibm_db2 driver
- Mysqli: The ext/mysqli driver
- Oci8: The ext/oci8 driver
- Pgsql: The ext/pgsql driver
- Sqlsrv: The ext/sqlsrv driver (from Microsoft)
- Pdo_Mysql: MySQL via the PDO extension
- Pdo_Sqlite: SQLite via the PDO extension
- Pdo_Pgsql: PostgreSQL via the PDO extension
Use Composer.
composer require casbin/laminas-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\LaminasDb\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.