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:
parent
934de1d691
commit
da7ec1d2af
|
@ -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: {
|
||||||
|
|
Loading…
Reference in New Issue