(e IEnforcer, user string)
| 20 | ) |
| 21 | |
| 22 | func CasbinJsGetPermissionForUser(e IEnforcer, user string) (string, error) { |
| 23 | model := e.GetModel() |
| 24 | m := map[string]interface{}{} |
| 25 | |
| 26 | m["m"] = model.ToText() |
| 27 | |
| 28 | pRules := [][]string{} |
| 29 | for ptype := range model["p"] { |
| 30 | policies, err := model.GetPolicy("p", ptype) |
| 31 | if err != nil { |
| 32 | return "", err |
| 33 | } |
| 34 | for _, rules := range policies { |
| 35 | pRules = append(pRules, append([]string{ptype}, rules...)) |
| 36 | } |
| 37 | } |
| 38 | m["p"] = pRules |
| 39 | |
| 40 | gRules := [][]string{} |
| 41 | for ptype := range model["g"] { |
| 42 | policies, err := model.GetPolicy("g", ptype) |
| 43 | if err != nil { |
| 44 | return "", err |
| 45 | } |
| 46 | for _, rules := range policies { |
| 47 | gRules = append(gRules, append([]string{ptype}, rules...)) |
| 48 | } |
| 49 | } |
| 50 | m["g"] = gRules |
| 51 | |
| 52 | result := bytes.NewBuffer([]byte{}) |
| 53 | encoder := json.NewEncoder(result) |
| 54 | encoder.SetEscapeHTML(false) |
| 55 | err := encoder.Encode(m) |
| 56 | return result.String(), err |
| 57 | } |
searching dependent graphs…