mirror of
https://github.com/LibreSign/libresign.git
synced 2025-12-17 21:12:16 +01:00
chore: move routes definition to attributes
Signed-off-by: Vitor Mattos <vitor@php.rio>
This commit is contained in:
parent
828a83fd6a
commit
db949df769
29 changed files with 6818 additions and 7159 deletions
|
|
@ -10,25 +10,9 @@ $requirements = [
|
|||
'path' => '.+',
|
||||
];
|
||||
|
||||
$routes = [
|
||||
return [
|
||||
'routes' => [
|
||||
// API
|
||||
['name' => 'api#preflighted_cors', 'url' => '/api/{apiVersion}/{path}', 'verb' => 'OPTIONS', 'requirements' => $requirements],
|
||||
],
|
||||
];
|
||||
|
||||
return array_merge_recursive(
|
||||
$routes,
|
||||
include(__DIR__ . '/routes/routesAccountController.php'),
|
||||
include(__DIR__ . '/routes/routesAdminController.php'),
|
||||
include(__DIR__ . '/routes/routesDevelopController.php'),
|
||||
include(__DIR__ . '/routes/routesFileController.php'),
|
||||
include(__DIR__ . '/routes/routesFileElementsController.php'),
|
||||
include(__DIR__ . '/routes/routesIdentifyAccountController.php'),
|
||||
include(__DIR__ . '/routes/routesNotifyController.php'),
|
||||
include(__DIR__ . '/routes/routesPageController.php'),
|
||||
include(__DIR__ . '/routes/routesRequestSignatureController.php'),
|
||||
include(__DIR__ . '/routes/routesSettingsController.php'),
|
||||
include(__DIR__ . '/routes/routesSignatureElementsController.php'),
|
||||
include(__DIR__ . '/routes/routesSignFileController.php'),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,27 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
$requirements = [
|
||||
'apiVersion' => '(v1)',
|
||||
];
|
||||
|
||||
return [
|
||||
'ocs' => [
|
||||
['name' => 'account#createToSign', 'url' => '/api/{apiVersion}/account/create/{uuid}', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'account#me', 'url' => '/api/{apiVersion}/account/me', 'verb' => 'GET', 'requirements' => $requirements],
|
||||
['name' => 'account#uploadPfx', 'url' => '/api/{apiVersion}/account/pfx', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'account#readPfxData', 'url' => '/api/{apiVersion}/account/pfx/read', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'account#updatePfxPassword', 'url' => '/api/{apiVersion}/account/pfx', 'verb' => 'PATCH', 'requirements' => $requirements],
|
||||
['name' => 'account#deletePfx', 'url' => '/api/{apiVersion}/account/pfx', 'verb' => 'DELETE', 'requirements' => $requirements],
|
||||
['name' => 'account#updateSettings', 'url' => '/api/{apiVersion}/account/settings', 'verb' => 'PATCH', 'requirements' => $requirements],
|
||||
['name' => 'account#signatureGenerate', 'url' => '/api/{apiVersion}/account/signature', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'account#addFiles', 'url' => '/api/{apiVersion}/account/files', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'account#deleteFile', 'url' => '/api/{apiVersion}/account/files', 'verb' => 'DELETE', 'requirements' => $requirements],
|
||||
['name' => 'account#accountFileListToOwner', 'url' => '/api/{apiVersion}/account/files', 'verb' => 'GET', 'requirements' => $requirements],
|
||||
['name' => 'account#accountFileListToApproval', 'url' => '/api/{apiVersion}/account/files/approval/list', 'verb' => 'GET', 'requirements' => $requirements],
|
||||
],
|
||||
];
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
$requirements = [
|
||||
'apiVersion' => '(v1)',
|
||||
];
|
||||
|
||||
return [
|
||||
'ocs' => [
|
||||
['name' => 'admin#installAndValidate', 'url' => '/api/{apiVersion}/admin/install-and-validate', 'verb' => 'GET'],
|
||||
['name' => 'admin#generateCertificateCfssl', 'url' => '/api/{apiVersion}/admin/certificate/cfssl', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'admin#generateCertificateOpenSsl', 'url' => '/api/{apiVersion}/admin/certificate/openssl', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'admin#loadCertificate', 'url' => '/api/{apiVersion}/admin/certificate', 'verb' => 'GET', 'requirements' => $requirements],
|
||||
['name' => 'admin#configureCheck', 'url' => '/api/{apiVersion}/admin/configure-check', 'verb' => 'GET', 'requirements' => $requirements],
|
||||
],
|
||||
];
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
return [
|
||||
'routes' => [
|
||||
['name' => 'develop#pdf', 'url' => '/develop/pdf', 'verb' => 'GET'],
|
||||
],
|
||||
];
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
$requirements = [
|
||||
'apiVersion' => '(v1)',
|
||||
];
|
||||
|
||||
return [
|
||||
'ocs' => [
|
||||
['name' => 'File#save', 'url' => '/api/{apiVersion}/file', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'File#list', 'url' => '/api/{apiVersion}/file/list', 'verb' => 'GET', 'requirements' => $requirements],
|
||||
['name' => 'File#getThumbnail', 'url' => '/api/{apiVersion}/file/thumbnail/{nodeId}', 'verb' => 'GET', 'requirements' => $requirements],
|
||||
['name' => 'File#validate', 'url' => '/api/{apiVersion}/file/validate/', 'verb' => 'GET', 'requirements' => $requirements],
|
||||
['name' => 'File#validateUuid', 'url' => '/api/{apiVersion}/file/validate/uuid/{uuid}', 'verb' => 'GET', 'requirements' => $requirements],
|
||||
['name' => 'File#validateFileId', 'url' => '/api/{apiVersion}/file/validate/file_id/{fileId}', 'verb' => 'GET', 'requirements' => $requirements],
|
||||
],
|
||||
];
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
$requirements = [
|
||||
'apiVersion' => '(v1)',
|
||||
];
|
||||
|
||||
return [
|
||||
'ocs' => [
|
||||
['name' => 'FileElement#post', 'url' => '/api/{apiVersion}/file-element/{uuid}', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'FileElement#patch', 'url' => '/api/{apiVersion}/file-element/{uuid}/{elementId}', 'verb' => 'PATCH', 'requirements' => $requirements],
|
||||
['name' => 'FileElement#delete', 'url' => '/api/{apiVersion}/file-element/{uuid}/{elementId}', 'verb' => 'DELETE', 'requirements' => $requirements],
|
||||
],
|
||||
];
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
$requirements = [
|
||||
'apiVersion' => '(v1)',
|
||||
];
|
||||
|
||||
return [
|
||||
'ocs' => [
|
||||
['name' => 'IdentifyAccount#search', 'url' => '/api/{apiVersion}/identify-account/search', 'verb' => 'GET', 'requirements' => $requirements],
|
||||
],
|
||||
];
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
$requirements = [
|
||||
'apiVersion' => '(v1)',
|
||||
];
|
||||
|
||||
return [
|
||||
'ocs' => [
|
||||
['name' => 'notify#signer', 'url' => '/api/{apiVersion}/notify/signer', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'notify#signers', 'url' => '/api/{apiVersion}/notify/signers', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'notify#notificationDismiss', 'url' => '/api/{apiVersion}/notif/notification', 'verb' => 'DELETE', 'requirements' => $requirements],
|
||||
],
|
||||
];
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
$requirements = [
|
||||
'apiVersion' => '(v1)',
|
||||
];
|
||||
|
||||
return [
|
||||
'routes' => [
|
||||
// Pages - restricted
|
||||
['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
|
||||
['name' => 'page#indexF', 'url' => '/f/', 'verb' => 'GET'],
|
||||
['name' => 'page#incomplete', 'url' => '/f/incomplete', 'verb' => 'GET'],
|
||||
['name' => 'page#signFPath', 'url' => '/f/sign/{uuid}/{path}', 'verb' => 'GET', 'requirements' => ['path' => '.+'], 'postfix' => 'extra'],
|
||||
['name' => 'page#signF', 'url' => '/f/sign/{uuid}', 'verb' => 'GET'],
|
||||
['name' => 'page#indexFPath', 'url' => '/f/{path}', 'verb' => 'GET', 'requirements' => ['path' => '.+'], 'postfix' => 'front'],
|
||||
['name' => 'page#getPdfFile', 'url' => '/pdf/{uuid}', 'verb' => 'GET'],
|
||||
['name' => 'page#resetPassword', 'url' => '/reset-password', 'verb' => 'GET'],
|
||||
// Pages - public
|
||||
['name' => 'page#incompleteP', 'url' => '/p/incomplete', 'verb' => 'GET'],
|
||||
['name' => 'page#sign', 'url' => '/p/sign/{uuid}', 'verb' => 'GET'],
|
||||
['name' => 'page#sign', 'url' => '/p/sign/{uuid}/{path}', 'verb' => 'GET', 'requirements' => ['path' => '.+'], 'postfix' => 'extra'],
|
||||
['name' => 'page#signAccountFile', 'url' => '/p/account/files/approve/{uuid}', 'verb' => 'GET'],
|
||||
['name' => 'page#signAccountFile', 'url' => '/p/account/files/approve/{uuid}/{path}', 'verb' => 'GET', 'requirements' => ['path' => '.+'], 'postfix' => 'extra'],
|
||||
['name' => 'page#validation', 'url' => '/p/validation', 'verb' => 'GET'],
|
||||
['name' => 'page#validationFileWithShortUrl', 'url' => '/validation/{uuid}', 'verb' => 'GET'],
|
||||
['name' => 'page#validationFile', 'url' => '/p/validation/{uuid}', 'verb' => 'GET'],
|
||||
['name' => 'page#getPdf', 'url' => '/p/pdf/{uuid}', 'verb' => 'GET']
|
||||
],
|
||||
];
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
$requirements = [
|
||||
'apiVersion' => '(v1)',
|
||||
];
|
||||
|
||||
return [
|
||||
'ocs' => [
|
||||
['name' => 'RequestSignature#request', 'url' => '/api/{apiVersion}/request-signature', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'RequestSignature#updateSign', 'url' => '/api/{apiVersion}/request-signature', 'verb' => 'PATCH', 'requirements' => $requirements],
|
||||
['name' => 'RequestSignature#deleteAllRequestSignatureUsingFileId', 'url' => '/api/{apiVersion}/sign/file_id/{fileId}', 'verb' => 'DELETE', 'requirements' => $requirements],
|
||||
['name' => 'RequestSignature#deleteOneRequestSignatureUsingFileId', 'url' => '/api/{apiVersion}/sign/file_id/{fileId}/{signRequestId}', 'verb' => 'DELETE', 'requirements' => $requirements],
|
||||
],
|
||||
];
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
$requirements = [
|
||||
'apiVersion' => '(v1)',
|
||||
];
|
||||
|
||||
return [
|
||||
'ocs' => [
|
||||
['name' => 'setting#hasRootCert', 'url' => '/api/{apiVersion}/setting/has-root-cert', 'verb' => 'GET', 'requirements' => $requirements],
|
||||
],
|
||||
];
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
$requirements = [
|
||||
'apiVersion' => '(v1)',
|
||||
];
|
||||
|
||||
return [
|
||||
'ocs' => [
|
||||
['name' => 'signFile#signUsingUuid', 'url' => '/api/{apiVersion}/sign/uuid/{uuid}', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'signFile#signUsingFileId', 'url' => '/api/{apiVersion}/sign/file_id/{fileId}', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'signFile#signRenew', 'url' => '/api/{apiVersion}/sign/uuid/{uuid}/renew/{method}', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'signFile#getCodeUsingUuid', 'url' => '/api/{apiVersion}/sign/uuid/{uuid}/code', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'signFile#getCodeUsingFileId', 'url' => '/api/{apiVersion}/sign/file_id/{fileId}/code', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
],
|
||||
];
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
$requirements = [
|
||||
'apiVersion' => '(v1)',
|
||||
];
|
||||
|
||||
return [
|
||||
'ocs' => [
|
||||
['name' => 'SignatureElements#createSignatureElement', 'url' => '/api/{apiVersion}/signature/elements', 'verb' => 'POST', 'requirements' => $requirements],
|
||||
['name' => 'SignatureElements#getSignatureElements', 'url' => '/api/{apiVersion}/signature/elements', 'verb' => 'GET', 'requirements' => $requirements],
|
||||
['name' => 'SignatureElements#getSignatureElementPreview','url' => '/api/{apiVersion}/signature/elements/preview/{nodeId}', 'verb' => 'GET', 'requirements' => $requirements],
|
||||
['name' => 'SignatureElements#getSignatureElement', 'url' => '/api/{apiVersion}/signature/elements/{nodeId}', 'verb' => 'GET', 'requirements' => $requirements],
|
||||
['name' => 'SignatureElements#patchSignatureElement', 'url' => '/api/{apiVersion}/signature/elements/{nodeId}', 'verb' => 'PATCH', 'requirements' => $requirements],
|
||||
['name' => 'SignatureElements#deleteSignatureElement', 'url' => '/api/{apiVersion}/signature/elements/{nodeId}', 'verb' => 'DELETE', 'requirements' => $requirements],
|
||||
],
|
||||
];
|
||||
|
|
@ -25,6 +25,7 @@ use OCA\Libresign\Service\SignerElementsService;
|
|||
use OCA\Libresign\Service\SignFileService;
|
||||
use OCP\Accounts\IAccountManager;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\Attribute\ApiRoute;
|
||||
use OCP\AppFramework\Http\Attribute\CORS;
|
||||
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
|
||||
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
|
||||
|
|
@ -84,6 +85,7 @@ class AccountController extends AEnvironmentAwareController implements ISignatur
|
|||
#[NoCSRFRequired]
|
||||
#[PublicPage]
|
||||
#[UseSession]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/account/create/{uuid}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function createToSign(string $uuid, string $email, string $password, ?string $signPassword): DataResponse {
|
||||
try {
|
||||
$data = [
|
||||
|
|
@ -145,6 +147,7 @@ class AccountController extends AEnvironmentAwareController implements ISignatur
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/account/signature', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function signatureGenerate(
|
||||
string $signPassword
|
||||
): DataResponse {
|
||||
|
|
@ -194,6 +197,7 @@ class AccountController extends AEnvironmentAwareController implements ISignatur
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/account/files', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function addFiles(array $files): DataResponse {
|
||||
try {
|
||||
$this->accountService->addFilesToAccount($files, $this->userSession->getUser());
|
||||
|
|
@ -232,6 +236,7 @@ class AccountController extends AEnvironmentAwareController implements ISignatur
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'DELETE', url: '/api/{apiVersion}/account/files', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function deleteFile(int $nodeId): DataResponse {
|
||||
try {
|
||||
$this->accountService->deleteFileFromAccount($nodeId, $this->userSession->getUser());
|
||||
|
|
@ -262,6 +267,7 @@ class AccountController extends AEnvironmentAwareController implements ISignatur
|
|||
#[CORS]
|
||||
#[NoCSRFRequired]
|
||||
#[PublicPage]
|
||||
#[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/account/me', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function me(): DataResponse {
|
||||
$user = $this->userSession->getUser();
|
||||
if (!$user) {
|
||||
|
|
@ -299,6 +305,7 @@ class AccountController extends AEnvironmentAwareController implements ISignatur
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/account/files', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function accountFileListToOwner(array $filter = [], ?int $page = null, ?int $length = null): DataResponse {
|
||||
try {
|
||||
$filter['userId'] = $this->userSession->getUser()->getUID();
|
||||
|
|
@ -327,6 +334,7 @@ class AccountController extends AEnvironmentAwareController implements ISignatur
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/account/files/approval/list', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function accountFileListToApproval(array $filter = [], ?int $page = null, ?int $length = null): DataResponse {
|
||||
try {
|
||||
$this->validateHelper->userCanApproveValidationDocuments($this->userSession->getUser());
|
||||
|
|
@ -354,6 +362,7 @@ class AccountController extends AEnvironmentAwareController implements ISignatur
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'PATCH', url: '/api/{apiVersion}/account/settings', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function updateSettings(?string $phone = null): DataResponse {
|
||||
try {
|
||||
$user = $this->userSession->getUser();
|
||||
|
|
@ -398,6 +407,7 @@ class AccountController extends AEnvironmentAwareController implements ISignatur
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'delete', url: '/api/{apiVersion}/account/pfx', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function deletePfx(): DataResponse {
|
||||
$this->accountService->deletePfx($this->userSession->getUser());
|
||||
return new DataResponse(
|
||||
|
|
@ -419,6 +429,7 @@ class AccountController extends AEnvironmentAwareController implements ISignatur
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/account/pfx', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function uploadPfx(): DataResponse {
|
||||
$file = $this->request->getUploadedFile('file');
|
||||
try {
|
||||
|
|
@ -458,6 +469,7 @@ class AccountController extends AEnvironmentAwareController implements ISignatur
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'PATCH', url: '/api/{apiVersion}/account/pfx', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function updatePfxPassword($current, $new): DataResponse {
|
||||
try {
|
||||
$this->accountService->updatePfxPassword($this->userSession->getUser(), $current, $new);
|
||||
|
|
@ -490,6 +502,7 @@ class AccountController extends AEnvironmentAwareController implements ISignatur
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/account/pfx/read', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function readPfxData(string $password): DataResponse {
|
||||
try {
|
||||
$data = $this->accountService->readPfxData($this->userSession->getUser(), $password);
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ use OCA\Libresign\ResponseDefinitions;
|
|||
use OCA\Libresign\Service\Install\ConfigureCheckService;
|
||||
use OCA\Libresign\Service\Install\InstallService;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\Attribute\ApiRoute;
|
||||
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
|
||||
use OCP\AppFramework\Http\DataResponse;
|
||||
use OCP\AppFramework\Services\IAppConfig;
|
||||
|
|
@ -58,6 +59,7 @@ class AdminController extends AEnvironmentAwareController {
|
|||
* 401: Account not found
|
||||
*/
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/admin/certificate/cfssl', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function generateCertificateCfssl(
|
||||
array $rootCert,
|
||||
string $cfsslUri = '',
|
||||
|
|
@ -93,6 +95,7 @@ class AdminController extends AEnvironmentAwareController {
|
|||
* 401: Account not found
|
||||
*/
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/admin/certificate/openssl', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function generateCertificateOpenSsl(
|
||||
array $rootCert,
|
||||
string $configPath = ''
|
||||
|
|
@ -142,6 +145,7 @@ class AdminController extends AEnvironmentAwareController {
|
|||
* 200: OK
|
||||
*/
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/admin/certificate', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function loadCertificate(): DataResponse {
|
||||
$engine = $this->certificateEngineHandler->getEngine();
|
||||
/** @var LibresignEngineHandler */
|
||||
|
|
@ -175,6 +179,7 @@ class AdminController extends AEnvironmentAwareController {
|
|||
* 200: OK
|
||||
*/
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/admin/configure-check', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function configureCheck(): DataResponse {
|
||||
/** @var LibresignConfigureCheck[] */
|
||||
$configureCheckList = $this->configureCheckService->checkAll();
|
||||
|
|
@ -187,6 +192,7 @@ class AdminController extends AEnvironmentAwareController {
|
|||
* @IgnoreOpenAPI
|
||||
*/
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/admin/install-and-validate', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function installAndValidate(): void {
|
||||
try {
|
||||
$async = \function_exists('proc_open');
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ namespace OCA\Libresign\Controller;
|
|||
use OCA\Libresign\AppInfo\Application;
|
||||
use OCP\AppFramework\Controller;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\Attribute\FrontpageRoute;
|
||||
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
|
||||
use OCP\AppFramework\Http\Attribute\PublicPage;
|
||||
use OCP\AppFramework\Http\DataResponse;
|
||||
|
|
@ -42,6 +43,7 @@ class DevelopController extends Controller {
|
|||
*/
|
||||
#[NoCSRFRequired]
|
||||
#[PublicPage]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/develop/pdf')]
|
||||
public function pdf(): FileDisplayResponse|Response {
|
||||
if (!$this->isDebugMode()) {
|
||||
return new DataResponse([], Http::STATUS_NOT_FOUND);
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ use OCA\Libresign\Service\IdentifyMethodService;
|
|||
use OCA\Libresign\Service\SessionService;
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\Attribute\ApiRoute;
|
||||
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
|
||||
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
|
||||
use OCP\AppFramework\Http\Attribute\PublicPage;
|
||||
|
|
@ -83,6 +84,7 @@ class FileController extends AEnvironmentAwareController {
|
|||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[PublicPage]
|
||||
#[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/file/validate/uuid/{uuid}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function validateUuid(string $uuid): DataResponse {
|
||||
return $this->validate('Uuid', $uuid);
|
||||
}
|
||||
|
|
@ -102,6 +104,7 @@ class FileController extends AEnvironmentAwareController {
|
|||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[PublicPage]
|
||||
#[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/file/validate/file_id/{fileId}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function validateFileId(int $fileId): DataResponse {
|
||||
return $this->validate('FileId', $fileId);
|
||||
}
|
||||
|
|
@ -122,6 +125,7 @@ class FileController extends AEnvironmentAwareController {
|
|||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[PublicPage]
|
||||
#[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/file/validate/', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function validate(?string $type = null, $identifier = null): DataResponse {
|
||||
try {
|
||||
if ($type === 'Uuid' && !empty($identifier)) {
|
||||
|
|
@ -195,6 +199,7 @@ class FileController extends AEnvironmentAwareController {
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/file/list', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function list($page = null, $length = null, ?array $filter = []): DataResponse {
|
||||
$return = $this->fileService
|
||||
->setMe($this->userSession->getUser())
|
||||
|
|
@ -222,6 +227,7 @@ class FileController extends AEnvironmentAwareController {
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/file/thumbnail/{nodeId}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function getThumbnail(
|
||||
int $nodeId = -1,
|
||||
int $x = 32,
|
||||
|
|
@ -313,6 +319,7 @@ class FileController extends AEnvironmentAwareController {
|
|||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[RequireManager]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/file', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function save(array $file, string $name = '', array $settings = []): DataResponse {
|
||||
try {
|
||||
if (empty($name)) {
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ use OCA\Libresign\Helper\ValidateHelper;
|
|||
use OCA\Libresign\ResponseDefinitions;
|
||||
use OCA\Libresign\Service\FileElementService;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\Attribute\ApiRoute;
|
||||
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
|
||||
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
|
||||
use OCP\AppFramework\Http\DataResponse;
|
||||
|
|
@ -52,6 +53,7 @@ class FileElementController extends AEnvironmentAwareController {
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/file-element/{uuid}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function post(string $uuid, int $signRequestId, int $elementId = null, string $type = '', array $metadata = [], array $coordinates = []): DataResponse {
|
||||
$visibleElement = [
|
||||
'elementId' => $elementId,
|
||||
|
|
@ -101,6 +103,7 @@ class FileElementController extends AEnvironmentAwareController {
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'PATCH', url: '/api/{apiVersion}/file-element/{uuid}/{elementId}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function patch(string $uuid, int $signRequestId, int $elementId = null, string $type = '', array $metadata = [], array $coordinates = []): DataResponse {
|
||||
return $this->post($uuid, $signRequestId, $elementId, $type, $metadata, $coordinates);
|
||||
}
|
||||
|
|
@ -119,6 +122,7 @@ class FileElementController extends AEnvironmentAwareController {
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'DELETE', url: '/api/{apiVersion}/file-element/{uuid}/{elementId}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function delete(string $uuid, int $elementId): DataResponse {
|
||||
try {
|
||||
$this->validateHelper->validateExistingFile([
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ use OCA\Libresign\ResponseDefinitions;
|
|||
use OCA\Libresign\Service\IdentifyMethod\Account;
|
||||
use OCA\Libresign\Service\IdentifyMethod\Email;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\Attribute\ApiRoute;
|
||||
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
|
||||
use OCP\AppFramework\Http\DataResponse;
|
||||
use OCP\Collaboration\Collaborators\ISearch;
|
||||
|
|
@ -53,6 +54,7 @@ class IdentifyAccountController extends AEnvironmentAwareController {
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[RequireManager]
|
||||
#[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/identify-account/search', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function search(string $search = '', int $page = 1, int $limit = 25): DataResponse {
|
||||
$shareTypes = $this->getShareTypes();
|
||||
$lookup = false;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ use OCA\Libresign\AppInfo\Application;
|
|||
use OCA\Libresign\Exception\LibresignException;
|
||||
use OCA\Libresign\Service\NotifyService;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\Attribute\ApiRoute;
|
||||
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
|
||||
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
|
||||
use OCP\AppFramework\Http\DataResponse;
|
||||
|
|
@ -41,6 +42,7 @@ class NotifyController extends AEnvironmentAwareController {
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/notify/signers', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function signers(int $fileId, array $signers): DataResponse {
|
||||
try {
|
||||
$this->notifyService->signers($fileId, $signers);
|
||||
|
|
@ -74,6 +76,7 @@ class NotifyController extends AEnvironmentAwareController {
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/notify/signer', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function signer(int $fileId, int $signRequestId): DataResponse {
|
||||
try {
|
||||
$this->notifyService->signer($fileId, $signRequestId);
|
||||
|
|
@ -107,6 +110,7 @@ class NotifyController extends AEnvironmentAwareController {
|
|||
* 200: OK
|
||||
*/
|
||||
#[NoAdminRequired]
|
||||
#[ApiRoute(verb: 'DELETE', url: '/api/{apiVersion}/notify/notification', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function notificationDismiss(int $signRequestId, int $timestamp): DataResponse {
|
||||
$this->notifyService->notificationDismiss(
|
||||
$signRequestId,
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ use OCA\Libresign\Service\SignFileService;
|
|||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\Attribute\AnonRateLimit;
|
||||
use OCP\AppFramework\Http\Attribute\FrontpageRoute;
|
||||
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
|
||||
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
|
||||
use OCP\AppFramework\Http\Attribute\PublicPage;
|
||||
|
|
@ -77,6 +78,7 @@ class PageController extends AEnvironmentPageAwareController {
|
|||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[RequireSetupOk(template: 'main')]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/')]
|
||||
public function index(): TemplateResponse {
|
||||
$this->initialState->provideInitialState('config', $this->accountService->getConfig($this->userSession->getUser()));
|
||||
$this->initialState->provideInitialState('certificate_engine', $this->accountService->getCertificateEngineName());
|
||||
|
|
@ -118,6 +120,7 @@ class PageController extends AEnvironmentPageAwareController {
|
|||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[RequireSetupOk(template: 'main')]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/f/')]
|
||||
public function indexF(): TemplateResponse {
|
||||
return $this->index();
|
||||
}
|
||||
|
|
@ -131,6 +134,7 @@ class PageController extends AEnvironmentPageAwareController {
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/f/incomplete')]
|
||||
public function incomplete(): TemplateResponse {
|
||||
Util::addScript(Application::APP_ID, 'libresign-main');
|
||||
$response = new TemplateResponse(Application::APP_ID, 'main');
|
||||
|
|
@ -146,6 +150,7 @@ class PageController extends AEnvironmentPageAwareController {
|
|||
*/
|
||||
#[PublicPage]
|
||||
#[NoCSRFRequired]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/p/incomplete')]
|
||||
public function incompleteP(): TemplateResponse {
|
||||
Util::addScript(Application::APP_ID, 'libresign-main');
|
||||
$response = new TemplateResponse(Application::APP_ID, 'main', [], TemplateResponse::RENDER_AS_BASE);
|
||||
|
|
@ -165,6 +170,7 @@ class PageController extends AEnvironmentPageAwareController {
|
|||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[RequireSetupOk(template: 'main')]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/f/{path}', requirements: ['path' => '.+'])]
|
||||
public function indexFPath(): TemplateResponse {
|
||||
return $this->index();
|
||||
}
|
||||
|
|
@ -183,6 +189,7 @@ class PageController extends AEnvironmentPageAwareController {
|
|||
#[RequireSetupOk]
|
||||
#[PublicPage]
|
||||
#[RequireSignRequestUuid]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/f/sign/{uuid}')]
|
||||
public function signF(string $uuid): TemplateResponse {
|
||||
$this->initialState->provideInitialState('action', JSActions::ACTION_SIGN_INTERNAL);
|
||||
return $this->index();
|
||||
|
|
@ -203,6 +210,7 @@ class PageController extends AEnvironmentPageAwareController {
|
|||
#[RequireSetupOk]
|
||||
#[PublicPage]
|
||||
#[RequireSignRequestUuid]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/f/sign/{uuid}/{path}', requirements: ['path' => '.+'])]
|
||||
public function signFPath(string $uuid): TemplateResponse {
|
||||
$this->initialState->provideInitialState('action', JSActions::ACTION_SIGN_INTERNAL);
|
||||
return $this->index();
|
||||
|
|
@ -223,6 +231,7 @@ class PageController extends AEnvironmentPageAwareController {
|
|||
#[RequireSetupOk]
|
||||
#[PublicPage]
|
||||
#[RequireSignRequestUuid]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/p/sign/{uuid}')]
|
||||
public function sign(string $uuid): TemplateResponse {
|
||||
$this->initialState->provideInitialState('action', JSActions::ACTION_SIGN);
|
||||
$this->initialState->provideInitialState('config',
|
||||
|
|
@ -281,6 +290,8 @@ class PageController extends AEnvironmentPageAwareController {
|
|||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[RequireSetupOk]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/p/account/files/approve/{uuid}')]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/p/account/files/approve/{uuid}/{path}', requirements: ['path' => '.+'], postfix: 'private')]
|
||||
public function signAccountFile($uuid): TemplateResponse {
|
||||
try {
|
||||
$fileEntity = $this->signFileService->getFileByUuid($uuid);
|
||||
|
|
@ -351,6 +362,7 @@ class PageController extends AEnvironmentPageAwareController {
|
|||
#[RequireSetupOk]
|
||||
#[PublicPage]
|
||||
#[AnonRateLimit(limit: 30, period: 60)]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/p/pdf/{uuid}')]
|
||||
public function getPdf($uuid) {
|
||||
$this->throwIfValidationPageNotAccessible();
|
||||
try {
|
||||
|
|
@ -377,6 +389,7 @@ class PageController extends AEnvironmentPageAwareController {
|
|||
#[PublicPage]
|
||||
#[RequireSetupOk]
|
||||
#[AnonRateLimit(limit: 30, period: 60)]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/pdf/{uuid}')]
|
||||
public function getPdfFile($uuid): FileDisplayResponse {
|
||||
$this->throwIfValidationPageNotAccessible();
|
||||
$file = $this->getNextcloudFile();
|
||||
|
|
@ -396,6 +409,7 @@ class PageController extends AEnvironmentPageAwareController {
|
|||
#[RequireSetupOk(template: 'validation')]
|
||||
#[PublicPage]
|
||||
#[AnonRateLimit(limit: 30, period: 60)]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/p/validation')]
|
||||
public function validation(): TemplateResponse {
|
||||
$this->throwIfValidationPageNotAccessible();
|
||||
if ($this->getFileEntity()) {
|
||||
|
|
@ -440,6 +454,7 @@ class PageController extends AEnvironmentPageAwareController {
|
|||
#[RequireSetupOk]
|
||||
#[PublicPage]
|
||||
#[AnonRateLimit(limit: 30, period: 60)]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/validation/{uuid}')]
|
||||
public function validationFileWithShortUrl(): RedirectResponse {
|
||||
$this->throwIfValidationPageNotAccessible();
|
||||
return new RedirectResponse($this->url->linkToRoute('libresign.page.validationFile', ['uuid' => $this->request->getParam('uuid')]));
|
||||
|
|
@ -458,6 +473,7 @@ class PageController extends AEnvironmentPageAwareController {
|
|||
#[RequireSetupOk(template: 'main')]
|
||||
#[PublicPage]
|
||||
#[RequireSignRequestUuid]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/reset-password')]
|
||||
public function resetPassword(): TemplateResponse {
|
||||
$this->initialState->provideInitialState('config',
|
||||
$this->accountService->getConfig($this->userSession->getUser())
|
||||
|
|
@ -483,6 +499,7 @@ class PageController extends AEnvironmentPageAwareController {
|
|||
#[RequireSetupOk(template: 'validation')]
|
||||
#[PublicPage]
|
||||
#[AnonRateLimit(limit: 30, period: 60)]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/p/validation/{uuid}')]
|
||||
public function validationFile(string $uuid): TemplateResponse {
|
||||
$this->throwIfValidationPageNotAccessible();
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ use OCA\Libresign\ResponseDefinitions;
|
|||
use OCA\Libresign\Service\FileService;
|
||||
use OCA\Libresign\Service\RequestSignatureService;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\Attribute\ApiRoute;
|
||||
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
|
||||
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
|
||||
use OCP\AppFramework\Http\DataResponse;
|
||||
|
|
@ -60,6 +61,7 @@ class RequestSignatureController extends AEnvironmentAwareController {
|
|||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[RequireManager]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/request-signature', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function request(array $file, array $users, string $name, ?string $callback = null, ?int $status = 1): DataResponse {
|
||||
$user = $this->userSession->getUser();
|
||||
$data = [
|
||||
|
|
@ -116,6 +118,7 @@ class RequestSignatureController extends AEnvironmentAwareController {
|
|||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[RequireManager]
|
||||
#[ApiRoute(verb: 'PATCH', url: '/api/{apiVersion}/request-signature', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function updateSign(?array $users = [], ?string $uuid = null, ?array $visibleElements = null, ?array $file = [], ?int $status = null): DataResponse {
|
||||
$user = $this->userSession->getUser();
|
||||
$data = [
|
||||
|
|
@ -174,6 +177,7 @@ class RequestSignatureController extends AEnvironmentAwareController {
|
|||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[RequireManager]
|
||||
#[ApiRoute(verb: 'DELETE', url: '/api/{apiVersion}/sign/file_id/{fileId}/{signRequestId}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function deleteOneRequestSignatureUsingFileId(int $fileId, int $signRequestId): DataResponse {
|
||||
try {
|
||||
$data = [
|
||||
|
|
@ -216,6 +220,7 @@ class RequestSignatureController extends AEnvironmentAwareController {
|
|||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[RequireManager]
|
||||
#[ApiRoute(verb: 'DELETE', url: '/api/{apiVersion}/sign/file_id/{fileId}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function deleteAllRequestSignatureUsingFileId(int $fileId): DataResponse {
|
||||
try {
|
||||
$data = [
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ namespace OCA\Libresign\Controller;
|
|||
use OCA\Libresign\AppInfo\Application;
|
||||
use OCA\Libresign\Handler\CertificateEngine\Handler as CertificateEngineHandler;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\Attribute\ApiRoute;
|
||||
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
|
||||
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
|
||||
use OCP\AppFramework\Http\Attribute\OpenAPI;
|
||||
|
|
@ -37,6 +38,7 @@ class SettingController extends AEnvironmentAwareController {
|
|||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[OpenAPI(scope: OpenAPI::SCOPE_ADMINISTRATION)]
|
||||
#[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/setting/has-root-cert', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function hasRootCert(): DataResponse {
|
||||
$checkData = [
|
||||
'hasRootCert' => $this->certificateEngineHandler->getEngine()->isSetupOk()
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ use OCA\Libresign\Service\FileService;
|
|||
use OCA\Libresign\Service\IdentifyMethodService;
|
||||
use OCA\Libresign\Service\SignFileService;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\Attribute\ApiRoute;
|
||||
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
|
||||
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
|
||||
use OCP\AppFramework\Http\Attribute\PublicPage;
|
||||
|
|
@ -66,6 +67,7 @@ class SignFileController extends AEnvironmentAwareController implements ISignatu
|
|||
#[NoCSRFRequired]
|
||||
#[RequireManager]
|
||||
#[PublicPage]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/sign/file_id/{fileId}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function signUsingFileId(int $fileId, string $method, array $elements = [], string $identifyValue = '', string $token = ''): DataResponse {
|
||||
return $this->sign($fileId, null, $method, $elements, $identifyValue, $token);
|
||||
}
|
||||
|
|
@ -88,6 +90,7 @@ class SignFileController extends AEnvironmentAwareController implements ISignatu
|
|||
#[NoCSRFRequired]
|
||||
#[RequireSigner]
|
||||
#[PublicPage]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/sign/uuid/{uuid}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function signUsingUuid(string $uuid, string $method, array $elements = [], string $identifyValue = '', string $token = ''): DataResponse {
|
||||
return $this->sign(null, $uuid, $method, $elements, $identifyValue, $token);
|
||||
}
|
||||
|
|
@ -182,6 +185,7 @@ class SignFileController extends AEnvironmentAwareController implements ISignatu
|
|||
#[NoCSRFRequired]
|
||||
#[PublicPage]
|
||||
#[CanSignRequestUuid]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/sign/uuid/{uuid}/renew/{method}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function signRenew(string $method): DataResponse {
|
||||
$this->signFileService->renew(
|
||||
$this->getSignRequestEntity(),
|
||||
|
|
@ -208,6 +212,7 @@ class SignFileController extends AEnvironmentAwareController implements ISignatu
|
|||
#[NoCSRFRequired]
|
||||
#[RequireSigner]
|
||||
#[PublicPage]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/sign/uuid/{uuid}/code', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function getCodeUsingUuid(string $uuid): DataResponse {
|
||||
try {
|
||||
$signRequest = $this->signRequestMapper->getBySignerUuidAndUserId($uuid);
|
||||
|
|
@ -233,6 +238,7 @@ class SignFileController extends AEnvironmentAwareController implements ISignatu
|
|||
#[NoCSRFRequired]
|
||||
#[RequireSigner]
|
||||
#[PublicPage]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/sign/file_id/{fileId}/code', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function getCodeUsingFileId(int $fileId, ?string $identifyMethod, ?string $signMethod, ?string $identify): DataResponse {
|
||||
try {
|
||||
$signRequest = $this->signRequestMapper->getByFileIdAndUserId($fileId);
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ use OCA\Libresign\Service\SignerElementsService;
|
|||
use OCA\Libresign\Service\SignFileService;
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\Attribute\ApiRoute;
|
||||
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
|
||||
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
|
||||
use OCP\AppFramework\Http\Attribute\PublicPage;
|
||||
|
|
@ -63,6 +64,7 @@ class SignatureElementsController extends AEnvironmentAwareController implements
|
|||
#[NoCSRFRequired]
|
||||
#[PublicPage]
|
||||
#[RequireSignRequestUuid(skipIfAuthenticated: true)]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/signature/elements', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function createSignatureElement(array $elements): DataResponse {
|
||||
try {
|
||||
$this->validateHelper->validateVisibleElements($elements, $this->validateHelper::TYPE_VISIBLE_ELEMENT_USER);
|
||||
|
|
@ -109,6 +111,7 @@ class SignatureElementsController extends AEnvironmentAwareController implements
|
|||
#[NoCSRFRequired]
|
||||
#[PublicPage]
|
||||
#[RequireSignRequestUuid(skipIfAuthenticated: true)]
|
||||
#[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/signature/elements', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function getSignatureElements(): DataResponse {
|
||||
$userId = $this->userSession->getUser()?->getUID();
|
||||
try {
|
||||
|
|
@ -146,6 +149,7 @@ class SignatureElementsController extends AEnvironmentAwareController implements
|
|||
#[PublicPage]
|
||||
#[NoCSRFRequired]
|
||||
#[RequireSignRequestUuid(skipIfAuthenticated: true)]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/signature/elements/preview/{nodeId}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function getSignatureElementPreview(int $nodeId) {
|
||||
try {
|
||||
$node = $this->accountService->getFileByNodeIdAndSessionId(
|
||||
|
|
@ -177,6 +181,7 @@ class SignatureElementsController extends AEnvironmentAwareController implements
|
|||
*/
|
||||
#[NoAdminRequired]
|
||||
#[NoCSRFRequired]
|
||||
#[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/signature/elements/preview/{nodeId}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function getSignatureElement(int $nodeId): DataResponse {
|
||||
$userId = $this->userSession->getUser()->getUID();
|
||||
try {
|
||||
|
|
@ -209,6 +214,7 @@ class SignatureElementsController extends AEnvironmentAwareController implements
|
|||
#[PublicPage]
|
||||
#[NoCSRFRequired]
|
||||
#[RequireSignRequestUuid(skipIfAuthenticated: true)]
|
||||
#[ApiRoute(verb: 'PATCH', url: '/api/{apiVersion}/signature/elements/preview/{nodeId}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function patchSignatureElement(int $nodeId, string $type = '', array $file = []): DataResponse {
|
||||
try {
|
||||
$element['nodeId'] = $nodeId;
|
||||
|
|
@ -264,6 +270,7 @@ class SignatureElementsController extends AEnvironmentAwareController implements
|
|||
#[NoCSRFRequired]
|
||||
#[PublicPage]
|
||||
#[RequireSignRequestUuid(skipIfAuthenticated: true)]
|
||||
#[ApiRoute(verb: 'DELETE', url: '/api/{apiVersion}/signature/elements/{nodeId}', requirements: ['apiVersion' => '(v1)'])]
|
||||
public function deleteSignatureElement(int $nodeId): DataResponse {
|
||||
try {
|
||||
$this->accountService->deleteSignatureElement(
|
||||
|
|
|
|||
4961
openapi-full.json
4961
openapi-full.json
File diff suppressed because it is too large
Load diff
4961
openapi.json
4961
openapi.json
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue