[Mineur] Codes HTTP incohérents : 401 au lieu de 403, « Message too long » en 404, PUT en 201 #115
Labels
No labels
bug
enhancement
feature
groupe/chat-data
groupe/friends-blocking
groupe/input-validation
groupe/realtime-presence
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Transcendence/backend#115
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Gravité : Mineur
Rapports QA d'origine : ADMIN-03, EVENTS-06, FRIENDS-04, SECURITY_UX-05, SECURITY_UX-14, CHAT-05, CHAT-12
Middlewares/Roles.cs:19renvoie 401 avec un corps vide pour un user authentifié sans permission ;MessageProblems.TooLongest en 404 ;PUT /channelset/categoriesrenvoient 201.Détails des rapports
[ADMIN-03] RolesMiddleware renvoie 401 au lieu de 403 pour un utilisateur authentifié sans permission — Gravité : Mineur
[Roles(...)](events, users, roles, channels, invitations...) ; aussiDELETE /channels/{id}/messages/{msgId}(MESSAGE_NOT_SENDER)DELETE /api/users/nope(ou n'importe quel endpoint protégé)backend/API/Middlewares/Roles.cs:21-25(StatusCodes.Status401Unauthorized) ;backend/API/Problems/MessageProblems.cs:23-36.[EVENTS-06] Member sans permission HandleEvent reçoit 401 au lieu de 403 sur POST /events — Gravité : Mineur
POST /api/eventsen tant que Member (permission 0, connecté)Unauthorized) ; 403 attendu pour un user authentifié sans droit.backend/API/Middlewares/Roles.cs:19(StatusCodes.Status401Unauthorizedau lieu de 403, et sans corps ProblemDetails métier ; les endpoints déclarent même 403 dans l'OpenAPI, ex.DeleteUserRegistrationEndpoint.cs:26).[FRIENDS-04] `DELETE` d'un message d'autrui renvoie 401 au lieu de 403 — Gravité : Cosmétique
DELETE /api/channels/{id}/messages/{msgId}par un non-auteur -> 401MESSAGE_NOT_SENDER(un 401 peut déclencher une logique de refresh/déconnexion côté client ; 403 attendu).backend/API/Problems/MessageProblems.cs(NotSender/NotAuthorized).[SECURITY_UX-05] Refus d'autorisation renvoyés en 401 au lieu de 403 ; message trop long renvoyé en 404 — Gravité : Mineur
[Roles(...)](réponse 401 vide, sans corps problem+json) ;MessageProblems.AccessNotAuthorized/NotSender/NotAuthorized(401) ;MessageProblems.TooLong(404)backend/API/Middlewares/Roles.cs:23(StatusCodes.Status401Unauthorized),backend/API/Problems/MessageProblems.cs[SECURITY_UX-14] `MessageProblems.TooLong` renvoie 404 « Message too long » — Gravité : Mineur
POSTd'un message de 8193 caractères -> 404 (devrait être 400/413/422). Cf. SECURITY_UX-05.PUT /channels/{id}/messages/{msgId}n'a pas la limite de 8192 (voir suspicions).backend/API/Problems/MessageProblems.cs(TooLong ->Status404NotFound)[CHAT-05] Statuts HTTP incohérents sur les erreurs de messages — Gravité : Mineur
MESSAGE_TOO_LONG(message > 8192) renvoie 404 (Problems/MessageProblems.cs, TooLong) au lieu de 413/422 (vérifié sur POST de 8193 caractères).NotAuthorized()réutilise le codeMESSAGE_NOT_SENDER(même errorCode que NotSender).CHANNEL_ROLE_NOT_FOUND(copié-collé du channel).[CHAT-12] `PUT /channels/{id}` et `PUT /categories/{id}` renvoient 201 Created (doc : 204) — Gravité : Cosmétique
WithDescription/Produces(204)ne correspond pas (Update/UpdateChannelEndpoint.cs,Categories/Update/UpdateCategoryEndpoint.cs).Trouvé par une campagne de tests QA automatisés (agents Claude, Playwright) sur l'environnement de dev. Les captures citées sont locales et non jointes.