Automatically create admin on first start
This commit is contained in:
52
src/main.rs
52
src/main.rs
@ -1,3 +1,51 @@
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
#[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::<AppConfig>());
|
||||
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::<User>::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
|
||||
}
|
Reference in New Issue
Block a user