diff --git a/analyticshub-v2.zip b/analyticshub-v2.zip new file mode 100644 index 0000000..fa1e9a5 Binary files /dev/null and b/analyticshub-v2.zip differ diff --git a/analyticshub/appinfo/routes.php b/analyticshub/appinfo/routes.php index fa24cb9..21037df 100644 --- a/analyticshub/appinfo/routes.php +++ b/analyticshub/appinfo/routes.php @@ -12,19 +12,19 @@ return [ 'routes' => [ // Admin routes [ - 'name' => 'Admin\PageController#index', + 'name' => 'page#index', 'url' => '/', 'verb' => 'GET', 'requirements' => [], ], [ - 'name' => 'Admin\AdminController#load', + 'name' => 'admin#load', 'url' => '/admin/load', 'verb' => 'GET', 'requirements' => [], ], [ - 'name' => 'Admin\AdminController#save', + 'name' => 'admin#save', 'url' => '/admin/save', 'verb' => 'POST', 'requirements' => [], diff --git a/analyticshub/lib/Controller/Admin/PageController.php b/analyticshub/lib/Controller/Admin/PageController.php deleted file mode 100644 index 2f1f087..0000000 --- a/analyticshub/lib/Controller/Admin/PageController.php +++ /dev/null @@ -1,144 +0,0 @@ -appName = $appName; - $this->request = $request; - $this->config = $config; - } - - /** - * Index page - render admin UI - * - * @NoAdminRequired - * @NoCSRFRequired - */ - public function index(): TemplateResponse { - // Load saved configuration - $googleClientId = $this->config->getAppValue(Application::APP_NAME, 'google_client_id', ''); - $googleClientSecret = '•••'; // Masked for display - $anthropicApiKey = '••••••••'; // Masked for display - $isConfigured = !empty($googleClientId) && !empty($this->config->getAppValue(Application::APP_NAME, 'anthropic_api_key', '')); - - return new TemplateResponse($this->appName, 'admin', [ - 'app_name' => $this->appName, - 'version' => Application::APP_VERSION, - 'is_configured' => $isConfigured, - 'google_client_id' => $googleClientId, - 'google_client_secret_masked' => $googleClientSecret, - 'anthropic_api_key_masked' => $anthropicApiKey, - ]); - } - - /** - * Save configuration - * - * @NoAdminRequired - * @NoCSRFRequired - */ - public function save(): JSONResponse { - $params = $this->request->getParams(); - - // Validate required fields - if (!isset($params['google_client_id']) || empty($params['google_client_id'])) { - return new JSONResponse([ - 'success' => false, - 'error' => 'Google Client ID is required' - ]); - } - - if (!isset($params['google_client_secret']) || empty($params['google_client_secret'])) { - return new JSONResponse([ - 'success' => false, - 'error' => 'Google Client Secret is required' - ]); - } - - if (!isset($params['anthropic_api_key']) || empty($params['anthropic_api_key'])) { - return new JSONResponse([ - 'success' => false, - 'error' => 'Anthropic API Key is required' - ]); - } - - try { - // Save configuration - $this->config->setAppValue(Application::APP_NAME, 'google_client_id', $params['google_client_id']); - $this->config->setAppValue(Application::APP_NAME, 'google_client_secret', $params['google_client_secret']); - $this->config->setAppValue(Application::APP_NAME, 'anthropic_api_key', $params['anthropic_api_key']); - - // Check if now configured - $isConfigured = !empty($params['google_client_id']) && !empty($params['anthropic_api_key']); - - return new JSONResponse([ - 'success' => true, - 'data' => [ - 'is_configured' => $isConfigured, - 'message' => 'Configuration saved successfully' - ] - ]); - - } catch (\Exception $e) { - return new JSONResponse([ - 'success' => false, - 'error' => $e->getMessage() - ]); - } - } - - /** - * Load configuration - * - * @NoAdminRequired - * @NoCSRFRequired - */ - public function load(): JSONResponse { - try { - // Load configuration - $googleClientId = $this->config->getAppValue(Application::APP_NAME, 'google_client_id', ''); - $googleClientSecret = ''; // Don't expose secret - $anthropicApiKey = ''; // Don't expose secret - - $isConfigured = !empty($googleClientId) && !empty($this->config->getAppValue(Application::APP_NAME, 'anthropic_api_key', '')); - - return new JSONResponse([ - 'success' => true, - 'data' => [ - 'google_client_id' => $googleClientId, - 'google_client_secret_masked' => '•••', // Masked - 'anthropic_api_key_masked' => '••••••••', // Masked - 'is_configured' => $isConfigured, - ] - ]); - - } catch (\Exception $e) { - return new JSONResponse([ - 'success' => false, - 'error' => $e->getMessage() - ]); - } - } -} diff --git a/analyticshub/lib/Controller/AdminController.php b/analyticshub/lib/Controller/AdminController.php index 8240088..25d96fd 100644 --- a/analyticshub/lib/Controller/AdminController.php +++ b/analyticshub/lib/Controller/AdminController.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace OCA\AnalyticsHub\Controller\Admin; +namespace OCA\AnalyticsHub\Controller; use OCP\IRequest; use OCP\IConfig; @@ -107,3 +107,4 @@ class AdminController { ]); } } + diff --git a/analyticshub/lib/Controller/Page.php b/analyticshub/lib/Controller/Page.php deleted file mode 100644 index 0fc5706..0000000 --- a/analyticshub/lib/Controller/Page.php +++ /dev/null @@ -1,39 +0,0 @@ -appName = $appName; - } - - /** - * Index page - render admin UI - * - * @NoAdminRequired - * @NoCSRFRequired - */ - public function index(): TemplateResponse { - return new TemplateResponse($this->appName, 'admin', [ - 'app_name' => $this->appName, - 'version' => '1.0.0', - 'status' => 'Testing - admin accessible', - ]); - } -} diff --git a/analyticshub/lib/Controller/PageController.php b/analyticshub/lib/Controller/PageController.php index 2b8b935..f636c8a 100644 --- a/analyticshub/lib/Controller/PageController.php +++ b/analyticshub/lib/Controller/PageController.php @@ -2,12 +2,11 @@ declare(strict_types=1); -namespace OCA\AnalyticsHub\Controller\Admin; +namespace OCA\AnalyticsHub\Controller; use OCP\IRequest; use OCP\IConfig; use OCP\AppFramework\Http\TemplateResponse; -use OCP\AppFramework\Http\Template\PublicTemplateResponse; use OCA\AnalyticsHub\AppInfo\Application; use OCA\AnalyticsHub\Service\GoogleAnalyticsService; use OCA\AnalyticsHub\Service\LLMService; @@ -18,7 +17,7 @@ use OCA\AnalyticsHub\Service\LLMService; * @NoAdminRequired * @NoCSRFRequired */ -class PageController extends Controller { +class PageController extends \OCP\AppFramework\Controller { private $appName; private $config;