BasicOIDC/src/main.rs

60 lines
1.7 KiB
Rust
Raw Normal View History

#[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};
2022-03-30 07:40:46 +00:00
use basic_oidc::controllers::assets_controller::assets_route;
#[get("/health")]
fn index() -> &'static str {
"Running"
2022-03-29 16:19:23 +00:00
}
2022-03-30 06:42:18 +00:00
#[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])
2022-03-30 07:40:46 +00:00
.mount("/assets", routes![assets_route])
.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()
);
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() {
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)
.expect("Failed to create initial user!");
}
2022-03-30 06:42:18 +00:00
rocket.launch().await
}