UNPKG

@adonisjs/auth

Version:

Official authentication provider for Adonis framework

131 lines (130 loc) 4.85 kB
import { type Secret } from '@adonisjs/core/helpers'; import { type RememberMeToken } from '../remember_me_token.ts'; import { PROVIDER_REAL_USER } from '../../../src/symbols.ts'; import type { SessionGuardUser, LucidAuthenticatable, SessionLucidUserProviderOptions, SessionUserProviderContract } from '../types.ts'; /** * Uses a lucid model to verify access tokens and find a user during * authentication * * @template UserModel - The Lucid model representing the user * * @example * const userProvider = new SessionLucidUserProvider({ * model: () => import('#models/user') * }) */ export declare class SessionLucidUserProvider<UserModel extends LucidAuthenticatable> implements SessionUserProviderContract<InstanceType<UserModel>> { /** * Lucid provider options */ protected options: SessionLucidUserProviderOptions<UserModel>; [PROVIDER_REAL_USER]: InstanceType<UserModel>; /** * Reference to the lazily imported model */ protected model?: UserModel; /** * Creates a new SessionLucidUserProvider instance * * @param options - Configuration options for the user provider * * @example * const provider = new SessionLucidUserProvider({ * model: () => import('#models/user') * }) */ constructor( /** * Lucid provider options */ options: SessionLucidUserProviderOptions<UserModel>); /** * Imports the model from the provider, returns and caches it * for further operations. * * @example * const UserModel = await provider.getModel() * const user = await UserModel.find(1) */ protected getModel(): Promise<UserModel>; /** * Returns the tokens provider associated with the user model * * @example * const tokensProvider = await provider.getTokensProvider() * const token = await tokensProvider.create(user, '7d') */ protected getTokensProvider(): Promise<import("../types.ts").RememberMeTokensProviderContract<import("@adonisjs/lucid/types/model").LucidModel>>; /** * Creates an adapter user for the guard * * @param user - The user model instance * * @example * const guardUser = await provider.createUserForGuard(user) * console.log('User ID:', guardUser.getId()) * console.log('Original user:', guardUser.getOriginal()) */ createUserForGuard(user: InstanceType<UserModel>): Promise<SessionGuardUser<InstanceType<UserModel>>>; /** * Finds a user by their primary key value * * @param identifier - The user identifier to search for * * @example * const guardUser = await provider.findById(123) * if (guardUser) { * const originalUser = guardUser.getOriginal() * console.log('Found user:', originalUser.email) * } */ findById(identifier: string | number | BigInt): Promise<SessionGuardUser<InstanceType<UserModel>> | null>; /** * Creates a remember token for a given user * * @param user - The user to create a token for * @param expiresIn - Token expiration time * * @example * const token = await provider.createRememberToken(user, '30d') * console.log('Remember token:', token.value.release()) */ createRememberToken(user: InstanceType<UserModel>, expiresIn: string | number): Promise<RememberMeToken>; /** * Verify a token by its publicly shared value * * @param tokenValue - The token value to verify * * @example * const token = await provider.verifyRememberToken( * new Secret('rmt_abc123.def456') * ) * if (token && !token.isExpired()) { * console.log('Valid remember token for user:', token.tokenableId) * } */ verifyRememberToken(tokenValue: Secret<string>): Promise<RememberMeToken | null>; /** * Delete a token for a user by the token identifier * * @param user - The user that owns the token * @param identifier - The token identifier to delete * * @example * const deletedCount = await provider.deleteRemeberToken(user, 123) * console.log('Deleted tokens:', deletedCount) */ deleteRemeberToken(user: InstanceType<UserModel>, identifier: string | number | BigInt): Promise<number>; /** * Recycle a token for a user by the token identifier * * @param user - The user that owns the token * @param identifier - The token identifier to recycle * @param expiresIn - New expiration time * * @example * const newToken = await provider.recycleRememberToken(user, 123, '30d') * console.log('Recycled token:', newToken.value.release()) */ recycleRememberToken(user: InstanceType<UserModel>, identifier: string | number | BigInt, expiresIn: string | number): Promise<RememberMeToken>; }