package rbac // Rule 最多六個參數,例如 // // p, admin, data1, read // PolicyType:p // Field0:admin // Field01:data1 // Field02:read type Rule struct { PolicyType string // p or g Field0 string Field1 string Field2 string Field3 string Field4 string Field5 string } // ToString 轉換成這樣 []string{"p", "admin", "data1", "read"} 讓 casbin 看得懂 func (rule Rule) ToString() []string { fields := []string{ rule.PolicyType, rule.Field0, rule.Field1, rule.Field2, rule.Field3, rule.Field4, rule.Field5, } // 移除空字串,提高效能 var result []string for _, field := range fields { if field != "" { result = append(result, field) } } return result } func StringToPolicy(policyType string, rule []string) Rule { line := Rule{} line.PolicyType = policyType if len(rule) > 0 { line.Field0 = rule[0] } if len(rule) > 1 { line.Field1 = rule[1] } if len(rule) > 2 { line.Field2 = rule[2] } if len(rule) > 3 { line.Field3 = rule[3] } if len(rule) > 4 { line.Field4 = rule[4] } if len(rule) > 5 { line.Field5 = rule[5] } return line }