func (h *Handler) Add(w http.ResponseWriter, r *http.Request) { var rules RuleRepository if err := json.NewDecoder(r.Body).Decode(&rules); err != nil { log4go.Error("Could not decode rule: %s", err.Error()) } h.AddRules(rules) }
func (h *PolicyHandler) CreatePolicy(cmd *cobra.Command, args []string) { h.M.Dry = *h.Config.Dry h.M.Endpoint = h.Config.Resolve("/policies") h.M.Client = h.Config.OAuth2Client(cmd) files, _ := cmd.Flags().GetStringSlice("files") if len(files) > 0 { for _, path := range files { reader, err := os.Open(path) pkg.Must(err, "Could not open file %s: %s", path, err) var policy ladon.DefaultPolicy err = json.NewDecoder(reader).Decode(&policy) pkg.Must(err, "Could not parse JSON: %s", err) err = h.M.Create(&policy) pkg.Must(err, "Could not create policy: %s", err) fmt.Printf("Imported policy %s from %s.\n", policy.ID, path) } return } id, _ := cmd.Flags().GetString("id") description, _ := cmd.Flags().GetString("description") subjects, _ := cmd.Flags().GetStringSlice("subjects") resources, _ := cmd.Flags().GetStringSlice("resources") actions, _ := cmd.Flags().GetStringSlice("actions") isAllow, _ := cmd.Flags().GetBool("allow") if len(subjects) == 0 || len(resources) == 0 || len(actions) == 0 { fmt.Println(cmd.UsageString()) fmt.Println("") fmt.Println("Got empty subject, resource or action list") } effect := ladon.DenyAccess if isAllow { effect = ladon.AllowAccess } policy := &ladon.DefaultPolicy{ ID: id, Description: description, Subjects: subjects, Resources: resources, Actions: actions, Effect: effect, } err := h.M.Create(policy) if h.M.Dry { fmt.Printf("%s\n", err) return } pkg.Must(err, "Could not create policy: %s", err) fmt.Printf("Created policy %s.\n", policy.ID) }