Servers: Create and delete invites. Create and fetch servers.
This commit is contained in:
28
src/routes/invites/invite_delete.rs
Normal file
28
src/routes/invites/invite_delete.rs
Normal file
@@ -0,0 +1,28 @@
|
||||
use crate::database::*;
|
||||
use crate::util::result::{Error, Result};
|
||||
|
||||
#[delete("/<target>")]
|
||||
pub async fn req(user: User, target: Ref) -> Result<()> {
|
||||
let target = target.fetch_invite().await?;
|
||||
|
||||
if target.creator() == &user.id {
|
||||
target.delete().await
|
||||
} else {
|
||||
match &target {
|
||||
Invite::Server { server, .. } => {
|
||||
let server = Ref::from_unchecked(server.clone()).fetch_server().await?;
|
||||
let perm = permissions::PermissionCalculator::new(&user)
|
||||
.with_server(&server)
|
||||
.for_server()
|
||||
.await?;
|
||||
|
||||
if !perm.get_manage_server() {
|
||||
return Err(Error::MissingPermission);
|
||||
}
|
||||
|
||||
target.delete().await
|
||||
},
|
||||
_ => unreachable!()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user