diff options
author | Daniel Kesselberg <mail@danielkesselberg.de> | 2021-03-30 13:45:04 +0300 |
---|---|---|
committer | Daniel Kesselberg <mail@danielkesselberg.de> | 2021-03-30 19:06:51 +0300 |
commit | 117aaa73cf4a9da159de28b8ad48eb7acdab7010 (patch) | |
tree | 2a33d5983a50ec912d77d0d54c259aae450c7180 /lib/Service | |
parent | 58d4234f85864a9bff77c19d3fc6b3b3cf12737a (diff) |
Cleanup aliases logic
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
Diffstat (limited to 'lib/Service')
-rw-r--r-- | lib/Service/AliasesService.php | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/lib/Service/AliasesService.php b/lib/Service/AliasesService.php index 218f13044..933303187 100644 --- a/lib/Service/AliasesService.php +++ b/lib/Service/AliasesService.php @@ -25,14 +25,21 @@ namespace OCA\Mail\Service; use OCA\Mail\Db\Alias; use OCA\Mail\Db\AliasMapper; +use OCA\Mail\Db\MailAccountMapper; +use OCA\Mail\Exception\ClientException; +use OCP\AppFramework\Db\DoesNotExistException; class AliasesService { /** @var AliasMapper */ - private $mapper; + private $aliasMapper; - public function __construct(AliasMapper $mapper) { - $this->mapper = $mapper; + /** @var MailAccountMapper */ + private $mailAccountMapper; + + public function __construct(AliasMapper $aliasMapper, MailAccountMapper $mailAccountMapper) { + $this->aliasMapper = $aliasMapper; + $this->mailAccountMapper = $mailAccountMapper; } /** @@ -41,7 +48,7 @@ class AliasesService { * @return Alias[] */ public function findAll(int $accountId, string $currentUserId): array { - return $this->mapper->findAll($accountId, $currentUserId); + return $this->aliasMapper->findAll($accountId, $currentUserId); } /** @@ -50,21 +57,31 @@ class AliasesService { * @return Alias */ public function find(int $aliasId, string $currentUserId): Alias { - return $this->mapper->find($aliasId, $currentUserId); + return $this->aliasMapper->find($aliasId, $currentUserId); } /** + * @param string $currentUserId * @param int $accountId * @param string $alias * @param string $aliasName + * * @return Alias + * @throws ClientException */ - public function create(int $accountId, string $alias, string $aliasName) { + public function create(string $currentUserId, int $accountId, string $alias, string $aliasName): Alias { + try { + $this->mailAccountMapper->find($currentUserId, $accountId); + } catch (DoesNotExistException $e) { + throw new ClientException("Account $accountId does not exist or no permission to access it"); + } + $aliasEntity = new Alias(); $aliasEntity->setAccountId($accountId); $aliasEntity->setAlias($alias); $aliasEntity->setName($aliasName); - return $this->mapper->insert($aliasEntity); + + return $this->aliasMapper->insert($aliasEntity); } /** @@ -73,8 +90,8 @@ class AliasesService { * @return Alias */ public function delete(int $aliasId, string $currentUserId): Alias { - $alias = $this->mapper->find($aliasId, $currentUserId); - $this->mapper->delete($alias); + $alias = $this->aliasMapper->find($aliasId, $currentUserId); + $this->aliasMapper->delete($alias); return $alias; } @@ -87,6 +104,6 @@ class AliasesService { * @return void */ public function deleteAll($accountId): void { - $this->mapper->deleteAll($accountId); + $this->aliasMapper->deleteAll($accountId); } } |