55 lines
1.2 KiB
Rust
55 lines
1.2 KiB
Rust
|
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;
|
||
|
}
|