fix: ensure bot invite route runs correct group member checks

This commit is contained in:
Paul Makles
2022-04-24 13:59:07 +01:00
parent fad540a87a
commit e1169c5335
5 changed files with 10 additions and 16 deletions

View File

@@ -1,7 +1,4 @@
use revolt_quark::{
models::{Channel, User},
perms, Db, EmptyResponse, Error, Permission, Ref, Result,
};
use revolt_quark::{models::User, perms, Db, EmptyResponse, Error, Permission, Ref, Result};
use rocket::serde::json::Json;
use serde::Deserialize;
@@ -58,20 +55,17 @@ pub async fn invite_bot(
.map(|_| EmptyResponse)
}
InviteBotDestination::Group { group } => {
let channel = db.fetch_channel(&group).await?;
let mut channel = db.fetch_channel(&group).await?;
perms(&user)
.channel(&channel)
.throw_permission_and_view_channel(db, Permission::InviteOthers)
.await?;
if let Channel::Group { id, .. } = channel {
db.add_user_to_group(&id, &bot.id)
.await
.map(|_| EmptyResponse)
} else {
Err(Error::InvalidOperation)
}
channel
.add_user_to_group(db, &bot.id, &user.id)
.await
.map(|_| EmptyResponse)
}
}
}

View File

@@ -27,7 +27,7 @@ pub async fn req(db: &Db, user: User, target: Ref) -> Result<EmptyResponse> {
.await
.map(|_| EmptyResponse),
Channel::Group { .. } => channel
.remove_user_from_group(db, &user.id)
.remove_user_from_group(db, &user.id, None)
.await
.map(|_| EmptyResponse),
Channel::TextChannel { .. } | Channel::VoiceChannel { .. } => {

View File

@@ -29,7 +29,7 @@ pub async fn req(db: &Db, user: User, target: Ref, member: Ref) -> Result<EmptyR
}
channel
.remove_user_from_group(db, &member.id)
.remove_user_from_group(db, &member.id, Some(&user.id))
.await
.map(|_| EmptyResponse)
}