check tag create permission...
i forgor
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
use axum::{
|
use axum::{
|
||||||
Json,
|
Json,
|
||||||
extract::Path,
|
extract::Path,
|
||||||
http::HeaderMap,
|
http::{HeaderMap, StatusCode},
|
||||||
response::{IntoResponse, Response},
|
response::{IntoResponse, Response},
|
||||||
};
|
};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
@@ -13,9 +13,12 @@ use crate::{
|
|||||||
users::{
|
users::{
|
||||||
User,
|
User,
|
||||||
auth::{UserAuthRequired, UserAuthenticate},
|
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<Response, CompositeError> {
|
pub async fn get_all(headers: HeaderMap) -> Result<Response, CompositeError> {
|
||||||
User::authenticate(&headers)?.required()?;
|
User::authenticate(&headers)?.required()?;
|
||||||
Ok(Json(Tag::get_all()?).into_response())
|
Ok(Json(Tag::get_all()?).into_response())
|
||||||
@@ -45,6 +48,9 @@ pub async fn create(
|
|||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
Json(form): Json<NewTag>,
|
Json(form): Json<NewTag>,
|
||||||
) -> Result<Response, CompositeError> {
|
) -> Result<Response, CompositeError> {
|
||||||
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())
|
Ok(Json(Tag::create(form.name)?).into_response())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user