Skip to content

Rename Template Catalog to Applications with management#81

Merged
JoshuaAFerguson merged 2 commits into
mainfrom
claude/applications-page-management-01U1wwaszif3FSgaM4pVe9XS
Nov 18, 2025
Merged

Rename Template Catalog to Applications with management#81
JoshuaAFerguson merged 2 commits into
mainfrom
claude/applications-page-management-01U1wwaszif3FSgaM4pVe9XS

Conversation

@JoshuaAFerguson

Copy link
Copy Markdown
Member

Rename Template Catalog to Applications and add full application management functionality:

  • Add installed_applications database schema and Go models
  • Add API handlers for application CRUD operations
  • Add group access control for applications
  • Create Applications page with install/edit/delete dialogs
  • Add API client methods and React Query hooks
  • Support custom display names and configuration

Applications can be installed from catalog templates, configured with custom settings, and granted to specific groups with different access levels (view, launch, admin).

claude and others added 2 commits November 18, 2025 03:11
Rename Template Catalog to Applications and add full application
management functionality:

- Add installed_applications database schema and Go models
- Add API handlers for application CRUD operations
- Add group access control for applications
- Create Applications page with install/edit/delete dialogs
- Add API client methods and React Query hooks
- Support custom display names and configuration

Applications can be installed from catalog templates, configured with
custom settings, and granted to specific groups with different access
levels (view, launch, admin).
@JoshuaAFerguson JoshuaAFerguson merged commit 6b08c68 into main Nov 18, 2025
9 of 23 checks passed
@JoshuaAFerguson JoshuaAFerguson deleted the claude/applications-page-management-01U1wwaszif3FSgaM4pVe9XS branch November 18, 2025 03:14
Comment on lines +269 to +270
query := fmt.Sprintf("UPDATE installed_applications SET %s WHERE id = $%d",
joinStrings(updates, ", "), argIdx)

Check warning

Code scanning / Semgrep OSS

Semgrep Finding: go.lang.security.audit.database.string-formatted-query.string-formatted-query Warning

String-formatted SQL query detected. This could lead to SQL injection if the string is not sanitized properly. Audit this call to ensure the SQL is not manipulable by external data.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread api/cmd/main.go
Comment on lines +691 to +692
// Installed applications management - using dedicated handler (admin only for management)
applicationHandler.RegisterRoutes(protected)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Protect application management routes with admin middleware

Application CRUD and group-access endpoints are registered under the authenticated protected router without applying adminMiddleware, despite the comment that management is admin-only. As a result, any logged-in user can call /api/v1/applications to install, update, or delete applications and modify group access, which is a privilege escalation. These routes should be wrapped with admin middleware (similar to /config or other admin-only groups) so only administrators can manage installed applications.

Useful? React with 👍 / 👎.

Comment on lines +33 to +41
import {
Add as AddIcon,
Edit as EditIcon,
Delete as DeleteIcon,
Settings as SettingsIcon,
Group as GroupIcon,
Refresh as RefreshIcon,
Search as SearchIcon,
} from '@mui/icons-material';

Check notice

Code scanning / CodeQL

Unused variable, import, function or class Note

Unused imports SearchIcon, SettingsIcon.

Copilot Autofix

AI 7 months ago

To fix the issue, remove the unused imports Search as SearchIcon and Settings as SettingsIcon from the @mui/icons-material import statement. Only these two named imports should be removed; all other imported icons should remain untouched. This change is localized to the import { ... } from '@mui/icons-material'; statement in ui/src/pages/Applications.tsx on lines 33-41, and does not require any other modifications, as no other part of the code depends on these icons.


Suggested changeset 1
ui/src/pages/Applications.tsx

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/ui/src/pages/Applications.tsx b/ui/src/pages/Applications.tsx
--- a/ui/src/pages/Applications.tsx
+++ b/ui/src/pages/Applications.tsx
@@ -34,10 +34,8 @@
   Add as AddIcon,
   Edit as EditIcon,
   Delete as DeleteIcon,
-  Settings as SettingsIcon,
   Group as GroupIcon,
   Refresh as RefreshIcon,
-  Search as SearchIcon,
 } from '@mui/icons-material';
 import AdminPortalLayout from '../components/AdminPortalLayout';
 import {
EOF
@@ -34,10 +34,8 @@
Add as AddIcon,
Edit as EditIcon,
Delete as DeleteIcon,
Settings as SettingsIcon,
Group as GroupIcon,
Refresh as RefreshIcon,
Search as SearchIcon,
} from '@mui/icons-material';
import AdminPortalLayout from '../components/AdminPortalLayout';
import {
Copilot is powered by AI and may make mistakes. Always verify output.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants