From 406c7266019c0c36cfe5069bfe5cf293badd3a30 Mon Sep 17 00:00:00 2001 From: Ilion Beyst Date: Tue, 9 Aug 2022 23:27:22 +0200 Subject: create password reset utility Co-authored-by: Wout Schellaert --- planetwars-server/src/cli.rs | 54 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 planetwars-server/src/cli.rs (limited to 'planetwars-server/src/cli.rs') diff --git a/planetwars-server/src/cli.rs b/planetwars-server/src/cli.rs new file mode 100644 index 0000000..f33506e --- /dev/null +++ b/planetwars-server/src/cli.rs @@ -0,0 +1,54 @@ +extern crate planetwars_server; +extern crate tokio; + +use clap::Parser; +use planetwars_server::db; +use planetwars_server::{create_db_pool, get_config}; + +#[derive(clap::Parser)] +struct Args { + #[clap(subcommand)] + action: Action, +} + +#[derive(clap::Subcommand)] +enum Action { + SetPassword(SetPassword), +} + +impl Action { + async fn run(self) { + match self { + Action::SetPassword(set_password) => set_password.run().await, + } + } +} + +#[derive(clap::Parser)] +struct SetPassword { + #[clap(value_parser)] + username: String, + + #[clap(value_parser)] + new_password: String, +} + +impl SetPassword { + async fn run(self) { + let global_config = get_config().unwrap(); + let pool = create_db_pool(&global_config).await; + + let conn = pool.get().await.expect("could not get database connection"); + let credentials = db::users::Credentials { + username: &self.username, + password: &self.new_password, + }; + db::users::set_user_password(credentials, &conn).expect("could not set password"); + } +} + +#[tokio::main] +pub async fn main() { + let args = Args::parse(); + args.action.run().await; +} -- cgit v1.2.3