[pve-devel] [PATCH manager] ui: ldap: fix `Parameter verification error`

Friedrich Weber f.weber at proxmox.com
Wed Feb 15 09:29:45 CET 2023


Can confirm this patch fixes the issue, so

Tested-by: Friedrich Weber <f.weber at proxmox.com>

Steps to reproduce:

1) Create LDAP realm with default sync settings
2) Edit LDAP realm, go to sync settings tab, enter values in all text 
boxes except one (e.g. all except "Group filter")
3) Click OK

On current master, this shows "Parameter verification failed. (400) / 
delete: invalid format - invalid configuration ID 
'group_filter,sync-defaults-options'".

With this patch, the error does not appear, and the settings are saved 
properly.

On 14/02/2023 14:35, Lukas Wagner wrote:
> ...when editing LDAP realm sync settings and only a single property is
> empty and thus to be deleted (e.g. values.delete = "filter").
> 
> If `delete` is a simple string and not an array,
> `PVE.Utils.delete_if_default` simply creates a comma-separated list,
> (e.g. value.delete = "filter,sync-attributes").
> 
> When the properties from the other panel are evaluated and added to the
> the `delete` property, comma-separated list format is not considered,
> leading to a final value for `delete` that could look like this:
>    value.delete = {
>      "server2",
>      "comment",
>      "filter,sync-attributes"
>    }
> 
> This commit fixes this by splitting `delete` in case it is a string.
> 
> Reported-by: Friedrich Weber <f.weber at proxmox.com>
> Signed-off-by: Lukas Wagner <l.wagner at proxmox.com>
> ---
>   Same fix as in my LDAP widget-toolkit patch series:
>   https://lists.proxmox.com/pipermail/pbs-devel/2023-February/005952.html
> 
>   www/manager6/dc/AuthEditLDAP.js | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/www/manager6/dc/AuthEditLDAP.js b/www/manager6/dc/AuthEditLDAP.js
> index 96ef77b9..2ce16e58 100644
> --- a/www/manager6/dc/AuthEditLDAP.js
> +++ b/www/manager6/dc/AuthEditLDAP.js
> @@ -139,6 +139,11 @@ Ext.define('PVE.panel.LDAPSyncInputPanel', {
>   	PVE.Utils.delete_if_default(values, 'sync-defaults-options');
>   	PVE.Utils.delete_if_default(values, 'sync_attributes');
>   
> +	// Force values.delete to be an array
> +	if (typeof values.delete === 'string') {
> +	   values.delete = values.delete.split(',');
> +	}
> +
>   	if (me.isCreate) {
>   	    delete values.delete; // on create we cannot delete values
>   	}





More information about the pve-devel mailing list