api: access: domains: add ExtraRealmInfo and RealmInfo structs

these will be used as parameters/return types for the read/create/etc.
calls for realms

for now we copy the necessary attributes (only from openid) since
our api macros/tools are not good enought to generate the necessary
api definitions for section configs

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2021-07-09 13:43:58 +02:00 committed by Thomas Lamprecht
parent 934de1d691
commit da7ec1d2af
1 changed files with 65 additions and 0 deletions

View File

@ -8,6 +8,7 @@ use serde_json::{json, Value};
use proxmox::api::{api, Permission, Router, RpcEnvironment}; use proxmox::api::{api, Permission, Router, RpcEnvironment};
use crate::api2::types::*; use crate::api2::types::*;
use crate::config::domains::{OpenIdRealmConfig, OpenIdUserAttribute};
#[api] #[api]
#[derive(Deserialize, Serialize, PartialEq, Eq)] #[derive(Deserialize, Serialize, PartialEq, Eq)]
@ -50,6 +51,70 @@ pub struct BasicRealmInfo {
pub comment: Option<String>, pub comment: Option<String>,
} }
#[api(
properties: {
"issuer-url": {
description: "OpenID Issuer Url",
type: String,
optional: true,
},
"client-id": {
description: "OpenID Client ID",
type: String,
optional: true,
},
"client-key": {
description: "OpenID Client Key",
type: String,
optional: true,
},
autocreate: {
description: "Automatically create users if they do not exist.",
optional: true,
type: bool,
default: false,
},
"username-claim": {
type: OpenIdUserAttribute,
optional: true,
},
},
)]
#[derive(Deserialize, Serialize)]
#[serde(rename_all = "kebab-case")]
/// Extra Information about a realm
pub struct ExtraRealmInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub issuer_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub client_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub client_key: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub autocreate: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub username_claim: Option<OpenIdUserAttribute>,
}
#[api(
properties: {
"info": {
type: BasicRealmInfo,
},
"extra": {
type: ExtraRealmInfo,
},
},
)]
#[derive(Deserialize, Serialize)]
#[serde(rename_all = "kebab-case")]
/// Information about a realm
pub struct RealmInfo {
#[serde(flatten)]
pub info: BasicRealmInfo,
#[serde(flatten)]
pub extra: ExtraRealmInfo,
}
#[api( #[api(
returns: { returns: {