Files
my-links/app/user/controllers/api_token_controller.ts
2025-08-21 16:39:02 +02:00

33 lines
1.1 KiB
TypeScript

import { ApiTokenService } from '#user/services/api_token_service';
import { createApiTokenValidator } from '#user/validators/token/create_api_token';
import { deleteApiTokenValidator } from '#user/validators/token/delete_api_token';
import { inject } from '@adonisjs/core';
import { HttpContext } from '@adonisjs/core/http';
import { DateTime } from 'luxon';
@inject()
export default class ApiTokenController {
constructor(private apiTokenService: ApiTokenService) {}
async store({ request, response, auth }: HttpContext) {
const { name, expiresAt } = await request.validateUsing(
createApiTokenValidator
);
await this.apiTokenService.createToken({
user: auth.user!,
name,
expiresAt: expiresAt ? DateTime.fromJSDate(expiresAt) : undefined,
});
return response.redirect().withQs().back();
}
async destroy({ request, response, auth }: HttpContext) {
const { params } = await request.validateUsing(deleteApiTokenValidator);
const tokenId = params.tokenId;
await this.apiTokenService.revokeToken(tokenId, auth.user!.id);
return response.redirect().withQs().back();
}
}