Christian Byrne
6048fab239
feat: add per-tab workspace authentication infrastructure ( #8073 )
...
## Summary
Add workspace authentication composables and types for per-tab workspace
isolation. This infrastructure enables users to work in different
workspaces in different browser tabs.
## Changes
- **useWorkspaceAuth composable** - workspace token management
- Exchange Firebase token for workspace-scoped JWT via `POST
/api/auth/token`
- Auto-refresh tokens 5 minutes before expiry
- Per-tab sessionStorage caching
- **useWorkspaceSwitch composable** - workspace switching with unsaved
changes confirmation
- **WorkspaceWithRole/WorkspaceTokenResponse types** - aligned with
backend API
- **firebaseAuthStore.getAuthHeader()** - prioritizes workspace tokens
over Firebase tokens
- **useSessionCookie** - uses Firebase token directly (getIdToken())
since getAuthHeader() now returns workspace token
## Backend Dependency
- `POST /api/auth/token` - exchange Firebase token for workspace token
- `GET /api/workspaces` - list user's workspaces
## Related
- https://github.com/Comfy-Org/ComfyUI_frontend/pull/6295
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8073-feat-add-per-tab-workspace-authentication-infrastructure-2e96d73d3650816c8cf9dae9c330aebb )
by [Unito](https://www.unito.io )
---------
Co-authored-by: anthropic/claude <noreply@anthropic.com >
Co-authored-by: Amp <amp@ampcode.com >
Co-authored-by: Simula_r <18093452+simula-r@users.noreply.github.com >
2026-01-15 17:24:48 -08:00
Christian Byrne
cd50c54e61
add session cookie auth on cloud dist ( #6295 )
...
## Summary
Implemented cookie-based session authentication for cloud distribution,
replacing service worker approach with extension-based lifecycle hooks.
## Changes
- **What**: Added session cookie management via [extension
hooks](https://docs.comfy.org/comfyui/extensions ) for login, token
refresh, and logout events
- **Architecture**: DDD-compliant structure with platform layer
(`src/platform/auth/session/`) and cloud-gated extension
- **New Extension Hooks**: `onAuthTokenRefreshed()` and
`onAuthUserLogout()` in [ComfyExtension
interface](src/types/comfy.ts:220-232)
```mermaid
sequenceDiagram
participant User
participant Firebase
participant Extension
participant Backend
User->>Firebase: Login
Firebase->>Extension: onAuthUserResolved
Extension->>Backend: POST /auth/session (with JWT)
Backend-->>Extension: Set-Cookie
Firebase->>Firebase: Token Refresh
Firebase->>Extension: onAuthTokenRefreshed
Extension->>Backend: POST /auth/session (with new JWT)
Backend-->>Extension: Update Cookie
User->>Firebase: Logout
Firebase->>Extension: onAuthUserLogout (user null)
Extension->>Backend: DELETE /auth/session
Backend-->>Extension: Clear Cookie
```
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6295-add-session-cookie-auth-on-cloud-dist-2986d73d365081868c56e5be1ad0d0d4 )
by [Unito](https://www.unito.io )
2025-10-26 00:04:30 -07:00
Christian Byrne
e314d9cbd9
[refactor] Simplify current user resolved hook implementation ( #5718 )
...
## Summary
Refactored `onUserResolved` function in auth composable to use VueUse
`whenever` utility instead of manual watch implementation and use
`immediate` option instead of invoking manually before creating watcher.
## Changes
- **What**: Replaced manual watch + immediate check pattern with [VueUse
whenever](https://vueuse.org/shared/whenever/ ) utility in
`useCurrentUser.ts:37`
## Review Focus
Behavioral equivalence verification - `whenever` with `immediate: true`
should maintain identical callback timing and cleanup semantics.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-5718-refactor-Simplify-current-user-resolved-hook-implementation-2766d73d365081008b6de156dd78f940 )
by [Unito](https://www.unito.io )
2025-09-21 21:53:25 -07:00
Christian Byrne
0801778f60
feat: Add Vue node subgraph title button and fix subgraph navigation with vue nodes ( #5572 )
...
## Summary
- Adds subgraph title button to Vue node headers (matching LiteGraph
behavior)
- Fixes Vue node lifecycle issues during subgraph navigation and tab
switching
- Extracts reusable `useSubgraphNavigation` composable with
callback-based API
- Adds comprehensive tests for subgraph functionality
- Ensures proper graph context restoration during tab switches
https://github.com/user-attachments/assets/fd4ff16a-4071-4da6-903f-b2be8dd6e672
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-5572-feat-Add-Vue-node-subgraph-title-button-with-lifecycle-management-26f6d73d365081bfbd9cfd7d2775e1ef )
by [Unito](https://www.unito.io )
---------
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: DrJKL <DrJKL@users.noreply.github.com >
2025-09-19 14:19:06 -07:00
Christian Byrne
6786d8e4fb
Add hook to expose uid ( #5612 )
...
* add hook to expose uid
* use whenever for cleaner code
2025-09-16 14:42:40 -07:00
Yoland Yan
23d0362267
[feat] Add account deletion functionality to UserPanel component ( #5216 )
2025-08-29 22:29:20 +00:00
Christian Byrne
6408623b71
[API Node] Show user state when logged in via API key ( #3838 )
...
Co-authored-by: github-actions <github-actions@github.com >
Co-authored-by: Chenlei Hu <hcl@comfy.org >
2025-05-09 14:45:32 -04:00