|
|
|
|
@ -19,7 +19,10 @@ use OCP\App\AppPathNotFoundException; |
|
|
|
|
use OCP\App\IAppManager; |
|
|
|
|
use OCP\AppFramework\Controller; |
|
|
|
|
use OCP\AppFramework\Http; |
|
|
|
|
use OCP\AppFramework\Http\Attribute\NoCSRFRequired; |
|
|
|
|
use OCP\AppFramework\Http\Attribute\OpenAPI; |
|
|
|
|
use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired; |
|
|
|
|
use OCP\AppFramework\Http\Attribute\PublicPage; |
|
|
|
|
use OCP\AppFramework\Http\ContentSecurityPolicy; |
|
|
|
|
use OCP\AppFramework\Http\FileDisplayResponse; |
|
|
|
|
use OCP\AppFramework\Http\JSONResponse; |
|
|
|
|
@ -74,10 +77,9 @@ class AppSettingsController extends Controller { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @NoCSRFRequired |
|
|
|
|
* |
|
|
|
|
* @return TemplateResponse |
|
|
|
|
*/ |
|
|
|
|
#[NoCSRFRequired] |
|
|
|
|
public function viewApps(): TemplateResponse { |
|
|
|
|
$this->navigationManager->setActiveEntry('core_apps'); |
|
|
|
|
|
|
|
|
|
@ -100,23 +102,21 @@ class AppSettingsController extends Controller { |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Get all active entries for the app discover section |
|
|
|
|
* |
|
|
|
|
* @NoCSRFRequired |
|
|
|
|
*/ |
|
|
|
|
#[NoCSRFRequired] |
|
|
|
|
public function getAppDiscoverJSON(): JSONResponse { |
|
|
|
|
$data = $this->discoverFetcher->get(true); |
|
|
|
|
return new JSONResponse($data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @PublicPage |
|
|
|
|
* @NoCSRFRequired |
|
|
|
|
* |
|
|
|
|
* Get a image for the app discover section - this is proxied for privacy and CSP reasons |
|
|
|
|
* |
|
|
|
|
* @param string $image |
|
|
|
|
* @throws \Exception |
|
|
|
|
*/ |
|
|
|
|
#[PublicPage] |
|
|
|
|
#[NoCSRFRequired] |
|
|
|
|
public function getAppDiscoverMedia(string $fileName): Response { |
|
|
|
|
$etag = $this->discoverFetcher->getETag() ?? date('Y-m'); |
|
|
|
|
$folder = null; |
|
|
|
|
@ -455,12 +455,11 @@ class AppSettingsController extends Controller { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @PasswordConfirmationRequired |
|
|
|
|
* |
|
|
|
|
* @param string $appId |
|
|
|
|
* @param array $groups |
|
|
|
|
* @return JSONResponse |
|
|
|
|
*/ |
|
|
|
|
#[PasswordConfirmationRequired] |
|
|
|
|
public function enableApp(string $appId, array $groups = []): JSONResponse { |
|
|
|
|
return $this->enableApps([$appId], $groups); |
|
|
|
|
} |
|
|
|
|
@ -470,11 +469,11 @@ class AppSettingsController extends Controller { |
|
|
|
|
* |
|
|
|
|
* apps will be enabled for specific groups only if $groups is defined |
|
|
|
|
* |
|
|
|
|
* @PasswordConfirmationRequired |
|
|
|
|
* @param array $appIds |
|
|
|
|
* @param array $groups |
|
|
|
|
* @return JSONResponse |
|
|
|
|
*/ |
|
|
|
|
#[PasswordConfirmationRequired] |
|
|
|
|
public function enableApps(array $appIds, array $groups = []): JSONResponse { |
|
|
|
|
try { |
|
|
|
|
$updateRequired = false; |
|
|
|
|
@ -522,21 +521,19 @@ class AppSettingsController extends Controller { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @PasswordConfirmationRequired |
|
|
|
|
* |
|
|
|
|
* @param string $appId |
|
|
|
|
* @return JSONResponse |
|
|
|
|
*/ |
|
|
|
|
#[PasswordConfirmationRequired] |
|
|
|
|
public function disableApp(string $appId): JSONResponse { |
|
|
|
|
return $this->disableApps([$appId]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @PasswordConfirmationRequired |
|
|
|
|
* |
|
|
|
|
* @param array $appIds |
|
|
|
|
* @return JSONResponse |
|
|
|
|
*/ |
|
|
|
|
#[PasswordConfirmationRequired] |
|
|
|
|
public function disableApps(array $appIds): JSONResponse { |
|
|
|
|
try { |
|
|
|
|
foreach ($appIds as $appId) { |
|
|
|
|
@ -551,11 +548,10 @@ class AppSettingsController extends Controller { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @PasswordConfirmationRequired |
|
|
|
|
* |
|
|
|
|
* @param string $appId |
|
|
|
|
* @return JSONResponse |
|
|
|
|
*/ |
|
|
|
|
#[PasswordConfirmationRequired] |
|
|
|
|
public function uninstallApp(string $appId): JSONResponse { |
|
|
|
|
$appId = OC_App::cleanAppId($appId); |
|
|
|
|
$result = $this->installer->removeApp($appId); |
|
|
|
|
|