myc_http_tools/models/
auth_config.rs1use super::{
2 external_providers_config::ExternalProviderConfig,
3 internal_auth_config::InternalOauthConfig,
4};
5
6use myc_config::{load_config_from_file, optional_config::OptionalConfig};
7use mycelium_base::utils::errors::{creation_err, MappedErrors};
8use serde::{Deserialize, Serialize};
9use std::path::PathBuf;
10
11#[derive(Debug, Clone, Deserialize, Serialize)]
12#[serde(rename_all = "camelCase")]
13pub struct AuthConfig {
14 #[serde(default)]
15 pub internal: OptionalConfig<InternalOauthConfig>,
16 #[serde(default)]
17 pub external: OptionalConfig<Vec<ExternalProviderConfig>>,
18}
19
20#[derive(Clone, Debug, Deserialize)]
21#[serde(rename_all = "camelCase")]
22struct TmpConfig {
23 auth: AuthConfig,
24}
25
26impl AuthConfig {
27 pub fn from_default_config_file(
28 file: PathBuf,
29 ) -> Result<Self, MappedErrors> {
30 if !file.exists() {
31 return creation_err(format!(
32 "Could not find config file: {}",
33 file.to_str().unwrap()
34 ))
35 .as_error();
36 }
37
38 match load_config_from_file::<TmpConfig>(file) {
39 Ok(config) => Ok(config.auth),
40 Err(err) => Err(err),
41 }
42 }
43}