Skip to content

get

go
package main

import (
	"fmt"
	"log"

	"github.com/casbin/casbin/v2"
	"github.com/casbin/gorm-adapter/v3"
	"gorm.io/driver/sqlite"
	"gorm.io/gorm"
)

func main() {
	// 初始化数据库和 Casbin
	db, _ := gorm.Open(sqlite.Open("casbin.db"), &gorm.Config{})
	adapter, _ := gormadapter.NewAdapterByDB(db)
	enforcer, _ := casbin.NewEnforcer("rbac_model.conf", adapter)

	// 假设用户 alice
	user := "alice"

	// 获取用户直接权限
	directPolicies := enforcer.GetFilteredPolicy(0, user)
	fmt.Println("直接权限:", directPolicies)

	// 获取用户角色
	roles := enforcer.GetFilteredGroupingPolicy(0, user)
	fmt.Println("用户角色:", roles)

	// 获取角色权限
	var rolePolicies [][]string
	for _, role := range roles {
		roleName := role[1]
		policies := enforcer.GetFilteredPolicy(0, roleName)
		rolePolicies = append(rolePolicies, policies...)
	}
	fmt.Println("角色权限:", rolePolicies)

	// 合并权限
	allPolicies := append(directPolicies, rolePolicies...)
	fmt.Println("所有权限:", allPolicies)
}