Fix update/create with empty perms list
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-06-22 00:40:28 -04:00
parent 660022ed16
commit 090313fb34
4 changed files with 16 additions and 18 deletions

View File

@@ -177,21 +177,18 @@ func (h *ApplicationHandler) UpdateApplication(ctx *gin.Context) {
return
}
// Update permissions if provided
if len(request.Permissions) > 0 {
// Get current permissions for removal
currentPermIDs := make([]uint32, len(app.Permissions))
for i, perm := range app.Permissions {
currentPermIDs[i] = perm.ID
}
// Get current permissions for removal
currentPermIDs := make([]uint32, len(app.Permissions))
for i, perm := range app.Permissions {
currentPermIDs[i] = perm.ID
}
h.updateApplicationPermissions(ctx, app.ID, request.Permissions, currentPermIDs)
h.updateApplicationPermissions(ctx, app.ID, request.Permissions, currentPermIDs)
// Refresh the application with updated permissions
refreshedApp, err := h.Store.GetApplication(ctx, app.ID)
if err == nil {
app = refreshedApp
}
// Refresh the application with updated permissions
refreshedApp, err := h.Store.GetApplication(ctx, app.ID)
if err == nil {
app = refreshedApp
}
// If not regenerating api key scrub from response

View File

@@ -27,8 +27,8 @@ interface ApplicationCardProps {
const ApplicationCard: React.FC<ApplicationCardProps> = ({ app, permissions }) => {
const { handleMenuOpen, openEditDialog, regenerateApiKey } = useApplications();
const usedPermissionCount = app.permissions.length;
const appPermissions = app.permissions || [];
const usedPermissionCount = appPermissions.length;
const totalAvailablePermissions = permissions.length;
return (
@@ -70,13 +70,13 @@ const ApplicationCard: React.FC<ApplicationCardProps> = ({ app, permissions }) =
</Typography>
<Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 0.5, mt: 1 }}>
{app.permissions.reduce((services: string[], permission: Permission) => {
{appPermissions.reduce((services: string[], permission: Permission) => {
if (!services.includes(permission.service)) {
services.push(permission.service);
}
return services;
}, []).map((service: string) => {
const servicePermissions = app.permissions.filter(p => p.service === service);
const servicePermissions = appPermissions.filter(p => p.service === service);
return servicePermissions.length > 0 && (
<Tooltip
key={service}

View File

@@ -40,7 +40,7 @@ const ApplicationsPage: React.FC<ApplicationsPageProps> = ({ permissions }) => {
Your Applications
</Typography>
<Typography variant="body1" color="text.secondary">
Create and manage your applications with customized permissions
Create and manage your applications
</Typography>
</Box>

View File

@@ -135,6 +135,7 @@ export const ApplicationProvider: React.FC<ApplicationProviderProps> = ({ childr
const updateApplication = async (app: Application) => {
try {
console.log('Updating application:', app);
const result = await applicationService.updateApplication(app.id, {
name: app.name,
description: app.description,