#[macro_use] extern crate rocket; use rocket::fairing::AdHoc; use basic_oidc::constants::{DEFAULT_ADMIN_PASSWORD, DEFAULT_ADMIN_USERNAME}; use basic_oidc::data::app_config::AppConfig; use basic_oidc::data::entity_manager::EntityManager; use basic_oidc::data::user::{hash_password, User}; #[get("/health")] fn index() -> &'static str { "Running" } #[rocket::main] async fn main() -> Result<(), rocket::Error> { //env_logger::init_from_env(env_logger::Env::new().default_filter_or("info")); let rocket = rocket::build() .mount("/", routes![index]) .attach(AdHoc::config::()); let figment = rocket.figment(); // Initialize application let config: AppConfig = figment.extract().expect("config"); if !config.storage_path().exists() { log::error!( "Specified storage path {:?} does not exists!", config.storage_path() ); panic!() } let mut users = EntityManager::::open_or_create(config.users_file()) .expect("Failed to load users list!"); // Create initial user if required if users.is_empty() { log::info!("Create default {} user", DEFAULT_ADMIN_USERNAME); let default_admin = User { username: DEFAULT_ADMIN_USERNAME.to_string(), password: hash_password(DEFAULT_ADMIN_PASSWORD).unwrap(), need_reset_password: true, authorized_services: None, admin: true, ..Default::default() }; users .insert(default_admin) .expect("Failed to create initial user!"); } rocket.launch().await }