beego-orm-adapter
beego-orm-adapter copied to clipboard
Beego ORM adapter for Casbin
Beego ORM Adapter

Note: the last version that supports Beego v1 is: https://github.com/casbin/beego-orm-adapter/releases/tag/v2.0.2 . Beego v2 is supported starting from v3.0.0
Beego ORM Adapter is the Beego ORM adapter for Casbin. With this library, Casbin can load policy from Beego ORM supported database or save policy to it.
Based on Beego ORM Support, The current supported databases are:
- MySQL: github.com/go-sql-driver/mysql
- PostgreSQL: github.com/lib/pq
- Sqlite3: github.com/mattn/go-sqlite3
Installation
go get github.com/casbin/beego-orm-adapter/v2
Simple Example
package main
import (
"log"
beegoormadapter "github.com/casbin/beego-orm-adapter/v3"
"github.com/casbin/casbin/v2"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// Initialize a Beego ORM adapter and use it in a Casbin enforcer:
a, err := beegoormadapter.NewAdapter("casbin", "mysql", "mysql_username:mysql_password@tcp(127.0.0.1:3306)/dbname") // Your driver and data source.
if err != nil {
log.Fatalln(err)
}
e, err := casbin.NewEnforcer("examples/rbac_model.conf", a)
if err != nil {
log.Fatalln(err)
}
// Check the permission.
e.Enforce("alice", "data1", "read")
// Modify the policy.
// e.AddPolicy(...)
// e.RemovePolicy(...)
// Save the policy back to DB.
e.SavePolicy()
}
Custom Table Name
Beego ORM using TableNameI interface to customize the table name
reference: custom-table-name
You can customize the name of the table by NewAdapterWithTableName, and query the custom table name through GetFullTableName
func testCustomTableName(t *testing.T, a *Adapter, expectTableName string) {
actualTableName := a.GetFullTableName()
if actualTableName != expectTableName {
t.Error("actual table name: ", a.GetFullTableName(), ", supposed to be ", expectTableName)
}
}
func TestAdapterCustomTableName(t *testing.T) {
a, err := NewAdapterWithTableName("customtablename", "mysql", "root:@tcp(127.0.0.1:3306)/casbin_test", "my_casbin", "prefix_")
if err != nil {
t.Fatal(err)
}
testCustomTableName(t, a, "prefix_my_casbin")
testSaveLoad(t, a)
testAutoSave(t, a)
}
Note: Currently, only one custom table name is supported,
and no other table name should be used after the first use of NewAdapterWithTableName
Getting Help
License
This project is under Apache 2.0 License. See the LICENSE file for the full license text.