From a5ce35ac84635c0ea296995bf8d2df01549252bd Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Wed, 15 Oct 2025 09:33:35 +0200 Subject: [PATCH] fix(TextToImage): Set better attribute for routes Signed-off-by: Marcel Klehr --- core/Controller/TextToImageApiController.php | 10 +- core/openapi-full.json | 116 ++++++++++++++++++- core/openapi.json | 116 ++++++++++++++++++- openapi.json | 116 ++++++++++++++++++- 4 files changed, 340 insertions(+), 18 deletions(-) diff --git a/core/Controller/TextToImageApiController.php b/core/Controller/TextToImageApiController.php index d2c3e1ec288..819673df739 100644 --- a/core/Controller/TextToImageApiController.php +++ b/core/Controller/TextToImageApiController.php @@ -17,7 +17,6 @@ use OCP\AppFramework\Http\Attribute\AnonRateLimit; use OCP\AppFramework\Http\Attribute\ApiRoute; use OCP\AppFramework\Http\Attribute\BruteForceProtection; use OCP\AppFramework\Http\Attribute\NoAdminRequired; -use OCP\AppFramework\Http\Attribute\PublicPage; use OCP\AppFramework\Http\Attribute\UserRateLimit; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\FileDisplayResponse; @@ -54,7 +53,7 @@ class TextToImageApiController extends OCSController { * * 200: Returns availability status */ - #[PublicPage] + #[NoAdminRequired] #[ApiRoute(verb: 'GET', url: '/is_available', root: '/text2image')] public function isAvailable(): DataResponse { return new DataResponse([ @@ -75,9 +74,8 @@ class TextToImageApiController extends OCSController { * 200: Task scheduled successfully * 412: Scheduling task is not possible */ - #[PublicPage] + #[NoAdminRequired] #[UserRateLimit(limit: 20, period: 120)] - #[AnonRateLimit(limit: 5, period: 120)] #[ApiRoute(verb: 'POST', url: '/schedule', root: '/text2image')] public function schedule(string $input, string $appId, string $identifier = '', int $numberOfImages = 8): DataResponse { $task = new Task($input, $appId, $numberOfImages, $this->userId, $identifier); @@ -111,7 +109,7 @@ class TextToImageApiController extends OCSController { * 200: Task returned * 404: Task not found */ - #[PublicPage] + #[NoAdminRequired] #[BruteForceProtection(action: 'text2image')] #[ApiRoute(verb: 'GET', url: '/task/{id}', root: '/text2image')] public function getTask(int $id): DataResponse { @@ -143,7 +141,7 @@ class TextToImageApiController extends OCSController { * 200: Image returned * 404: Task or image not found */ - #[PublicPage] + #[NoAdminRequired] #[BruteForceProtection(action: 'text2image')] #[ApiRoute(verb: 'GET', url: '/task/{id}/image/{index}', root: '/text2image')] public function getImage(int $id, int $index): DataResponse|FileDisplayResponse { diff --git a/core/openapi-full.json b/core/openapi-full.json index 805944296b7..2143f3c6478 100644 --- a/core/openapi-full.json +++ b/core/openapi-full.json @@ -7199,7 +7199,6 @@ "text_to_image_api" ], "security": [ - {}, { "bearer_auth": [] }, @@ -7257,6 +7256,34 @@ } } } + }, + "401": { + "description": "Current user is not logged in", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } } } } @@ -7269,7 +7296,6 @@ "text_to_image_api" ], "security": [ - {}, { "bearer_auth": [] }, @@ -7438,6 +7464,34 @@ } } } + }, + "401": { + "description": "Current user is not logged in", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } } } } @@ -7450,7 +7504,6 @@ "text_to_image_api" ], "security": [ - {}, { "bearer_auth": [] }, @@ -7594,6 +7647,34 @@ } } } + }, + "401": { + "description": "Current user is not logged in", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } } } }, @@ -7787,7 +7868,6 @@ "text_to_image_api" ], "security": [ - {}, { "bearer_auth": [] }, @@ -7914,6 +7994,34 @@ } } } + }, + "401": { + "description": "Current user is not logged in", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } } } } diff --git a/core/openapi.json b/core/openapi.json index f1f04cb02d9..f37322d9dcb 100644 --- a/core/openapi.json +++ b/core/openapi.json @@ -7199,7 +7199,6 @@ "text_to_image_api" ], "security": [ - {}, { "bearer_auth": [] }, @@ -7257,6 +7256,34 @@ } } } + }, + "401": { + "description": "Current user is not logged in", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } } } } @@ -7269,7 +7296,6 @@ "text_to_image_api" ], "security": [ - {}, { "bearer_auth": [] }, @@ -7438,6 +7464,34 @@ } } } + }, + "401": { + "description": "Current user is not logged in", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } } } } @@ -7450,7 +7504,6 @@ "text_to_image_api" ], "security": [ - {}, { "bearer_auth": [] }, @@ -7594,6 +7647,34 @@ } } } + }, + "401": { + "description": "Current user is not logged in", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } } } }, @@ -7787,7 +7868,6 @@ "text_to_image_api" ], "security": [ - {}, { "bearer_auth": [] }, @@ -7914,6 +7994,34 @@ } } } + }, + "401": { + "description": "Current user is not logged in", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } } } } diff --git a/openapi.json b/openapi.json index e86802a938d..09d9eddbba5 100644 --- a/openapi.json +++ b/openapi.json @@ -10712,7 +10712,6 @@ "core/text_to_image_api" ], "security": [ - {}, { "bearer_auth": [] }, @@ -10770,6 +10769,34 @@ } } } + }, + "401": { + "description": "Current user is not logged in", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } } } } @@ -10782,7 +10809,6 @@ "core/text_to_image_api" ], "security": [ - {}, { "bearer_auth": [] }, @@ -10951,6 +10977,34 @@ } } } + }, + "401": { + "description": "Current user is not logged in", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } } } } @@ -10963,7 +11017,6 @@ "core/text_to_image_api" ], "security": [ - {}, { "bearer_auth": [] }, @@ -11107,6 +11160,34 @@ } } } + }, + "401": { + "description": "Current user is not logged in", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } } } }, @@ -11300,7 +11381,6 @@ "core/text_to_image_api" ], "security": [ - {}, { "bearer_auth": [] }, @@ -11427,6 +11507,34 @@ } } } + }, + "401": { + "description": "Current user is not logged in", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } } } }