feat: get roles associted to api key

This commit is contained in:
2026-05-08 13:11:59 +02:00
parent eaf197f86e
commit b7e5e04fc0
5 changed files with 59 additions and 33 deletions
+3 -3
View File
@@ -8,6 +8,7 @@ use rand::RngCore;
use rand::rngs::OsRng;
use crate::dto::api::{CreateApiKeyRequest, CreateApiKeyResponse};
use crate::middlewares::auth::apikey::ApiKeyClaimsRoles;
use crate::middlewares::auth::middleware::Auth;
use crate::state::app_state::AppState;
use crate::utils::crypto::hash_key;
@@ -23,15 +24,14 @@ pub async fn create_api_key(
Extension(claims): Extension<Auth>,
Json(body): Json<CreateApiKeyRequest>,
) -> Result<Json<CreateApiKeyResponse>, StatusCode> {
if matches!(claims, Auth::ApiKey(_)) {
if matches!(&claims, Auth::ApiKey(api_key) if !api_key.roles.contains(&ApiKeyClaimsRoles::Admin))
{
return Err(StatusCode::FORBIDDEN);
}
let raw_key = generate_api_key();
let key_hash = hash_key(&raw_key);
dbg!(&claims);
sqlx::query!(
r#"
INSERT INTO auth.api_key (key_hash, name, created_by, scopes)