. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Controllers; use Espo\Core\Exceptions\Error; use Espo\Core\Exceptions\Forbidden; use Espo\Core\Mail\Account\GroupAccount\Service; use Espo\Core\Mail\Account\Storage\Params as StorageParams; use Espo\Core\Controllers\Record; use Espo\Core\Api\Request; use Espo\Core\Mail\Exceptions\ImapError; class InboundEmail extends Record { protected function checkAccess(): bool { return $this->getUser()->isAdmin(); } /** * @return string[] * @throws Error * @throws ImapError * @throws Forbidden */ public function postActionGetFolders(Request $request): array { $data = $request->getParsedBody(); $params = StorageParams::createBuilder() ->setHost($data->host ?? null) ->setPort($data->port ?? null) ->setSecurity($data->security ?? null) ->setUsername($data->username ?? null) ->setPassword($data->password ?? null) ->setId($data->id ?? null) ->build(); return $this->getInboundEmailService()->getFolderList($params); } /** * @throws Error * @throws Forbidden */ public function postActionTestConnection(Request $request): bool { $data = $request->getParsedBody(); $params = StorageParams::createBuilder() ->setHost($data->host ?? null) ->setPort($data->port ?? null) ->setSecurity($data->security ?? null) ->setUsername($data->username ?? null) ->setPassword($data->password ?? null) ->setId($data->id ?? null) ->build(); $this->getInboundEmailService()->testConnection($params); return true; } private function getInboundEmailService(): Service { /** @var Service */ return $this->injectableFactory->create(Service::class); } }