diff --git a/privilege/privilege.go b/privilege/privilege.go index 7374750..1f0ce76 100644 --- a/privilege/privilege.go +++ b/privilege/privilege.go @@ -47,10 +47,6 @@ func (c *Controller) PublishPrivileges() error { fmt.Println("Old Privilege:", old) - if len(old) == 0 || len(old) != len(c.client.Privileges) { - return c.setupActualPrivileges() - } - found := false for _, oldPriv := range old { @@ -112,22 +108,37 @@ func (c *Controller) updatePrivileges(oldPrivileges []Privilege) error { return errs[0] } + if len(oldPrivileges) == 0 || len(oldPrivileges) != len(c.client.Privileges) { + return c.setupActualPrivileges(oldPrivileges) + } + return nil } // setupActualPrivileges настраивает привилегии в сервисе. -func (c *Controller) setupActualPrivileges() error { - res := []Privilege{} - _, body, errs := c.fiberClient.Post(c.client.URL + "/privilege/many").JSON(map[string][]Privilege{ - "privileges": c.client.Privileges, - }).Bytes() - if errs != nil { - return errs[0] - } - fmt.Println("Response Body:", string(body)) +func (c *Controller) setupActualPrivileges(oldPrivileges []Privilege) error { + newPrivileges := []Privilege{} - if err := json.Unmarshal(body, &res); err != nil { - return err + for _, newPriv := range c.client.Privileges { + isNew := true + for _, oldPriv := range oldPrivileges { + if newPriv.PrivilegeID == oldPriv.PrivilegeID { + isNew = false + break + } + } + if isNew { + newPrivileges = append(newPrivileges, newPriv) + } + } + + if len(newPrivileges) > 0 { + _, _, errs := c.fiberClient.Post(c.client.URL + "/privilege/many").JSON(map[string][]Privilege{ + "privileges": newPrivileges, + }).Bytes() + if errs != nil { + return errs[0] + } } return nil