[pve-devel] [PATCH manager v3] Clear sensitive content when logging out fixes #1060

Dominik Csapak d.csapak at proxmox.com
Thu Aug 18 15:48:30 CEST 2016


Reviewed-by: Dominik Csapak <d.csapak at proxmox.com>

On 08/18/2016 02:33 PM, Emmanuel Kasper wrote:
> The current position inside the Workspace is saved via the StateProvider
> separately thus this clearing operation do not lose the previous selection.
>
> As a side effect by calling setContent(null) on logout we also fix the
> following bug:
>
> when logging out while the Syslog tab of the Node panel was displayed,
> you had to login twice due a to a race condition in the store
> load of the Syslog panel. ( The login call could complete successfully
> before a backgroup store load, causing the faild store load call
> to redisplay a login window)
> ---
> changes since V2:
>  * don't call removeAll() to remove store items but erase the store items
>  manually with an empty array because removeAll() keeps a copy of the removed
>  items in a 'removed' store property, which kind of defeats the purpose of
>  the fix
>
>  www/manager6/Workspace.js | 23 ++++++++++++++---------
>  1 file changed, 14 insertions(+), 9 deletions(-)
>
> diff --git a/www/manager6/Workspace.js b/www/manager6/Workspace.js
> index 61d345f..c23ea57 100644
> --- a/www/manager6/Workspace.js
> +++ b/www/manager6/Workspace.js
> @@ -208,13 +208,10 @@ Ext.define('PVE.StdWorkspace', {
>  		task.delay(10);
>  	    }
>  	}
> -	// else {
> -	    // TODO: display something useful
> -
> -	    // Note:: error mask has wrong zindex, so we do not
> -	    // use that - see bug 114
> -	    // PVE.Utils.setErrorMask(cont, 'nothing selected');
> -	//}
> +	else {
> +	    // helper for cleaning the content when logging out
> +	    cont.removeAll();
> +	}
>      },
>
>      selectById: function(nodeid) {
> @@ -417,11 +414,19 @@ Ext.define('PVE.StdWorkspace', {
>  			    iconCls: 'fa fa-sign-out',
>  			    text: gettext("Logout"),
>  			    handler: function() {
> -				PVE.data.ResourceStore.stopUpdate();
> +				PVE.data.ResourceStore.loadData([], false);
>  				me.showLogin();
> -				me.setContent();
> +				me.setContent(null);
>  				var rt = me.down('pveResourceTree');
>  				rt.clearTree();
> +
> +				// empty the stores of the StatusPanel child items
> +				var statusPanels = Ext.ComponentQuery.query('pveStatusPanel grid');
> +				Ext.Array.forEach(statusPanels, function(comp) {
> +				    if (comp.getStore()) {
> +					comp.getStore().loadData([], false);
> +				    }
> +				});
>  			    }
>  			}
>  		    ]
>





More information about the pve-devel mailing list