Multi-user auth via gnexus-auth OAuth + hybrid role/permission model
- Integrate gnexus-auth-client-py (GAuthClient) for OAuth flow, token refresh,
  and webhook parsing
- Add navi/auth/ package: User model, Fernet encryptor, client singleton,
  deps (get_current_user, require_admin, require_permission)
- New tables: navi_users, user_auth_sessions (auto-created on startup)
- Session/memory isolation by user_id with legacy NULL support
- Cookie-based auth proxy: /auth/login, /callback, /logout, /me
- Webhook receiver /webhooks/gnexus-auth handling user events, global logout,
  session revocation, role/permission changes
- Admin endpoints (/admin/*) gated by role + permissions
- Webclient auth store with isAdmin/hasPermission guards
- Admin-only profile filtering in /agents/profiles
- 200/200 tests passing

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent d28e6a5 commit 3014ba6f3d43c77ff753b97d8cd528fd8bfbb16c
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored on 3 May
Showing 37 changed files
View
navi/api/deps.py
View
navi/api/routes/admin.py 0 → 100644
View
navi/api/routes/agents.py
View
navi/api/routes/auth.py 0 → 100644
View
navi/api/routes/messages.py
View
navi/api/routes/sessions.py
View
navi/api/routes/webhooks.py 0 → 100644
View
navi/api/websocket.py
View
navi/auth/__init__.py 0 → 100644
View
navi/auth/_ddl.py 0 → 100644
View
navi/auth/client.py 0 → 100644
View
navi/auth/deps.py 0 → 100644
View
navi/auth/encrypt.py 0 → 100644
View
navi/config.py
View
navi/core/agent.py
View
navi/core/context_builder.py
View
navi/core/pg_session_store.py
View
navi/core/session.py
View
navi/main.py
View
navi/memory/_ddl.py
View
navi/memory/_facts.py
View
navi/memory/_summary.py
View
navi/memory/extractor.py
View
navi/profiles/base.py
View
tests/integration/conftest.py
View
tests/unit/api/test_session_files.py
View
tests/unit/memory/test_extractor.py
View
tests/unit/test_startup.py
View
webclient/dist/assets/index-BAFK9TX3.css 0 → 100644
View
webclient/dist/assets/index-C1CG_FUm.js 100644 → 0
Not supported
View
webclient/dist/assets/index-DA27t1M9.js 0 → 100644
Not supported
View
webclient/dist/assets/index-DjmTz8GY.css 100644 → 0
View
webclient/dist/index.html
View
webclient/src/App.vue
View
webclient/src/api/index.js
View
webclient/src/components/sidebar/AppSidebar.vue
View
webclient/src/stores/auth.js 0 → 100644