Files
stoatchat/src/routes/channels/permissions_set.rs
2022-02-23 13:30:01 +00:00

36 lines
795 B
Rust

use rocket::serde::json::Json;
use serde::{Deserialize, Serialize};
use revolt_quark::{
models::{Channel, User},
perms, Db, OverrideField, Permission, Ref, Result,
};
#[derive(Serialize, Deserialize)]
pub struct Data {
permissions: OverrideField,
}
#[put("/<target>/permissions/<role>", data = "<data>", rank = 2)]
pub async fn req(
db: &Db,
user: User,
target: Ref,
role: String,
data: Json<Data>,
) -> Result<Json<Channel>> {
let mut channel = target.as_channel(db).await?;
perms(&user)
.channel(&channel)
.throw_permission_and_view_channel(db, Permission::ManagePermissions)
.await?;
// ! FIXME_PERMISSIONS
channel
.set_role_permission(db, &role, data.permissions)
.await?;
Ok(Json(channel))
}