all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Gabriel Goller <g.goller@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [pbs-devel] [PATCH proxmox-backup 1/4] api: add consent api handler and config
Date: Thu, 16 May 2024 18:24:58 +0200	[thread overview]
Message-ID: <20240516162508.327472-2-g.goller@proxmox.com> (raw)
In-Reply-To: <20240516162508.327472-1-g.goller@proxmox.com>

Add config function to retrieve consent from file and api handler to
serve it via the http.

Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
---
 src/api2/access/consent.rs | 25 +++++++++++++++++++++++++
 src/api2/access/mod.rs     |  2 ++
 src/config/consent.rs      | 11 +++++++++++
 src/config/mod.rs          |  1 +
 4 files changed, 39 insertions(+)
 create mode 100644 src/api2/access/consent.rs
 create mode 100644 src/config/consent.rs

diff --git a/src/api2/access/consent.rs b/src/api2/access/consent.rs
new file mode 100644
index 00000000..c8cb89c3
--- /dev/null
+++ b/src/api2/access/consent.rs
@@ -0,0 +1,25 @@
+use anyhow::Error;
+use proxmox_router::http_bail;
+use proxmox_router::{Permission, Router};
+use proxmox_schema::api;
+
+pub(crate) const ROUTER: Router = Router::new().get(&API_METHOD_GET_CONSENT);
+
+#[api(
+    returns: {
+        type: String,
+        description: "Consent banner text.",
+    },
+    access: {
+        description: "Anyone can access this, because we need to display the consent box before the user is logged in.",
+        permission: &Permission::World,
+    }
+)]
+/// Get consent banner text.
+pub fn get_consent() -> Result<String, Error> {
+    let consent = crate::config::consent::config()?;
+    if consent.trim().is_empty() {
+        http_bail!(NO_CONTENT, "No consent banner exists.")
+    }
+    Ok(consent)
+}
diff --git a/src/api2/access/mod.rs b/src/api2/access/mod.rs
index 15509fd9..44e67602 100644
--- a/src/api2/access/mod.rs
+++ b/src/api2/access/mod.rs
@@ -20,6 +20,7 @@ use pbs_config::acl::AclTreeNode;
 use pbs_config::CachedUserInfo;
 
 pub mod acl;
+pub mod consent;
 pub mod domain;
 pub mod openid;
 pub mod role;
@@ -275,6 +276,7 @@ const SUBDIRS: SubdirMap = &sorted!([
     ("roles", &role::ROUTER),
     ("users", &user::ROUTER),
     ("tfa", &tfa::ROUTER),
+    ("consent", &consent::ROUTER),
 ]);
 
 pub const ROUTER: Router = Router::new()
diff --git a/src/config/consent.rs b/src/config/consent.rs
new file mode 100644
index 00000000..55ef201c
--- /dev/null
+++ b/src/config/consent.rs
@@ -0,0 +1,11 @@
+use anyhow::Error;
+
+use pbs_buildcfg::configdir;
+
+const CONF_FILE: &str = configdir!("/consent.txt");
+
+/// Read the Consent config.
+pub fn config() -> Result<String, Error> {
+    let content = proxmox_sys::fs::file_read_optional_string(CONF_FILE)?.unwrap_or_default();
+    Ok(content)
+}
diff --git a/src/config/mod.rs b/src/config/mod.rs
index 324fabca..81caf0d5 100644
--- a/src/config/mod.rs
+++ b/src/config/mod.rs
@@ -15,6 +15,7 @@ use proxmox_lang::try_block;
 use pbs_buildcfg::{self, configdir};
 
 pub mod acme;
+pub mod consent;
 pub mod node;
 pub mod tfa;
 
-- 
2.43.0



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


  reply	other threads:[~2024-05-16 16:25 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-16 16:24 [pbs-devel] [RFC backup/proxmox-backup 0/4] fix #5463: add optional consent banner before login Gabriel Goller
2024-05-16 16:24 ` Gabriel Goller [this message]
2024-05-16 16:24 ` [pbs-devel] [PATCH proxmox-backup 2/4] ui: show " Gabriel Goller
2024-05-16 16:25 ` [pbs-devel] [PATCH proxmox-backup 3/4] docs: add short section about consent banner Gabriel Goller
2024-05-16 16:25 ` [pbs-devel] [PATCH backup 4/4] window: add consent modal Gabriel Goller
2024-05-17  7:15 ` [pbs-devel] [RFC backup/proxmox-backup 0/4] fix #5463: add optional consent banner before login Dominik Csapak
2024-05-21  8:22   ` Gabriel Goller
2024-05-21  8:35     ` Dominik Csapak
2024-05-21 10:13       ` Gabriel Goller
2024-05-22 13:28 ` Gabriel Goller
2024-05-22 13:19 [pbs-devel] [PATCH " Gabriel Goller
2024-05-22 13:19 ` [pbs-devel] [PATCH proxmox-backup 1/4] api: add consent api handler and config Gabriel Goller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240516162508.327472-2-g.goller@proxmox.com \
    --to=g.goller@proxmox.com \
    --cc=pbs-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal