|
|
|
@ -8,6 +8,7 @@ declare(strict_types=1); |
|
|
|
|
*/ |
|
|
|
|
namespace OCA\Provisioning_API\Controller; |
|
|
|
|
|
|
|
|
|
use OC\Installer; |
|
|
|
|
use OC_App; |
|
|
|
|
use OCP\App\AppPathNotFoundException; |
|
|
|
|
use OCP\App\IAppManager; |
|
|
|
@ -16,6 +17,7 @@ use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired; |
|
|
|
|
use OCP\AppFramework\Http\DataResponse; |
|
|
|
|
use OCP\AppFramework\OCS\OCSException; |
|
|
|
|
use OCP\AppFramework\OCSController; |
|
|
|
|
use OCP\IAppConfig; |
|
|
|
|
use OCP\IRequest; |
|
|
|
|
|
|
|
|
|
class AppsController extends OCSController { |
|
|
|
@ -23,6 +25,8 @@ class AppsController extends OCSController { |
|
|
|
|
string $appName, |
|
|
|
|
IRequest $request, |
|
|
|
|
private IAppManager $appManager, |
|
|
|
|
private Installer $installer, |
|
|
|
|
private IAppConfig $appConfig, |
|
|
|
|
) { |
|
|
|
|
parent::__construct($appName, $request); |
|
|
|
|
} |
|
|
|
@ -108,6 +112,15 @@ class AppsController extends OCSController { |
|
|
|
|
public function enable(string $app): DataResponse { |
|
|
|
|
try { |
|
|
|
|
$app = $this->verifyAppId($app); |
|
|
|
|
|
|
|
|
|
if (!$this->installer->isDownloaded($app)) { |
|
|
|
|
$this->installer->downloadApp($app); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($this->appConfig->getValueString($app, 'installed_version', '') === '') { |
|
|
|
|
$this->installer->installApp($app); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$this->appManager->enableApp($app); |
|
|
|
|
} catch (\InvalidArgumentException $e) { |
|
|
|
|
throw new OCSException($e->getMessage(), OCSController::RESPOND_UNAUTHORISED); |
|
|
|
|