From 9f7c8310eb8901b433b41019392878e0114ce1b7 Mon Sep 17 00:00:00 2001 From: James Hodgkinson Date: Fri, 26 Jul 2024 17:01:21 -0700 Subject: [PATCH] fixing println bug (#2935) * fixing println bug * fixing schema requirement for OpenAPI * moar scim * moar OpenAPI * schema all the things --- Cargo.lock | 1 + libs/scim_proto/Cargo.toml | 1 + libs/scim_proto/src/lib.rs | 11 ++++++----- server/core/src/https/apidocs/mod.rs | 6 +++++- server/core/src/https/apidocs/response_schema.rs | 3 +++ server/daemon/src/main.rs | 3 +-- 6 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 97ea4684c..4504c75fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5372,6 +5372,7 @@ dependencies = [ "tracing", "tracing-subscriber", "url", + "utoipa", "uuid", ] diff --git a/libs/scim_proto/Cargo.toml b/libs/scim_proto/Cargo.toml index 917e5119b..133cb31d3 100644 --- a/libs/scim_proto/Cargo.toml +++ b/libs/scim_proto/Cargo.toml @@ -24,6 +24,7 @@ time = { workspace = true, features = ["local-offset", "formatting", "parsing", tracing = { workspace = true } url = { workspace = true, features = ["serde"] } uuid = { workspace = true, features = ["serde"] } +utoipa.workspace = true [dev-dependencies] tracing-subscriber = { workspace = true } diff --git a/libs/scim_proto/src/lib.rs b/libs/scim_proto/src/lib.rs index a6135bd9c..83f896741 100644 --- a/libs/scim_proto/src/lib.rs +++ b/libs/scim_proto/src/lib.rs @@ -14,6 +14,7 @@ use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; use time::OffsetDateTime; use url::Url; +use utoipa::ToSchema; use uuid::Uuid; pub mod constants; @@ -27,7 +28,7 @@ pub mod prelude { pub use crate::{ScimAttr, ScimComplexAttr, ScimEntry, ScimEntryGeneric, ScimMeta, ScimValue}; } -#[derive(Deserialize, Serialize, Debug, Clone)] +#[derive(Deserialize, Serialize, Debug, Clone, ToSchema)] #[serde(untagged)] pub enum ScimAttr { Bool(bool), @@ -67,7 +68,7 @@ impl PartialEq for ScimAttr { pub type ScimComplexAttr = BTreeMap; -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, ToSchema)] #[serde(untagged)] pub enum ScimValue { Simple(ScimAttr), @@ -90,7 +91,7 @@ impl ScimValue { } } -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, ToSchema)] #[serde(rename_all = "camelCase", deny_unknown_fields)] pub struct ScimMeta { pub resource_type: String, @@ -102,7 +103,7 @@ pub struct ScimMeta { pub version: String, } -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, ToSchema)] #[serde(rename_all = "camelCase")] pub struct ScimEntry { pub schemas: Vec, @@ -113,7 +114,7 @@ pub struct ScimEntry { pub meta: Option, } -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, ToSchema)] #[serde(rename_all = "camelCase")] pub struct ScimEntryGeneric { pub schemas: Vec, diff --git a/server/core/src/https/apidocs/mod.rs b/server/core/src/https/apidocs/mod.rs index ea8abdd69..8eb00ecc4 100644 --- a/server/core/src/https/apidocs/mod.rs +++ b/server/core/src/https/apidocs/mod.rs @@ -206,6 +206,10 @@ impl Modify for SecurityAddon { scim_v1::ScimSyncState, scim_v1::ScimSyncRequest, scim_v1::ScimSyncRetentionMode, + scim_v1::ScimEntryGeneric, + scim_v1::ScimValue, + scim_v1::ScimMeta, + scim_v1::ScimAttr, // TODO: can't add Entry/ProtoEntry to schema as this was only recently supported utoipa v3.5.0 doesn't support it - ref // v1::Entry, internal::ApiToken, @@ -283,7 +287,7 @@ impl Modify for SecurityAddon { response_schema::ScimEntry, // terrible workaround for other things response_schema::Jwk, - + response_schema::ScimComplexAttr, WebError, ) ), diff --git a/server/core/src/https/apidocs/response_schema.rs b/server/core/src/https/apidocs/response_schema.rs index 054795b37..06ae6d449 100644 --- a/server/core/src/https/apidocs/response_schema.rs +++ b/server/core/src/https/apidocs/response_schema.rs @@ -94,3 +94,6 @@ pub(crate) struct ScimEntry {} #[derive(Debug, Clone, ToSchema)] pub(crate) struct Jwk {} + +#[derive(Debug, Clone, ToSchema)] +pub(crate) struct ScimComplexAttr {} diff --git a/server/daemon/src/main.rs b/server/daemon/src/main.rs index 18293dd64..577995615 100644 --- a/server/daemon/src/main.rs +++ b/server/daemon/src/main.rs @@ -537,8 +537,7 @@ fn main() -> ExitCode { #[cfg(all(target_os = "linux", not(debug_assertions)))] if let Err(code) = prctl::set_dumpable(false) { println!( - ?code, - "CRITICAL: Unable to set prctl flags, which breaches our security model, quitting!" + "CRITICAL: Unable to set prctl flags, which breaches our security model, quitting! {:?}", code ); return ExitCode::FAILURE; }