Compare commits

...

1 Commits

Author SHA1 Message Date
DacongDA
8f7ea7f0a0 feat: fix Data Missing From casbin_rule Table After Importing init_data.json (#4167) 2025-09-09 21:20:25 +08:00
2 changed files with 33 additions and 2 deletions

View File

@@ -46,6 +46,8 @@ type InitData struct {
Sessions []*Session `json:"sessions"`
Subscriptions []*Subscription `json:"subscriptions"`
Transactions []*Transaction `json:"transactions"`
EnforcerPolicies map[string][][]string `json:"enforcerPolicies"`
}
var initDataNewOnly bool
@@ -116,7 +118,8 @@ func InitFromFile() {
initDefinedAdapter(adapter)
}
for _, enforcer := range initData.Enforcers {
initDefinedEnforcer(enforcer)
policies := initData.EnforcerPolicies[enforcer.GetId()]
initDefinedEnforcer(enforcer, policies)
}
for _, plan := range initData.Plans {
initDefinedPlan(plan)
@@ -175,6 +178,8 @@ func readInitDataFromFile(filePath string) (*InitData, error) {
Sessions: []*Session{},
Subscriptions: []*Subscription{},
Transactions: []*Transaction{},
EnforcerPolicies: map[string][][]string{},
}
err := util.JsonToStruct(s, data)
if err != nil {
@@ -694,7 +699,7 @@ func initDefinedAdapter(adapter *Adapter) {
}
}
func initDefinedEnforcer(enforcer *Enforcer) {
func initDefinedEnforcer(enforcer *Enforcer, policies [][]string) {
existed, err := getEnforcer(enforcer.Owner, enforcer.Name)
if err != nil {
panic(err)
@@ -716,6 +721,20 @@ func initDefinedEnforcer(enforcer *Enforcer) {
if err != nil {
panic(err)
}
err = enforcer.InitEnforcer()
if err != nil {
panic(err)
}
_, err = enforcer.AddPolicies(policies)
if err != nil {
panic(err)
}
err = enforcer.SavePolicy()
if err != nil {
panic(err)
}
}
func initDefinedPlan(plan *Plan) {

View File

@@ -146,6 +146,16 @@ func writeInitDataToFile(filePath string) error {
return err
}
enforcerPolicies := make(map[string][][]string)
for _, enforcer := range enforcers {
err = enforcer.InitEnforcer()
if err != nil {
continue
}
enforcerPolicies[enforcer.GetId()] = enforcer.GetPolicy()
}
data := &InitData{
Organizations: organizations,
Applications: applications,
@@ -172,6 +182,8 @@ func writeInitDataToFile(filePath string) error {
Sessions: sessions,
Subscriptions: subscriptions,
Transactions: transactions,
EnforcerPolicies: enforcerPolicies,
}
text := util.StructToJsonFormatted(data)