Errors#
Errors defined in the specification, such as AUTH_INVALID_USER_ID
must be thrown as a LuciaError
.
throw new LuciaError("AUTH_INVALID_USER_ID");
InitializeAdapter
#
adapter
configuration takes a InitializeAdapter
function, which in turn returns the actual adapter instance. This function takes a LuciaError
, and all errors thrown by the adapter must use this class instead of the one imported from lucia
.
const customAdapter = (config: any) => {
return (luciaError: typeof LuciaError) => ({
// adapter
});
};
lucia({
adapter: customAdapter(options)
});
Adapter
#
type Adapter = {
getSessionAndUser?: (
sessionId: string
) => Promise<[SessionSchema, UserSchema] | [null, null]>;
} & UserAdapter &
SessionAdapter;
getSessionAndUser()
#
- An optional method of
Adapter
- Must select
session
where session(id)
equals parameter sessionId
- Must select
user
where user(id)
equals session(id)
of selected session
- Must return the session and user in a tuple if both exists, or
null, null
if not
const getSessionAndUser: (
sessionId: string
) => Promise<
[session: SessionSchema, user: UserSchema] | [session: null, user: null]
>;
Parameters#
name | type | description |
---|
sessionId | string | Unique target session(id) |
Returns#
UserAdapter
#
type UserAdapter = Readonly<{
getUser: (userId: string) => Promise<UserSchema | null>;
setUser: (user: UserSchema, key: KeySchema | null) => Promise<void>;
updateUser: (
userId: string,
partialUser: Partial<UserSchema>
) => Promise<void>;
deleteUser: (userId: string) => Promise<void>;
getKey: (keyId: string) => Promise<KeySchema | null>;
getKeysByUserId: (userId: string) => Promise<KeySchema[]>;
setKey: (key: KeySchema) => Promise<void>;
updateKey: (keyId: string, partialKey: Partial<KeySchema>) => Promise<void>;
deleteKey: (keyId: string) => Promise<void>;
deleteKeysByUserId: (userId: string) => Promise<void>;
}>;
deleteKey()
#
- Must delete unique
key
where key(id)
equals parameter keyId
- Must return
void
- Parameter
keyId
may be invalid and must not throw errors if invalid
- Invalid
keyId
must be ignored and no errors should be thrown
const deleteKey: (keyId: string) => Promise<void>;
Parameters#
name | type | description |
---|
keyId | string | Unique target key(id) |
deleteKeysByUserId()
#
- Must delete multiple
key
where key(user_id)
equals parameter userId
- Must return
void
- Parameter
userId
may be invalid and must not throw errors if invalid
- Invalid
userId
must be ignored and no errors should be thrown
const deleteKeysByUserId: (userId: string) => Promise<void>;
Parameters#
name | type | description |
---|
userId | string | Target key(user_id) |
deleteUser()
#
- Must delete unique
user
where user(id)
equals parameter userId
- Must return
void
- Parameter
userId
may be invalid and must not throw errors if invalid
- Invalid
userId
must be ignored and no errors should be thrown
const deleteUser: (userId: string) => Promise<void>;
Parameters#
name | type | description |
---|
userId | string | Unique target user(id) |
getKey()
#
- Must select unique
key
where key(id)
equals parameter keyId
- Must return target
key
or null
if there are no matches
const getKey: (keyId: string) => Promise<KeySchema | null>;
Parameters#
name | type | description |
---|
keyId | string | Unique arget key(id) |
Returns#
getKeysByUserId()
#
- Must select multiple
key
where key(user_id)
equals parameter userId
- Must return an array of
key
or an empty array if there are no matches
const getKeysByUserId: (userId: string) => Promise<KeySchema[]>;
Parameters#
name | type | description |
---|
userId | string | Target key(user_id) |
Returns#
type | description |
---|
KeySchema [] | Array of matched key |
getUser()
#
- Must select unique
user
where user(id)
equals parameter userId
- Must return target
user
or null
if there are no matches
const getUser: (userId: string) => Promise<UserSchema | null>;
Parameters#
name | type | description |
---|
userId | string | Unique target user(id) |
Returns#
setKey()
#
- Must create new
key
- Must throw error
AUTH_DUPLICATE_KEY_ID
if key(id)
violates unique constraint
- May throw
AUTH_INVALID_USER_ID
if key(user_id)
violates foreign key constraint
const setKey: (key: KeySchema) => Promise<void>;
Parameters#
setUser()
#
- Must create new
user
- Must create new
key
if parameter key
is defined
- Must throw error
AUTH_DUPLICATE_KEY_ID
if key(id)
violates unique constraint, if parameter key
is defined
key
must not be created if user
creation errors
const setUser: (user: UserSchema, key: KeySchema | null) => Promise<void>;
Parameters#
updateKey()
#
- Must update fields, defined in parameter
partialKey
, of unique key
where key(id)
equals parameter keyId
- Must return
void
- May throw error
AUTH_INVALID_KEY_ID
if target key
does not exist
const updateKey: (
keyId: string,
partialKey: Partial<KeySchema>
) => Promise<void>;
Parameters#
name | type | description |
---|
keyId | string | Unique target key(id) |
partialKey | Partial< KeySchema > | key fields to update |
updateUser()
#
- Must update fields, defined in parameter
partialKey
, of unique user
where user(id)
equals parameter userId
- Must return
void
- May throw error
AUTH_INVALID_USER_ID
if target key
does not exist
const updateUser: (
userId: string,
partialUser: Partial<UserSchema>
) => Promise<void>;
Parameters#
name | type | description |
---|
userId | string | Unique target user(id) |
partialUser | Partial< UserSchema > | user fields to update |
SessionAdapter
#
type SessionAdapter = Readonly<{
getSession: (sessionId: string) => Promise<SessionSchema | null>;
getSessionsByUserId: (userId: string) => Promise<SessionSchema[]>;
setSession: (session: SessionSchema) => Promise<void>;
updateSession: (
sessionId: string,
partialSession: Partial<SessionSchema>
) => Promise<void>;
deleteSession: (sessionId: string) => Promise<void>;
deleteSessionsByUserId: (userId: string) => Promise<void>;
}>;
deleteSession()
#
- Must delete unique
session
where session(id)
equals parameter sessionId
- Returns
void
- Parameter
sessionId
may be invalid and must not throw errors if invalid
- Invalid
sessionId
must be ignored and no errors should be thrown
const deleteSession: (sessionId: string) => Promise<void>;
Parameters#
name | type | description |
---|
sessionId | string | Unique target session(id) |
deleteSessionsByUserId()
#
- Must delete multiple
session
where session(user_id)
equals parameter userId
- Must return
void
- Parameter
userId
may be invalid and must not throw errors if invalid
- Invalid
userId
must be ignored and no errors should be thrown
const deleteSessionsByUserId: (userId: string) => Promise<void>;
Parameters#
name | type | description |
---|
userId | string | Target session(user_id) |
getSession()
#
- Must select unique
session
where session(id)
equals parameter sessionId
- Must return target
session
or null
if there are no matches
const getSession: (sessionId: string) => Promise<SessionSchema | null>;
Parameters#
name | type | description |
---|
sessionId | string | Unique target session(id) |
Returns#
getSessionsByUserId()
#
- Must select multiple
session
where session(user_id)
equals parameter userId
- Must return an array of
session
or an empty array if there are no matches
const getSessionsByUserId: (userId: string) => Promise<SessionSchema[]>;
Parameters#
name | type | description |
---|
userId | string | Target session(user_id) |
Returns#
setSession()
#
- Must create new
session
- May throw
AUTH_INVALID_USER_ID
if session(user_id)
violates foreign key constraint
const setSession: (session: SessionSchema) => Promise<void>;
Parameters#
updateSession()
#
- Must update fields, defined in parameter
partialSession
, of unique session
where session(id)
equals parameter keyId
- Must return
void
- May throw error
AUTH_INVALID_SESSION_ID
if target session
does not exist
const updateSession: (
keyId: string,
partialKey: Partial<SessionSchema>
) => Promise<void>;
Parameters#
name | type | description |
---|
sessionId | string | Unique target session(id) |
partialSession | Partial< SessionSchema > | session fields to update |