import User from '#user/models/user'; import { AccessToken } from '@adonisjs/auth/access_tokens'; type CreateTokenParams = { name: string; expiresAt?: Date; }; export class ApiTokenService { createToken(user: User, { name, expiresAt }: CreateTokenParams) { const expiresIn = expiresAt ? expiresAt.getTime() - Date.now() : undefined; return User.accessTokens.create(user, undefined, { name, expiresIn, }); } getTokens(user: User) { return User.accessTokens.all(user); } revokeToken(user: User, identifier: number) { return User.accessTokens.delete(user, identifier); } validateToken(token: AccessToken) { return User.accessTokens.verify(token.value!); } getTokenByValue(user: User, value: string) { return User.accessTokens.find(user, value); } }