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 #!/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 echo "pub const VERSION: &str = \"${version}\";" > src/version.rs

View File

@@ -13,7 +13,7 @@ pub struct Data {
permissions: u32 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<()> { pub async fn req(user: User, target: Ref, role: String, data: Json<Data>) -> Result<()> {
let target = target.fetch_channel().await?; let target = target.fetch_channel().await?;

View File

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

View File

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

View File

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