fix: ensure bot invite route runs correct group member checks
This commit is contained in:
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -3098,7 +3098,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "revolt-quark"
|
name = "revolt-quark"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/revoltchat/quark?rev=1eb92e3b5893075de1c11332bab76bffd88d4fa8#1eb92e3b5893075de1c11332bab76bffd88d4fa8"
|
source = "git+https://github.com/revoltchat/quark?rev=2e914015d56dcedead3a7e9ed2b9ff0696a5135e#2e914015d56dcedead3a7e9ed2b9ff0696a5135e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-recursion",
|
"async-recursion",
|
||||||
"async-std",
|
"async-std",
|
||||||
|
|||||||
@@ -69,5 +69,5 @@ schemars = "0.8.8"
|
|||||||
rocket_okapi = { git = "https://github.com/insertish/okapi", rev = "dcf0df115596ee07a587a7a543cddf3d7944645b", features = [ "swagger" ] }
|
rocket_okapi = { git = "https://github.com/insertish/okapi", rev = "dcf0df115596ee07a587a7a543cddf3d7944645b", features = [ "swagger" ] }
|
||||||
|
|
||||||
# quark
|
# quark
|
||||||
revolt-quark = { git = "https://github.com/revoltchat/quark", rev = "1eb92e3b5893075de1c11332bab76bffd88d4fa8" }
|
revolt-quark = { git = "https://github.com/revoltchat/quark", rev = "2e914015d56dcedead3a7e9ed2b9ff0696a5135e" }
|
||||||
# revolt-quark = { path = "../quark" }
|
# revolt-quark = { path = "../quark" }
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
use revolt_quark::{
|
use revolt_quark::{models::User, perms, Db, EmptyResponse, Error, Permission, Ref, Result};
|
||||||
models::{Channel, User},
|
|
||||||
perms, Db, EmptyResponse, Error, Permission, Ref, Result,
|
|
||||||
};
|
|
||||||
|
|
||||||
use rocket::serde::json::Json;
|
use rocket::serde::json::Json;
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
@@ -58,20 +55,17 @@ pub async fn invite_bot(
|
|||||||
.map(|_| EmptyResponse)
|
.map(|_| EmptyResponse)
|
||||||
}
|
}
|
||||||
InviteBotDestination::Group { group } => {
|
InviteBotDestination::Group { group } => {
|
||||||
let channel = db.fetch_channel(&group).await?;
|
let mut channel = db.fetch_channel(&group).await?;
|
||||||
|
|
||||||
perms(&user)
|
perms(&user)
|
||||||
.channel(&channel)
|
.channel(&channel)
|
||||||
.throw_permission_and_view_channel(db, Permission::InviteOthers)
|
.throw_permission_and_view_channel(db, Permission::InviteOthers)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
if let Channel::Group { id, .. } = channel {
|
channel
|
||||||
db.add_user_to_group(&id, &bot.id)
|
.add_user_to_group(db, &bot.id, &user.id)
|
||||||
.await
|
.await
|
||||||
.map(|_| EmptyResponse)
|
.map(|_| EmptyResponse)
|
||||||
} else {
|
|
||||||
Err(Error::InvalidOperation)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ pub async fn req(db: &Db, user: User, target: Ref) -> Result<EmptyResponse> {
|
|||||||
.await
|
.await
|
||||||
.map(|_| EmptyResponse),
|
.map(|_| EmptyResponse),
|
||||||
Channel::Group { .. } => channel
|
Channel::Group { .. } => channel
|
||||||
.remove_user_from_group(db, &user.id)
|
.remove_user_from_group(db, &user.id, None)
|
||||||
.await
|
.await
|
||||||
.map(|_| EmptyResponse),
|
.map(|_| EmptyResponse),
|
||||||
Channel::TextChannel { .. } | Channel::VoiceChannel { .. } => {
|
Channel::TextChannel { .. } | Channel::VoiceChannel { .. } => {
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ pub async fn req(db: &Db, user: User, target: Ref, member: Ref) -> Result<EmptyR
|
|||||||
}
|
}
|
||||||
|
|
||||||
channel
|
channel
|
||||||
.remove_user_from_group(db, &member.id)
|
.remove_user_from_group(db, &member.id, Some(&user.id))
|
||||||
.await
|
.await
|
||||||
.map(|_| EmptyResponse)
|
.map(|_| EmptyResponse)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user