[pve-devel] applied: [PATCH manager] fix wrong permissions for subscription info

Dietmar Maurer dietmar at proxmox.com
Tue Oct 30 11:40:38 CET 2018


applied without changes to www/manager6/node/Config.js

> On October 30, 2018 at 10:33 AM David Limbeck <d.limbeck at proxmox.com> wrote:
> 
> 
> workaround to keep the subscription popup on login even without 'Sys.Audit'
> permissions but remove the subscription menu in the GUI for unauthorized
> users
> 
> Signed-off-by: David Limbeck <d.limbeck at proxmox.com>
> ---
>  PVE/API2/Subscription.pm    | 20 +++++++++++++++-----
>  www/manager6/node/Config.js | 19 ++++++++++++-------
>  2 files changed, 27 insertions(+), 12 deletions(-)
> 
> diff --git a/PVE/API2/Subscription.pm b/PVE/API2/Subscription.pm
> index 9d24dce8..efbe70c2 100644
> --- a/PVE/API2/Subscription.pm
> +++ b/PVE/API2/Subscription.pm
> @@ -91,9 +91,6 @@ __PACKAGE__->register_method ({
>      name => 'get',
>      path => '',
>      method => 'GET',
> -    permissions => {
> -	check => ['perm', '/nodes/{node}', [ 'Sys.Audit' ]],
> -    },
>      description => "Read subscription info.",
>      proxyto => 'node',
>      permissions => { user => 'all' },
> @@ -110,12 +107,25 @@ __PACKAGE__->register_method ({
>  	my $server_id = PVE::API2Tools::get_hwaddress();
>  	my $url = "http://www.proxmox.com/products/proxmox-ve/subscription-service-plans";
>  
> +	my $rpcenv = PVE::RPCEnvironment::get();
> +	my $authuser = $rpcenv->get_user();
> +	my $has_permission = PVE::AccessControl::check_permissions($authuser, '/nodes/{node}', 'Sys.Audit');
> +
>  	my $info = PVE::INotify::read_file('subscription');
>  	if (!$info) {
> -	    return {
> +	    my $no_subscription_info = {
>  		status => "NotFound",
>  		message => "There is no subscription key",
> -		serverid => $server_id,
> +		url => $url,
> +	    };
> +	    $no_subscription_info->{serverid} = $server_id if $has_permission;
> +	    return $no_subscription_info;
> +	}
> +
> +	if (!$has_permission) {
> +	    return {
> +		status => $info->{status},
> +		message => $info->{message},
>  		url => $url,
>  	    }
>  	}
> diff --git a/www/manager6/node/Config.js b/www/manager6/node/Config.js
> index e7a38296..37863f09 100644
> --- a/www/manager6/node/Config.js
> +++ b/www/manager6/node/Config.js
> @@ -380,15 +380,20 @@ Ext.define('PVE.node.Config', {
>  		nodename: nodename,
>  		xtype: 'proxmoxNodeTasks'
>  	    },
> -	    {
> -		title: gettext('Subscription'),
> -		iconCls: 'fa fa-support',
> -		itemId: 'support',
> -		xtype: 'pveNodeSubscription',
> -		nodename: nodename
> -	    }
>  	);
>  
> +	if (caps.nodes['Sys.Audit']) {
> +	    me.items.push(
> +		{
> +		    title: gettext('Subscription'),
> +		    iconCls: 'fa fa-support',
> +		    itemId: 'support',
> +		    xtype: 'pveNodeSubscription',
> +		    nodename: nodename
> +		}
> +	    );
> +	}
> +
>  	me.callParent();
>  
>  	me.mon(me.statusStore, 'load', function(s, records, success) {
> -- 
> 2.11.0
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel




More information about the pve-devel mailing list