-
Notifications
You must be signed in to change notification settings - Fork 250
Closed
Description
In my current project, it was decided to use a .pem file to save a private RSA key. I would like to know it it is possible to assign the content of such file as a source to be defined as the value of access_token_private_key field.
Here is my settings struct:
/// Global settings for the exposing all preconfigured variables
#[derive(serde::Deserialize, Clone)]
pub struct Settings {
pub application: ApplicationSettings,
pub debug: bool,
pub redis: RedisSettings,
pub secret: Secret,
pub email: EmailSettings,
pub frontend_url: String
}
I wanna setup access_token_private_key field
#[derive(serde::Deserialize, Clone)]
pub struct Secret {
pub secret_key: String,
pub token_expiration: i64,
pub hmac_secret: String,
pub access_token_private_key: String,
pub access_token_public_key: String,
pub access_token_expired_in: String,
pub access_token_maxage: i64
}
Here is a function that I call to retrieve my settings
pub fn get_settings() -> Result<Settings, config::ConfigError> {
let base_path = std::env::current_dir().expect("Failed to determine the current directory");
let settings_directory = base_path.join("settings");
//Cert Path
let cert_directory = base_path.join("settings");
// Detect the running environment.
// Default to `development` if unspecified.
let environment: Environment = std::env::var("APP_ENVIRONMENT")
.unwrap_or_else(|_| "development".into())
.try_into()
.expect("Failed to parse APP_ENVIRONMENT.");
let environment_filename = format!("{}.yaml", environment.as_str());
let settings = config::Config::builder()
.add_source(config::File::from(settings_directory.join("base.yaml")))
.add_source(config::File::from(
settings_directory.join(environment_filename),
))
// Add in settings from environment variables (with a prefix of APP and '__' as separator)
// E.g. `APP_APPLICATION__PORT=5001 would set `Settings.application.port`
.add_source(
config::Environment::with_prefix("APP")
.prefix_separator("_")
.separator("__"),
)
// Add private/public key value
.add_source(????)
.build()?;
settings.try_deserialize::<Settings>()
}
Metadata
Metadata
Assignees
Labels
No labels