#[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" } #[launch] fn rocket() -> _ { //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.len() == 0 { log::info!("Create default {} user", DEFAULT_ADMIN_USERNAME); let mut default_admin = User::default(); default_admin.username = DEFAULT_ADMIN_USERNAME.to_string(); default_admin.password = hash_password(DEFAULT_ADMIN_PASSWORD).unwrap(); default_admin.need_reset_password = true; default_admin.authorized_services = None; default_admin.admin = true; users.insert(default_admin) .expect("Failed to create initial user!"); } rocket }