]> git.proxmox.com Git - proxmox-openid-rs.git/commitdiff
allow to configure prompt behaviour
authorDietmar Maurer <dietmar@proxmox.com>
Fri, 6 Aug 2021 11:57:42 +0000 (13:57 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 18 Nov 2021 08:33:11 +0000 (09:33 +0100)
And do not set it by default.

src/lib.rs

index de2251fc90edbe4c70c39ecc285eea324ad05053..aead3d74126a2a819773806651092d63772ea1dc 100644 (file)
@@ -45,7 +45,7 @@ impl AdditionalClaims for GenericClaims {}
 
 pub type GenericUserInfoClaims = UserInfoClaims<GenericClaims, CoreGenderClaim>;
 
-    #[derive(Debug, Deserialize, Serialize, Clone)]
+#[derive(Debug, Deserialize, Serialize, Clone)]
 pub struct OpenIdConfig {
     pub issuer_url: String,
     pub client_id: String,
@@ -53,6 +53,8 @@ pub struct OpenIdConfig {
     pub client_key: Option<String>,
     #[serde(skip_serializing_if="Option::is_none")]
     pub scopes: Option<Vec<String>>,
+    #[serde(skip_serializing_if="Option::is_none")]
+    pub prompt: Option<String>,
 }
 
 pub struct OpenIdAuthenticator {
@@ -148,7 +150,24 @@ impl OpenIdAuthenticator {
 
         request = request.set_display(CoreAuthDisplay::Page);
 
-        request = request.add_prompt(CoreAuthPrompt::Login);
+        match self.config.prompt.as_deref() {
+            None => { /* nothing */ },
+            Some("none") => {
+                request = request.add_prompt(CoreAuthPrompt::None);
+            }
+            Some("login") => {
+                request = request.add_prompt(CoreAuthPrompt::Login);
+            }
+            Some("consent") => {
+                request = request.add_prompt(CoreAuthPrompt::Consent);
+            }
+            Some("select_account") => {
+                request = request.add_prompt(CoreAuthPrompt::SelectAccount);
+            }
+            Some(extension) => {
+                request = request.add_prompt(CoreAuthPrompt::Extension(extension.into()));
+            }
+        }
 
         if let Some(ref scopes) = self.config.scopes {
             for scope in scopes.clone() {