forked from jmug/stoatchat
fix(bans): fix data format returned
This commit is contained in:
@@ -34,11 +34,5 @@ pub async fn req(
|
|||||||
let member = target.as_member(db, &server.id).await?;
|
let member = target.as_member(db, &server.id).await?;
|
||||||
// ! FIXME_PERMISSIONS
|
// ! FIXME_PERMISSIONS
|
||||||
|
|
||||||
let ban = ServerBan {
|
member.ban(db, data.reason).await.map(Json)
|
||||||
id: member.id,
|
|
||||||
reason: data.reason,
|
|
||||||
};
|
|
||||||
|
|
||||||
db.insert_ban(&ban).await?;
|
|
||||||
Ok(Json(ban))
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,18 +6,43 @@ use serde::{Deserialize, Serialize};
|
|||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
struct BannedUser {
|
struct BannedUser {
|
||||||
_id: String,
|
#[serde(rename = "_id")]
|
||||||
username: String,
|
pub id: String,
|
||||||
avatar: Option<File>,
|
pub username: String,
|
||||||
|
pub avatar: Option<File>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
|
pub struct BanListResult {
|
||||||
|
users: Vec<BannedUser>,
|
||||||
|
bans: Vec<ServerBan>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[get("/<target>/bans")]
|
#[get("/<target>/bans")]
|
||||||
pub async fn req(db: &Db, user: User, target: Ref) -> Result<Json<Vec<ServerBan>>> {
|
pub async fn req(db: &Db, user: User, target: Ref) -> Result<Json<BanListResult>> {
|
||||||
let server = target.as_server(db).await?;
|
let server = target.as_server(db).await?;
|
||||||
perms(&user)
|
perms(&user)
|
||||||
.server(&server)
|
.server(&server)
|
||||||
.throw_permission(db, Permission::BanMembers)
|
.throw_permission(db, Permission::BanMembers)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
db.fetch_bans(&server.id).await.map(Json)
|
let bans = db.fetch_bans(&server.id).await?;
|
||||||
|
let users = db
|
||||||
|
.fetch_users(
|
||||||
|
&bans
|
||||||
|
.iter()
|
||||||
|
.map(|x| &x.id.user)
|
||||||
|
.cloned()
|
||||||
|
.collect::<Vec<String>>(),
|
||||||
|
)
|
||||||
|
.await?
|
||||||
|
.into_iter()
|
||||||
|
.map(|x| BannedUser {
|
||||||
|
id: x.id,
|
||||||
|
username: x.username,
|
||||||
|
avatar: x.avatar,
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
Ok(Json(BanListResult { users, bans }))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user