You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat: create reusable form components (SearchInput, RoleSelect)
- Add SearchInput component with icon for consistent search UI
- Add RoleSelect component for role dropdown selection
- Both components support v-model and are fully typed
- Reduces code duplication across modals and forms
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
* feat: create RoleSelectionModal component
- Reusable modal for role/permission selection
- Integrates with RoleSelect component
- Handles validation and loading states
- Supports custom titles and descriptions
- Emits confirm/cancel events for flexible usage
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
* refactor: use new reusable components in AppAccess and Members
AppAccess.vue:
- Replace search input with SearchInput component
- Replace role select with RoleSelect component
- Replace Edit Role Modal with RoleSelectionModal
- Remove duplicate modal code (~40 lines)
- Refactor updateRoleBinding to handleEditRoleConfirm
Members.vue:
- Replace search input in App Access modal with SearchInput
- Replace role select with RoleSelect component
- Remove unused selectedOrgRoleSummary computed property
Benefits:
- Reduced code duplication
- Consistent UI across modals
- Easier maintenance and testing
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
* fix: improve role display in AppTable
- Import getRbacRoleI18nKey for proper role translation
- Normalize role names (remove invite_ prefix)
- Use i18n translations when available
- Fallback to human-readable format (replace _ with spaces)
- Fixes display of roles like "app_admin" → "App Admin"
Applies the same display logic used in Members.vue and AppAccess.vue
for consistent user experience across the application.
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
* fix(backend): use wildcard middleware matcher for CORS and auth
- Change middleware from '/' to '*' for useCors and middlewareAuth
- Ensures middleware applies to all routes in groups, role_bindings, and roles
- Fixes potential CORS and auth issues on nested routes
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
* feat(rbac): remove app/channel/bundle permissions from org_member role
Migration:
- Remove app, bundle, and channel scope permissions from org_member role
- Update role description to reflect org-only access
- Ensures org_member has no direct app access by default
Seed:
- Enable RBAC for test organization
- Remove unused variables (v_org, v_migration_result)
This enforces the principle that org_member should only have
org-level access and requires explicit app-level role assignments.
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
* chore(i18n): remove unused app-role-hint translation key
- Remove app-role-hint key from all language files
- Key was not referenced in the codebase
- Cleanup to reduce translation maintenance burden
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
* fix(lint): fix ESLint errors in new components
- Fix import order in AppAccess.vue (SearchInput before RoleSelectionModal)
- Fix static class in SearchInput.vue (separate static class attribute)
- Fix inconsistent quote-props in RoleSelectionModal.vue emit types
- Fix indentation errors in Members.vue template (79 errors total)
All errors auto-fixed with eslint --fix
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
* fix(i18n): correct t() function calls with interpolation
Remove invalid default string argument from t() calls in Members.vue.
The vue-i18n t() function expects (key, interpolationObject) not
(key, defaultString, interpolationObject).
* chore: create a new migration timestamp to be played last
* fix(rbac): align apps INSERT RLS policy with org-level permissions
After removing app/channel/bundle permissions from org_member role,
the apps table INSERT policy was still checking for app-level admin
permissions. This caused RLS violations when creating apps since the
app_id doesn't exist yet during creation.
Updated the policy to check org-level write permissions instead,
which maps to org.update_settings in RBAC and aligns with the API
endpoint's permission check.
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
* fix(rbac): create new migration for apps INSERT RLS policy fix
Previous attempt modified an already-applied migration, which
doesn't get re-run in CI. This creates a new migration with a
current timestamp to properly fix the RLS policy for app creation.
Changes:
- Remove RLS policy fix from old migration (already applied)
- Create new migration 20260203220918 with the RLS policy fix
- Policy now checks org-level 'write' permissions instead of
app-level 'admin' permissions for INSERT operations
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
* Revert "fix(rbac): create new migration for apps INSERT RLS policy fix"
This reverts commit 321696b.
* fix(rbac): use get_identity_org_allowed for app INSERT RLS policy
When creating a new app, the app_id doesn't exist yet, so we can't use
get_identity_org_appid which expects an app_id parameter. Instead, use
get_identity_org_allowed which only needs the org_id.
This fixes the RLS policy to properly check org-level 'write' permissions
when creating apps, which admins and super_admins have through RBAC.
Also added debugging to expose-metadata test to help diagnose any remaining
issues with app creation.
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
* fix(api): avoid RLS read on app create
* fix(db): validate user in has_app_right_apikey
* fix(db): enforce 2FA for RBAC super-admin
* test: improve error logging for app create
* fix(api): use pg client for app create
---------
Co-authored-by: Claude Sonnet 4.5 <[email protected]>
Copy file name to clipboardExpand all lines: messages/de.json
-1Lines changed: 0 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -223,7 +223,6 @@
223
223
"app-not-found": "App nicht gefunden",
224
224
"app-not-found-description": "Diese App konnte nicht gefunden werden. Sie könnte gelöscht worden sein oder Sie haben möglicherweise keinen Zugriff darauf.",
225
225
"app-perm": "App-Berechtigung",
226
-
"app-role-hint": "App-Rollen steuern, welche Aktionen Benutzer ausführen dürfen",
227
226
"app-transferred": "App erfolgreich übertragen",
228
227
"app-will-be-transferred": "Die App wird an $ORG_ID übertragen. Bitte geben Sie die App-ID ('$APP_ID') ein, um die Übertragung zu bestätigen.",
Copy file name to clipboardExpand all lines: messages/es.json
-1Lines changed: 0 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -223,7 +223,6 @@
223
223
"app-not-found": "Aplicación no encontrada",
224
224
"app-not-found-description": "Esta aplicación no pudo ser encontrada. Podría haber sido eliminada o es posible que no tengas acceso a ella.",
225
225
"app-perm": "Permiso de la aplicación",
226
-
"app-role-hint": "Los roles de la app controlan las acciones permitidas",
227
226
"app-transferred": "Aplicación transferida con éxito",
228
227
"app-will-be-transferred": "La aplicación será transferida a $ORG_ID. Por favor, escriba el ID de la aplicación ('$APP_ID') para confirmar la transferencia.",
Copy file name to clipboardExpand all lines: messages/fr.json
-1Lines changed: 0 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -223,7 +223,6 @@
223
223
"app-not-found": "Application non trouvée",
224
224
"app-not-found-description": "Cette application n'a pas pu être trouvée. Elle a peut-être été supprimée ou vous n'avez peut-être pas accès à celle-ci.",
225
225
"app-perm": "Autorisation d'application",
226
-
"app-role-hint": "Les rôles d'application contrôlent les actions que les utilisateurs peuvent effectuer sur cette app",
227
226
"app-transferred": "L'application a été transférée avec succès",
228
227
"app-will-be-transferred": "L'application sera transférée à $ORG_ID. Veuillez taper l'ID de l'application ('$APP_ID') pour confirmer le transfert.",
0 commit comments