diff --git a/pkg/bastion/shell.go b/pkg/bastion/shell.go index 012c5f998..d1b874ba3 100644 --- a/pkg/bastion/shell.go +++ b/pkg/bastion/shell.go @@ -1955,12 +1955,15 @@ GLOBAL OPTIONS: tx.Rollback() return err } - if err := model.Association("Groups").Append(&appendGroups); err != nil { + + groups := tx.Model(user).Association("Groups") + + if err := groups.Append(&appendGroups); err != nil { tx.Rollback() return err } if len(deleteGroups) > 0 { - if err := model.Association("Groups").Delete(deleteGroups); err != nil { + if err := groups.Delete(deleteGroups); err != nil { tx.Rollback() return err } @@ -1975,12 +1978,15 @@ GLOBAL OPTIONS: tx.Rollback() return err } - if err := model.Association("Roles").Append(&appendRoles); err != nil { + + roles := tx.Model(user).Association("Groups") + + if err := roles.Append(&appendRoles); err != nil { tx.Rollback() return err } if len(deleteRoles) > 0 { - if err := model.Association("Roles").Delete(deleteRoles); err != nil { + if err := roles.Delete(deleteRoles); err != nil { tx.Rollback() return err }