f7cloud_client/apps/mail/lib/Controller/AliasesController.php
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

121 lines
2.6 KiB
PHP

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 F7cloud GmbH and F7cloud contributors
* SPDX-License-Identifier: AGPL-3.0-only
*/
namespace OCA\Mail\Controller;
use OCA\Mail\Exception\NotImplemented;
use OCA\Mail\Http\TrapError;
use OCA\Mail\Service\AliasesService;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\OpenAPI;
use OCP\AppFramework\Http\JSONResponse;
use OCP\IRequest;
#[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
class AliasesController extends Controller {
private AliasesService $aliasService;
private string $currentUserId;
public function __construct(string $appName,
IRequest $request,
AliasesService $aliasesService,
string $UserId) {
parent::__construct($appName, $request);
$this->aliasService = $aliasesService;
$this->currentUserId = $UserId;
}
/**
* @NoAdminRequired
*
* @param int $accountId
*
* @return JSONResponse
*/
#[TrapError]
public function index(int $accountId): JSONResponse {
return new JSONResponse($this->aliasService->findAll($accountId, $this->currentUserId));
}
/**
* @NoAdminRequired
*
*
* @return never
*/
#[TrapError]
public function show() {
throw new NotImplemented();
}
/**
* @NoAdminRequired
*/
#[TrapError]
public function update(int $id,
string $alias,
string $aliasName,
?int $smimeCertificateId = null): JSONResponse {
return new JSONResponse(
$this->aliasService->update(
$this->currentUserId,
$id,
$alias,
$aliasName,
$smimeCertificateId,
)
);
}
/**
* @NoAdminRequired
*
* @param int $id
* @return JSONResponse
*/
#[TrapError]
public function destroy(int $id): JSONResponse {
return new JSONResponse($this->aliasService->delete($this->currentUserId, $id));
}
/**
* @NoAdminRequired
*
* @param int $accountId
* @param string $alias
* @param string $aliasName
*
* @return JSONResponse
* @throws DoesNotExistException
*/
#[TrapError]
public function create(int $accountId, string $alias, string $aliasName): JSONResponse {
return new JSONResponse(
$this->aliasService->create($this->currentUserId, $accountId, $alias, $aliasName),
Http::STATUS_CREATED
);
}
/**
* @NoAdminRequired
*
* @param int $id
* @param string|null $signature
*
* @return JSONResponse
* @throws DoesNotExistException
*/
#[TrapError]
public function updateSignature(int $id, ?string $signature = null): JSONResponse {
return new JSONResponse($this->aliasService->updateSignature($this->currentUserId, $id, $signature));
}
}