diff options
| author | Daniel Hader <[email protected]> | 2026-05-30 18:28:16 -0500 |
|---|---|---|
| committer | Daniel Hader <[email protected]> | 2026-05-30 18:28:16 -0500 |
| commit | e6d3eeb7c055a2941600f048697298b0e77b2e2c (patch) | |
| tree | fc7506660cab7a0eb54d8e9c2f5f5f6dc3ec26db /src/main.rs | |
| parent | 5e19bada513378eda6a16d7ea13a0db9679e3836 (diff) | |
admin account registration as part of server init
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs index 36ef319..b1979b1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,6 +2,7 @@ use std::env; mod database; mod routes; +mod utils; use axum::{ routing::{get, post}, @@ -13,7 +14,7 @@ use routes::user::{create_user, me}; use routes::auth::{login, logout}; use tower_http::services::ServeDir; -use crate::database::Database; +use crate::{database::Database, utils::register_admin}; #[derive(Clone)] struct AppState { @@ -24,13 +25,31 @@ struct AppState { #[tokio::main] async fn main() { + let database = Database::new_in_memory().unwrap(); + database.initialize().unwrap(); + + // TODO: generically load environment variables, this is tedious let Ok(secret) = env::var("JWT_SECRET") else { eprintln!("missing environment variable JWT_SECRET"); return; }; - - let database = Database::new_in_memory().unwrap(); - database.initialize().unwrap(); + let Ok(admin_email) = env::var("ADMIN_EMAIL") else { + eprintln!("missing environment variable ADMIN_EMAIL"); + return; + }; + let Ok(admin_username) = env::var("ADMIN_USERNAME") else { + eprintln!("missing environment variable ADMIN_USERNAME"); + return; + }; + let Ok(admin_password) = env::var("ADMIN_PASSWORD") else { + eprintln!("missing environment variable ADMIN_PASSWORD"); + return; + }; + + let Ok(()) = register_admin(&database, &admin_email, &admin_username, &admin_password) else { + eprintln!("failed to register admin user"); + return; + }; let state = AppState { secret: secret, |
