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

> On October 30, 2018 at 10:33 AM David Limbeck <[email protected]> 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 <[email protected]>
> ---
>  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
> [email protected]
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

_______________________________________________
pve-devel mailing list
[email protected]
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to