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
go get github.com/casbin/beego-orm-adapter/v2
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()
}
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
This project is under Apache 2.0 License. See the LICENSE file for the full license text.