[pve-devel] [PATCH manager 1/3] show optional consent-banner before login

Gabriel Goller g.goller at proxmox.com
Wed Dec 4 09:48:50 CET 2024


On 03.12.2024 18:24, Thomas Lamprecht wrote:
>Am 03.12.24 um 16:29 schrieb Gabriel Goller:
>> Add ConsentBanner variable to html template and populate it from the
>> `datacenter.cfg` config file. Add Datacenter option to set the text and
>> trigger the popup on login.
>>
>> Signed-off-by: Gabriel Goller <g.goller at proxmox.com>
>> ---
>>  PVE/Service/pveproxy.pm            |  4 +++-
>>  www/index.html.tpl                 |  3 ++-
>>  www/manager6/dc/OptionView.js      |  5 +++++
>>  www/manager6/window/LoginWindow.js | 13 ++++++++++++-
>>  4 files changed, 22 insertions(+), 3 deletions(-)
>>
>> diff --git a/PVE/Service/pveproxy.pm b/PVE/Service/pveproxy.pm
>> index ac1085457f2e..151ba34f8a52 100755
>> --- a/PVE/Service/pveproxy.pm
>> +++ b/PVE/Service/pveproxy.pm
>> @@ -217,9 +217,10 @@ sub get_index {
>>  	    $token = PVE::AccessControl::assemble_csrf_prevention_token($username);
>>  	}
>>      }
>> +    my $dc_conf = PVE::Cluster::cfs_read_file('datacenter.cfg');
>
>I forgot the details from top of my head, but does this fail if we're not quorate?
>If, then I'd wrap it in an eval to avoid breaking start up if not quorate.

Hmm I don't think so – no quorum should still allow read access.
Nevertheless it would still be better to wrap it in an eval!

>> +    my $consent_text = $dc_conf->{'consent-text'};
>>
>>      if (!$lang) {
>> -	my $dc_conf = PVE::Cluster::cfs_read_file('datacenter.cfg');
>>  	$lang = $dc_conf->{language} // 'en';
>>      }
>>
>> @@ -251,6 +252,7 @@ sub get_index {
>>  	version => "$version",
>>  	wtversion => $wtversion,
>>  	theme => $theme,
>> +	consenttext => $consent_text
>>      };
>>
>>      # by default, load the normal index
>> diff --git a/www/manager6/window/LoginWindow.js b/www/manager6/window/LoginWindow.js
>> index aaeca3550289..bcf9b7be364d 100644
>> --- a/www/manager6/window/LoginWindow.js
>> +++ b/www/manager6/window/LoginWindow.js
>> @@ -18,9 +18,20 @@ Ext.define('PVE.window.LoginWindow', {
>>      },
>>
>>      controller: {
>> -
>>  	xclass: 'Ext.app.ViewController',
>>
>> +	init: async function() {
>> +	    if (Proxmox.ConsentText) {
>> +		Ext.create("Proxmox.window.ConsentModal", {
>> +		    autoShow: true,
>> +		    consent: Proxmox.Markdown.parse(
>> +			Ext.htmlEncode(
>> +			    Proxmox.Utils.base64ToUtf8(
>> +				Proxmox.ConsentText))),
>
>IIRC I restructured the indentation here for the PBS side, maybe check that out, IMO
>it looks a bit hard to read as is.

Yep, definitely – fixed it.

>
>> +		});
>> +	    }
>> +	},
>> +
>>  	onLogon: async function() {
>>  	    var me = this;
>>
>




More information about the pve-devel mailing list