/beego-orm-adapter

Beego ORM adapter for Casbin

Primary LanguageGoApache License 2.0Apache-2.0

Beego ORM Adapter Go Coverage Status Godoc

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:

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.