2022-03-29 17:32:31 +00:00
|
|
|
#[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"
|
2022-03-29 16:19:23 +00:00
|
|
|
}
|
2022-03-29 17:32:31 +00:00
|
|
|
|
2022-03-30 06:42:18 +00:00
|
|
|
#[rocket::main]
|
|
|
|
async fn main() -> Result<(), rocket::Error> {
|
2022-03-29 17:32:31 +00:00
|
|
|
//env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));
|
|
|
|
|
|
|
|
let rocket = rocket::build()
|
|
|
|
.mount("/", routes![index])
|
|
|
|
.attach(AdHoc::config::<AppConfig>());
|
|
|
|
let figment = rocket.figment();
|
|
|
|
|
|
|
|
// Initialize application
|
|
|
|
let config: AppConfig = figment.extract().expect("config");
|
|
|
|
|
|
|
|
if !config.storage_path().exists() {
|
2022-03-30 06:42:18 +00:00
|
|
|
log::error!(
|
|
|
|
"Specified storage path {:?} does not exists!",
|
|
|
|
config.storage_path()
|
|
|
|
);
|
2022-03-29 17:32:31 +00:00
|
|
|
panic!()
|
|
|
|
}
|
|
|
|
|
|
|
|
let mut users = EntityManager::<User>::open_or_create(config.users_file())
|
|
|
|
.expect("Failed to load users list!");
|
|
|
|
|
|
|
|
// Create initial user if required
|
2022-03-30 06:42:18 +00:00
|
|
|
if users.is_empty() {
|
2022-03-29 17:32:31 +00:00
|
|
|
log::info!("Create default {} user", DEFAULT_ADMIN_USERNAME);
|
2022-03-30 06:42:18 +00:00
|
|
|
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)
|
2022-03-29 17:32:31 +00:00
|
|
|
.expect("Failed to create initial user!");
|
|
|
|
}
|
|
|
|
|
2022-03-30 06:42:18 +00:00
|
|
|
rocket.launch().await
|
|
|
|
}
|