Servers: Route for kicking a member.

This commit is contained in:
Paul
2021-06-06 15:22:23 +01:00
parent 1f1d9613e2
commit 782bfb7e03
7 changed files with 86 additions and 18 deletions

View File

@@ -0,0 +1,25 @@
use crate::database::*;
use crate::util::result::{Error, Result};
use mongodb::bson::doc;
#[delete("/<target>/members/<member>")]
pub async fn req(user: User, target: Ref, member: String) -> Result<()> {
let target = target.fetch_server().await?;
let perm = permissions::PermissionCalculator::new(&user)
.with_server(&target)
.for_server()
.await?;
if !perm.get_manage_members() {
return Err(Error::MissingPermission)
}
let member = Ref::from(member)?.fetch_member(&target.id).await?;
if member.id.user == user.id {
return Err(Error::InvalidOperation)
}
target.remove_member(&member.id.user).await
}

View File

@@ -8,6 +8,7 @@ mod server_edit;
mod channel_create;
mod member_fetch_all;
mod member_remove;
mod member_fetch;
mod member_edit;
@@ -21,6 +22,7 @@ pub fn routes() -> Vec<Route> {
server_edit::req,
channel_create::req,
member_fetch_all::req,
member_remove::req,
member_fetch::req,
member_edit::req,
invites_fetch::req