Configuration builder
RuniqueApp::builder(), middlewares, secrets, assets.
main.rs — builder complet
main.rs
use runique::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
init_logging();
password_init(PasswordConfig::auto_with(Manual::Argon2));
set_lang(Lang::Fr);
let config = RuniqueConfig::from_env();
let db = DatabaseConfig::from_env()?.build().connect().await?;
RuniqueApp::builder(config)
.routes(url::routes())
.with_database(db)
.statics()
.middleware(|m| {
m.with_session_memory_limit(5 * 1024 * 1024, 10 * 1024 * 1024)
.with_session_cleanup_interval(5)
.with_allowed_hosts(|h| {
h.enabled(!is_debug())
.host("monsite.fr")
.host("www.monsite.fr")
})
.with_csp(|c| {
c.policy(SecurityPolicy::strict())
.with_upgrade_insecure(!is_debug())
.images(vec!["''self''", "data:"])
})
})
.with_admin(|a| {
a.site_title("Administration")
.auth(RuniqueAdminAuth::new())
.routes(admins::routes("/admin"))
})
.build().await?
.run().await?;
Ok(())
}
main.rs — builder complet
main.rs
use runique::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
init_logging();
password_init(PasswordConfig::auto_with(Manual::Argon2));
set_lang(Lang::Fr);
let config = RuniqueConfig::from_env();
let db = DatabaseConfig::from_env()?.build().connect().await?;
RuniqueApp::builder(config)
.routes(url::routes())
.with_database(db)
.statics()
.middleware(|m| {
m.with_session_memory_limit(5 * 1024 * 1024, 10 * 1024 * 1024)
.with_session_cleanup_interval(5)
.with_allowed_hosts(|h| {
h.enabled(!is_debug())
.host("monsite.fr")
.host("www.monsite.fr")
})
.with_csp(|c| {
c.policy(SecurityPolicy::strict())
.with_upgrade_insecure(!is_debug())
.images(vec!["''self''", "data:"])
})
})
.with_admin(|a| {
a.site_title("Administration")
.auth(RuniqueAdminAuth::new())
.routes(admins::routes("/admin"))
})
.build().await?
.run().await?;
Ok(())
}
RuniqueConfig — variables .env
.env
# Obligatoires
SECRET_KEY=cle_secrete_256_bits
DATABASE_URL=postgres://user:pass@localhost/db
# Optionnels
DEBUG=true # active le hot reload templates + traces debug
HOST=127.0.0.1 # defaut 127.0.0.1
PORT=3000 # defaut 3000
RuniqueConfig — variables .env
.env
# Obligatoires
SECRET_KEY=cle_secrete_256_bits
DATABASE_URL=postgres://user:pass@localhost/db
# Optionnels
DEBUG=true # active le hot reload templates + traces debug
HOST=127.0.0.1 # defaut 127.0.0.1
PORT=3000 # defaut 3000
Middleware — options disponibles
builder
m.with_session_duration(Duration::hours(24))
.with_session_memory_limit(soft, hard) // octets
.with_session_cleanup_interval(minutes)
.with_allowed_hosts(|h| h.host("...").enabled(true))
.with_csp(|c| c.policy(SecurityPolicy::strict()))
.with_https_redirect(true)
Middleware — options disponibles
builder
m.with_session_duration(Duration::hours(24))
.with_session_memory_limit(soft, hard) // octets
.with_session_cleanup_interval(minutes)
.with_allowed_hosts(|h| h.host("...").enabled(true))
.with_csp(|c| c.policy(SecurityPolicy::strict()))
.with_https_redirect(true)