Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/core/src/@types/entities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ export interface SessionEntity {
authenticatedWith: string
status: SessionStatus
mfaState: MFAState
sessionToken: string
tokenHash: string
expiresAt: Date
metadata: Record<string, unknown> | null
lastActivityAt: Date
Expand Down
2 changes: 2 additions & 0 deletions packages/core/src/@types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ export type * from "@/@types/session.ts"
export type * from "@/@types/utility.ts"
export type * from "@/@types/api.ts"
export type * from "@/identity/index.ts"
export type * from "@/@types/entities.ts"
export type * from "@/@types/adapter.ts"

export type { Awaitable } from "@aura-stack/router/types"
export type { TypedJWTPayload } from "@aura-stack/jose"
Expand Down
10 changes: 10 additions & 0 deletions packages/core/src/@types/session.ts
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,8 @@ export interface GetStatelessSessionReturn<DefaultUser extends User = User> {
headers: Headers
}

export type GetStatefulSessionReturn<DefaultUser extends User = User> = GetStatelessSessionReturn<DefaultUser>

/**
* Abstraction layer for session management.
*/
Expand Down Expand Up @@ -272,6 +274,14 @@ export interface JWTStrategyOptions<DefaultUser extends User = User> {
identity: SchemaRegistryContext
}

export interface DatabaseStrategyOptions<DefaultUser extends User = User> {
config: StatefulStrategyConfig
jose: JoseInstance<DefaultUser>
logger?: InternalLogger
cookies: () => InternalCookieStoreConfig
identity: SchemaRegistryContext
}

/** Minimal token issue/verify surface used by session code paths. */
export type JWTManager<DefaultUser extends User = User> = {
createToken(user: TypedJWTPayload<Partial<DefaultUser>>): Promise<string>
Expand Down
5 changes: 3 additions & 2 deletions packages/core/src/jose.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,15 @@ import {
isPEMFormattedKeyPairFromEnv,
isSealedMode,
isSignedMode,
isStatelessStrategy,
} from "@/shared/assert.ts"
import { AuraAuthError } from "@/shared/errors.ts"
import { importPEMKeyPair } from "@/shared/crypto.ts"
export { encoder, getRandomBytes, getSubtleCrypto } from "@aura-stack/jose/crypto"
import type { User, SessionConfig, JWTKey, AsymmetricKeyPairFromEnv } from "@/@types/index.ts"
import { AuraAuthError } from "./shared/errors.ts"

const getJWTConfig = (config?: SessionConfig) => {
return config?.jwt
return isStatelessStrategy(config) ? config?.jwt : {}
}

export const getJWTClaims = (config?: SessionConfig) => {
Expand Down
3 changes: 2 additions & 1 deletion packages/core/src/router/context.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { getEnv, getEnvArray, getEnvBoolean } from "@/shared/env.ts"
import { createRateLimiterInstance } from "@/router/rate-limiter.ts"
import type { Identities, SchemaTypes } from "@/identity/index.ts"
import type { AuthConfig, InternalContext, FromShapeToObject } from "@/@types/index.ts"
import { isStatelessStrategy } from "@/shared/assert.ts"

export const createContext = <Identity extends Identities, SignUpSchema extends SchemaTypes>(
config?: AuthConfig<Identity, SignUpSchema>
Expand Down Expand Up @@ -60,7 +61,7 @@ export const createContext = <Identity extends Identities, SignUpSchema extends
skipValidation,
},
signUp: config?.signUp,
jwtManager: createJoseManager(config?.session?.jwt, jose),
jwtManager: createJoseManager(isStatelessStrategy(config?.session) ? config?.session?.jwt : undefined, jose),
Comment thread
halvaradop marked this conversation as resolved.
rateLimiters: createRateLimiterInstance(config?.rateLimiter),
} as InternalContext<Identity, SignUpSchema>
ctx.sessionStrategy = createSessionStrategy<Identity>({
Expand Down
Loading
Loading