rave/src/user.rs

30 lines
763 B
Rust

use color_eyre::Result;
use serde::{Deserialize, Serialize};
use crate::utils::middleware::DbConn;
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct User {
pub id: i64,
pub name: String,
/// I hate this. It's stored in plaintext. Why?
password: String,
pub is_admin: bool,
}
impl User {
pub fn verify(&self, hashed_password: &str, salt: &str) -> bool {
let ours = md5::compute(format!("{}{}", self.password, salt));
let ours = format!("{ours:x}");
ours == hashed_password
}
}
pub async fn get_user(conn: DbConn, name: &str) -> Result<Option<User>> {
let user = sqlx::query_as!(User, "SELECT * FROM users WHERE name = $1", name)
.fetch_optional(&*conn)
.await?;
Ok(user)
}