refactor(authz): permet require_permission() as has_permission(), more explicit

This commit is contained in:
Edouard Vanbelle
2026-05-21 21:50:42 +02:00
parent cb35775f77
commit a1c21ce446
8 changed files with 14 additions and 14 deletions
+1 -1
View File
@@ -257,7 +257,7 @@ pub trait FileRetrievalUseCase: Send + Sync + 'static {
/// Primary port for file management operations
pub trait FileManagementUseCase: Send + Sync + 'static {
async fn has_permission(
async fn require_permission(
&self,
caller_id: Uuid,
permission: Permission,
+1 -1
View File
@@ -9,7 +9,7 @@ use crate::common::errors::DomainError;
use crate::domain::services::authorization::Permission;
pub trait FolderUseCase: Send + Sync + 'static {
async fn has_permission(
async fn require_permission(
&self,
caller_id: Uuid,
permission: Permission,
@@ -225,7 +225,7 @@ impl FileManagementService {
}
impl FileManagementUseCase for FileManagementService {
async fn has_permission(
async fn require_permission(
&self,
caller_id: Uuid,
permission: Permission,
+2 -2
View File
@@ -41,7 +41,7 @@ impl FolderService {
struct FolderServiceStub;
impl FolderUseCase for FolderServiceStub {
async fn has_permission(
async fn require_permission(
&self,
_caller_id: Uuid,
_permission: Permission,
@@ -175,7 +175,7 @@ impl FolderUseCase for FolderService {
/// large request bodies (file upload, chunked upload). The authoritative
/// check happens again inside the upload/management services before any
/// DB write — this is a UX/resource optimization, not a security boundary.
async fn has_permission(
async fn require_permission(
&self,
caller_id: Uuid,
permission: Permission,
+2 -2
View File
@@ -356,7 +356,7 @@ impl I18nService for StubI18nService {
pub struct StubFolderUseCase;
impl FolderUseCase for StubFolderUseCase {
async fn has_permission(
async fn require_permission(
&self,
_caller_id: Uuid,
_permission: Permission,
@@ -637,7 +637,7 @@ impl FileRetrievalUseCase for StubFileRetrievalUseCase {
pub struct StubFileManagementUseCase;
impl FileManagementUseCase for StubFileManagementUseCase {
async fn has_permission(
async fn require_permission(
&self,
_caller_id: Uuid,
_permission: Permission,
@@ -129,7 +129,7 @@ impl ChunkedUploadHandler {
&& let Err(err) = state
.applications
.folder_service_concrete
.has_permission(auth_user.id, Permission::Create, fid)
.require_permission(auth_user.id, Permission::Create, fid)
.await
{
tracing::warn!(
+4 -4
View File
@@ -124,7 +124,7 @@ impl FileHandler {
&& let Err(err) = state
.applications
.folder_service_concrete
.has_permission(auth_user.id, Permission::Create, fid)
.require_permission(auth_user.id, Permission::Create, fid)
.await
{
tracing::warn!(
@@ -333,7 +333,7 @@ impl FileHandler {
if let Err(err) = state
.applications
.file_management_service
.has_permission(auth_user.id, Permission::Read, &id)
.require_permission(auth_user.id, Permission::Read, &id)
.await
{
return AppError::from(err).into_response();
@@ -493,7 +493,7 @@ impl FileHandler {
if let Err(err) = state
.applications
.file_management_service
.has_permission(auth_user.id, Permission::Update, &id)
.require_permission(auth_user.id, Permission::Update, &id)
.await
{
return AppError::from(err).into_response();
@@ -855,7 +855,7 @@ impl FileHandler {
if let Err(err) = state
.applications
.file_management_service
.has_permission(auth_user.id, Permission::Read, &file_id)
.require_permission(auth_user.id, Permission::Read, &file_id)
.await
{
return AppError::from(err).into_response();
+2 -2
View File
@@ -320,7 +320,7 @@ jsonpath "$" count == 0
# · GET /{id}/metadata · GET /{id}/thumbnail/{size}
# · PUT /{id}/thumbnail/{size} (push, Update)
# · PUT /{id}/rename · PUT /{id}/move · DELETE /{id}
# · POST /upload (via folder has_permission)
# · POST /upload (via folder require_permission)
#
# Listing endpoints that are still owner-scoped (GET /api/folders root,
# GET /api/folders/paginated) are NOT covered here — they don't
@@ -476,7 +476,7 @@ Authorization: Bearer {{adam_token}}
HTTP 404
# ── Chunked upload: cannot start session in alice's folder ──
# create_upload_impl pre-checks Permission::Create via has_permission.
# create_upload_impl pre-checks Permission::Create via require_permission.
POST {{base_url}}/api/uploads
Authorization: Bearer {{adam_token}}
Content-Type: application/json