[pbs-devel] [RFC backup/proxmox-backup 0/4] fix #5463: add optional consent banner before login
Gabriel Goller
g.goller at proxmox.com
Tue May 21 12:13:25 CEST 2024
On 21.05.2024 10:35, Dominik Csapak wrote:
>On 5/21/24 10:22, Gabriel Goller wrote:
>>On 17.05.2024 09:15, Dominik Csapak wrote:
>>>thanks for tackling this
>>>
>>>first, while this approach seems ok to me, there are probably still some
>>>things to figure out yet in the bug report (see the bug report)
>>>probably the biggest thing i'd change is the need for an extra api call.
>>>
>>>since we already have to serve the index file,
>>>we could use a similar mechanism to register the consent text
>>>there (i.e. save it in memory and reread it when the mtime of the file changes)
>>>
>>>and render the text of the consent directly into the index template.
>>>that way we can avoid an extra round trip and directly show it
>>>without an api call
>>
>>Oooh, that's an interesting idea...
>>Added these few lines to the index.hbs file. I think the only way is to
>>bind the function to a window.* variable isn't there?
>>
>> {{#if consentText}}
>> <script type='text/javascript' > window.getConsentText =
>>function () { return `{{ consentText }}`; } </script>
>> {{else}}
>> <script type='text/javascript'> window.getConsentText = function () { return ""; } </script>
>> {{/if}}
>>
>
>i don't think it has to be as complicated.
>
>e.g. i'd just add a new property for the 'Proxmox' object in the template:
>
>---
>Proxmox = {
> ...
> consentText: "{{ consentText }}",
>};
>---
>
>and then checking in the ui if it's the non empty string ?
Oh, you are right, I missed this :)
(We just need to use the `` quotes here to support newlines.)
>(maybe we could find a way to add it in a more general way instead of
>adding each option we want individually
>if that's possible, we wouldn't have to add a new option to the template
>every time
>
>(e.g. some kind of 'additionalData' object with keys+values ?
>not sure what the templating systems of pbs and pve support)
I just did some quick tests, and it seems there is no easy way to assign
the templates (of more complex objects) to a variable in js. We could
convert the HashMap (or BTreeMap) to json and then parse it in js
though.
Mind you, I am a complete handlebars beginner, so there could be a
simpler way :)
Also, I don't suspect we'll add a significant amount of variables here
in the near future...
>>Another question is if we'd like to have customizable buttons. On
>>one hand 'I agree' and 'I decline' probably cover 99% of the use-cases,
>>(especially as we can translate it) but we could still add something like
>>"<agree-text>|<decline-text>" to the end of the consent.txt file. For
>>example:
>>
>> YES|NO
>>
>>or
>> Agree|Decline
>>
>>or (this won't show the disagree button)
>>
>> Agree|
>>
>>
>>
>
>
>according to the bug report this should not be necessary, a simple box with
>'OK' as only option should even be enough
>
>that would be generic for now that others could even repurpose it for
>some kind of system announcements (like outages, etc.?)
Yep, that was my idea as well!
More information about the pbs-devel
mailing list