PersistentAI API Documentation / @persistentai/fireflow-trpc / server / UserStore
Interface: UserStore
Defined in: packages/fireflow-trpc/server/stores/userStore/userStore.ts:20
UserStore interface for managing FireFlow users and their external accounts.
This store provides:
- User CRUD operations
- External account linking (persistentai, demo, telegram, web3, etc.)
- Auto-migration: getOrCreateUserByExternalAccount creates users on first login
- Demo user creation with stateless JWT tokens
Properties
createDemoUser()
createDemoUser: (
displayName?) =>Promise<DemoSessionResult>
Defined in: packages/fireflow-trpc/server/stores/userStore/userStore.ts:65
Create a demo user with a stateless JWT token (valid for 7 days). No session storage needed - JWT is self-contained.
Parameters
displayName?
string
Returns
Promise<DemoSessionResult>
createUser()
createUser: (
data) =>Promise<DBUser>
Defined in: packages/fireflow-trpc/server/stores/userStore/userStore.ts:29
Create a new user
Parameters
data
CreateUserData
Returns
Promise<DBUser>
getDemoExpiration()
getDemoExpiration: (
userId) =>Promise<Date|null>
Defined in: packages/fireflow-trpc/server/stores/userStore/userStore.ts:84
Get the expiration date for a demo user. Returns null if user is not demo or has no demo account. Expiration = demo account createdAt + 7 days
Parameters
userId
string
Returns
Promise<Date | null>
getExternalAccounts()
getExternalAccounts: (
userId) =>Promise<ExternalAccount[]>
Defined in: packages/fireflow-trpc/server/stores/userStore/userStore.ts:49
Get all external accounts for a user
Parameters
userId
string
Returns
Promise<ExternalAccount[]>
getOrCreateUserByExternalAccount()
getOrCreateUserByExternalAccount: (
data) =>Promise<DBUser>
Defined in: packages/fireflow-trpc/server/stores/userStore/userStore.ts:44
Get or create user by external account (provider + externalId). This is the KEY method for auto-migration:
- If external account exists, returns existing user
- If not, creates new user + links external account
Used during session validation to auto-create users on login.
Parameters
data
ExternalAccountData & object
Returns
Promise<DBUser>
getUserById()
getUserById: (
id) =>Promise<DBUser|null>
Defined in: packages/fireflow-trpc/server/stores/userStore/userStore.ts:24
Get user by internal FireFlow user ID
Parameters
id
string
Returns
Promise<DBUser | null>
isDemoExpired()
isDemoExpired: (
userId) =>Promise<boolean>
Defined in: packages/fireflow-trpc/server/stores/userStore/userStore.ts:90
Check if a demo user has expired. Returns false if user is not demo.
Parameters
userId
string
Returns
Promise<boolean>
isUserDemo()
isUserDemo: (
userId) =>Promise<boolean>
Defined in: packages/fireflow-trpc/server/stores/userStore/userStore.ts:77
Check if a user is a demo user. A user is demo if they have ONLY ONE external account with provider='demo'.
Parameters
userId
string
Returns
Promise<boolean>
linkExternalAccount()
linkExternalAccount: (
userId,data) =>Promise<ExternalAccount>
Defined in: packages/fireflow-trpc/server/stores/userStore/userStore.ts:54
Link a new external account to an existing user
Parameters
userId
string
data
Returns
Promise<ExternalAccount>
unlinkExternalAccount()
unlinkExternalAccount: (
externalAccountId) =>Promise<void>
Defined in: packages/fireflow-trpc/server/stores/userStore/userStore.ts:59
Unlink an external account
Parameters
externalAccountId
string
Returns
Promise<void>
updateUser()
updateUser: (
id,data) =>Promise<DBUser>
Defined in: packages/fireflow-trpc/server/stores/userStore/userStore.ts:34
Update an existing user
Parameters
id
string
data
UpdateUserData
Returns
Promise<DBUser>
validateDemoToken()
validateDemoToken: (
token) =>Promise<DBUser|null>
Defined in: packages/fireflow-trpc/server/stores/userStore/userStore.ts:71
Validate a demo JWT token and return the user. Returns null if token is invalid or expired.
Parameters
token
string
Returns
Promise<DBUser | null>