add: blocked users page

This commit is contained in:
trisua 2025-05-09 22:36:16 -04:00
parent 6893aeedb5
commit 3706764437
18 changed files with 427 additions and 178 deletions

View file

@ -43,7 +43,7 @@ impl DataManager {
let mut out = Vec::new();
for member in members {
if ignore_users.contains(&member) {
if ignore_users.contains(member) {
continue;
}

View file

@ -60,7 +60,7 @@ impl DataManager {
let mut users: HashMap<usize, User> = HashMap::new();
for (i, message) in messages.iter().enumerate() {
let next_owner: usize = match messages.get(i + 1) {
Some(ref m) => m.owner,
Some(m) => m.owner,
None => 0,
};

View file

@ -171,10 +171,8 @@ impl DataManager {
let stack = self.get_stack_by_id(id).await?;
// check user permission
if user.id != stack.owner {
if !user.permissions.check(FinePermission::MANAGE_STACKS) {
return Err(Error::NotAllowed);
}
if user.id != stack.owner && !user.permissions.check(FinePermission::MANAGE_STACKS) {
return Err(Error::NotAllowed);
}
// ...

View file

@ -25,6 +25,17 @@ impl DataManager {
auto_method!(get_userblock_by_id()@get_userblock_from_row -> "SELECT * FROM userblocks WHERE id = $1" --name="user block" --returns=UserBlock --cache-key-tmpl="atto.userblock:{}");
/// Fill a vector of user blocks with their receivers.
pub async fn fill_userblocks_receivers(&self, list: Vec<UserBlock>) -> Result<Vec<User>> {
let mut out = Vec::new();
for block in list {
out.push(self.get_user_by_id(block.receiver).await?);
}
Ok(out)
}
/// Get a user block by `initiator` and `receiver` (in that order).
pub async fn get_userblock_by_initiator_receiver(
&self,
@ -104,6 +115,28 @@ impl DataManager {
out
}
/// Get all user blocks created by the given `initiator`.
pub async fn get_userblocks_by_initiator(&self, initiator: usize) -> Vec<UserBlock> {
let conn = match self.connect().await {
Ok(c) => c,
Err(_) => return Vec::new(),
};
let res = query_rows!(
&conn,
"SELECT * FROM userblocks WHERE initiator = $1",
&[&(initiator as i64)],
|x| { Self::get_userblock_from_row(x) }
);
if res.is_err() {
return Vec::new();
}
// return
res.unwrap()
}
/// Create a new user block in the database.
///
/// # Arguments