Fix: Permission PUT route priority.

This commit is contained in:
Paul
2021-07-01 17:49:48 +01:00
parent 57f81e018c
commit e452d6a362
5 changed files with 21 additions and 11 deletions

View File

@@ -1,3 +1,3 @@
#!/bin/bash
export version=0.5.1-alpha.2
export version=0.5.1-alpha.3
echo "pub const VERSION: &str = \"${version}\";" > src/version.rs

View File

@@ -13,7 +13,7 @@ pub struct Data {
permissions: u32
}
#[put("/<target>/permissions/<role>", data = "<data>")]
#[put("/<target>/permissions/<role>", data = "<data>", rank = 2)]
pub async fn req(user: User, target: Ref, role: String, data: Json<Data>) -> Result<()> {
let target = target.fetch_channel().await?;
@@ -33,7 +33,7 @@ pub async fn req(user: User, target: Ref, role: String, data: Json<Data>) -> Res
if !target.roles.has_element(&role) {
return Err(Error::NotFound);
}
let permissions: u32 = ChannelPermission::View as u32 | data.permissions;
get_collection("channels")

View File

@@ -9,12 +9,17 @@ use crate::notifications::events::ClientboundNotification;
use crate::util::result::{Error, Result};
#[derive(Serialize, Deserialize)]
pub struct Data {
pub struct Values {
server: u32,
channel: u32
}
#[put("/<target>/permissions/<role_id>", data = "<data>")]
#[derive(Serialize, Deserialize)]
pub struct Data {
permissions: Values
}
#[put("/<target>/permissions/<role_id>", data = "<data>", rank = 2)]
pub async fn req(user: User, target: Ref, role_id: String, data: Json<Data>) -> Result<()> {
let target = target.fetch_server().await?;
@@ -31,8 +36,8 @@ pub async fn req(user: User, target: Ref, role_id: String, data: Json<Data>) ->
return Err(Error::NotFound);
}
let server_permissions: u32 = ServerPermission::View as u32 | data.server;
let channel_permissions: u32 = ChannelPermission::View as u32 | data.channel;
let server_permissions: u32 = ServerPermission::View as u32 | data.permissions.server;
let channel_permissions: u32 = ChannelPermission::View as u32 | data.permissions.channel;
get_collection("servers")
.update_one(

View File

@@ -9,11 +9,16 @@ use crate::notifications::events::ClientboundNotification;
use crate::util::result::{Error, Result};
#[derive(Serialize, Deserialize)]
pub struct Data {
pub struct Values {
server: u32,
channel: u32
}
#[derive(Serialize, Deserialize)]
pub struct Data {
permissions: Values
}
#[put("/<target>/permissions/default", data = "<data>", rank = 1)]
pub async fn req(user: User, target: Ref, data: Json<Data>) -> Result<()> {
let target = target.fetch_server().await?;
@@ -27,8 +32,8 @@ pub async fn req(user: User, target: Ref, data: Json<Data>) -> Result<()> {
return Err(Error::MissingPermission);
}
let server_permissions: u32 = ServerPermission::View as u32 | data.server;
let channel_permissions: u32 = ChannelPermission::View as u32 | data.channel;
let server_permissions: u32 = ServerPermission::View as u32 | data.permissions.server;
let channel_permissions: u32 = ChannelPermission::View as u32 | data.permissions.channel;
get_collection("servers")
.update_one(

View File

@@ -1 +1 @@
pub const VERSION: &str = "0.5.1-alpha.2";
pub const VERSION: &str = "0.5.1-alpha.3";