Files
2024-12-24 18:01:54 +08:00

39 lines
854 B
Go

package casbinx
import (
"os"
"path/filepath"
"github.com/casbin/casbin/v2"
"github.com/casbin/casbin/v2/model"
gormadapter "github.com/casbin/gorm-adapter/v3"
"gorm.io/gorm"
)
// NewCasbin creates a new casbinx enforcer with a mysql adapter and loads the policy from the file system.
func NewCasbin(engine *gorm.DB) *casbin.SyncedCachedEnforcer {
a, err := gormadapter.NewAdapterByDBUseTableName(engine, "sca_auth_", "permission_rule")
if err != nil {
panic(err)
}
cwd, err := os.Getwd()
if err != nil {
panic(err)
}
path := filepath.Join(cwd, "/api/etc", "rbac_model.conf")
modelFile, err := model.NewModelFromFile(path)
if err != nil {
panic(err)
}
e, err := casbin.NewSyncedCachedEnforcer(modelFile, a)
if err != nil {
panic(err)
}
e.EnableCache(true)
err = e.LoadPolicy()
if err != nil {
panic(err)
}
return e
}