From 1597ee3e05e478a3e66939635ad9f14732cdce21 Mon Sep 17 00:00:00 2001 From: jakubmanczak Date: Fri, 6 Mar 2026 23:29:58 +0100 Subject: [PATCH] check tag create permission... i forgor --- src/api/tags.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/api/tags.rs b/src/api/tags.rs index a8e1584..2144bc0 100644 --- a/src/api/tags.rs +++ b/src/api/tags.rs @@ -1,7 +1,7 @@ use axum::{ Json, extract::Path, - http::HeaderMap, + http::{HeaderMap, StatusCode}, response::{IntoResponse, Response}, }; use serde::Deserialize; @@ -13,9 +13,12 @@ use crate::{ users::{ User, auth::{UserAuthRequired, UserAuthenticate}, + permissions::Permission, }, }; +const CANT_MAKE_TAGS: &str = "You don't have permission to create new tags."; + pub async fn get_all(headers: HeaderMap) -> Result { User::authenticate(&headers)?.required()?; Ok(Json(Tag::get_all()?).into_response()) @@ -45,6 +48,9 @@ pub async fn create( headers: HeaderMap, Json(form): Json, ) -> Result { - User::authenticate(&headers)?.required()?; + let u = User::authenticate(&headers)?.required()?; + if !u.has_permission(Permission::CreateTags)? { + return Ok((StatusCode::FORBIDDEN, CANT_MAKE_TAGS).into_response()); + } Ok(Json(Tag::create(form.name)?).into_response()) }