Switch guild to new permission system.

This commit is contained in:
Paul Makles
2020-04-09 16:26:41 +01:00
parent 28fa2aad6c
commit e92b686410
3 changed files with 25 additions and 53 deletions

View File

@@ -1,17 +1,27 @@
use super::channel::ChannelType;
use super::Response;
use crate::database::{
self,
channel::Channel,
guild::{find_member_permissions, Guild},
};
use crate::database::{self, channel::Channel, PermissionCalculator};
use crate::guards::auth::UserRef;
use crate::guards::guild::GuildRef;
use bson::{doc, from_bson, Bson};
use rocket_contrib::json::Json;
use serde::{Deserialize, Serialize};
use ulid::Ulid;
use super::channel::ChannelType;
macro_rules! with_permissions {
($user: expr, $target: expr) => {{
let permissions = PermissionCalculator::new($user.clone())
.guild($target.clone())
.as_permission();
if !permissions.get_access() {
return None;
}
permissions
}};
}
/// fetch your guilds
#[get("/@me")]
@@ -46,10 +56,8 @@ pub fn my_guilds(user: UserRef) -> Response {
/// fetch a guild
#[get("/<target>")]
pub fn guild(user: UserRef, target: Guild) -> Option<Response> {
if find_member_permissions(user.id.clone(), target.id.clone(), None) == 0 {
return None;
}
pub fn guild(user: UserRef, target: GuildRef) -> Option<Response> {
with_permissions!(user, target);
let mut targets = vec![];
for channel in target.channels {