in controllers/group/chain/sync_group_permissions.go [25:60]
func (h SyncGroupPermissions) ServeRequest(ctx context.Context, group *sonarApi.SonarGroup) error {
log := ctrl.LoggerFrom(ctx).WithValues("name", group.Spec.Name)
log.Info("Syncing group permissions in sonar")
existingPermissions, err := h.getExistingGroupPermissions(ctx, group.Spec.Name)
if err != nil {
return err
}
currentPermissions := helper.SliceToMap(group.Spec.Permissions)
for p := range existingPermissions {
if _, ok := currentPermissions[p]; ok {
delete(currentPermissions, p)
continue
}
if err = h.sonarApiClient.RemovePermissionFromGroup(ctx, group.Spec.Name, p); err != nil {
return fmt.Errorf("failed to remove group permission: %w", err)
}
log.Info("Group permission has been removed", "permission", p)
}
for g := range currentPermissions {
if err = h.sonarApiClient.AddPermissionToGroup(ctx, group.Spec.Name, g); err != nil {
return fmt.Errorf("failed to add group permission: %w", err)
}
log.Info("Group permission has been added", "permission", g)
}
log.Info("Group permissions have been synced")
return nil
}