allow 'deletion' of user
This commit is contained in:
@ -18,6 +18,7 @@ pub struct User {
|
||||
pub is_cox: bool,
|
||||
is_admin: bool,
|
||||
is_guest: bool,
|
||||
deleted: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
@ -34,7 +35,7 @@ impl User {
|
||||
sqlx::query_as!(
|
||||
User,
|
||||
"
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted
|
||||
FROM user
|
||||
WHERE id like ?
|
||||
",
|
||||
@ -49,7 +50,7 @@ WHERE id like ?
|
||||
sqlx::query_as!(
|
||||
User,
|
||||
"
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted
|
||||
FROM user
|
||||
WHERE name like ?
|
||||
",
|
||||
@ -64,8 +65,9 @@ WHERE name like ?
|
||||
sqlx::query_as!(
|
||||
User,
|
||||
"
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted
|
||||
FROM user
|
||||
WHERE deleted = 0
|
||||
ORDER BY name
|
||||
"
|
||||
)
|
||||
@ -103,6 +105,11 @@ ORDER BY name
|
||||
return Err(LoginError::InvalidAuthenticationCombo); // Username not found
|
||||
};
|
||||
|
||||
if user.deleted {
|
||||
return Err(LoginError::InvalidAuthenticationCombo); //User existed sometime ago; has
|
||||
//been deleted
|
||||
}
|
||||
|
||||
match user.pw.clone() {
|
||||
Some(user_pw) => {
|
||||
let password_hash = Self::get_hashed_pw(&pw);
|
||||
@ -139,6 +146,13 @@ ORDER BY name
|
||||
.unwrap()
|
||||
.to_string()
|
||||
}
|
||||
|
||||
pub async fn delete(&self, db: &SqlitePool) {
|
||||
sqlx::query!("UPDATE user SET deleted=1 WHERE id=?", self.id)
|
||||
.execute(db)
|
||||
.await
|
||||
.unwrap(); //Okay, because we can only create a User of a valid id
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
|
Reference in New Issue
Block a user