|
|
|
|
@ -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);
|
|
|
|
|
|