mirror of
https://github.com/Sonny93/my-links.git
synced 2025-12-08 14:43:24 +00:00
46 lines
1.3 KiB
TypeScript
46 lines
1.3 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';
|
|
|
|
@inject()
|
|
export default class ApiTokenController {
|
|
constructor(private apiTokenService: ApiTokenService) {}
|
|
|
|
async store({ request, response, auth, session }: HttpContext) {
|
|
const { name, expiresAt } = await request.validateUsing(
|
|
createApiTokenValidator
|
|
);
|
|
const token = await this.apiTokenService.createToken(auth.user!, {
|
|
name,
|
|
expiresAt,
|
|
});
|
|
session.flash('token', {
|
|
...token.toJSON(),
|
|
token: token.value?.release(),
|
|
identifier: token.identifier,
|
|
});
|
|
return response.redirect().withQs().back();
|
|
}
|
|
|
|
async destroy({ request, response, auth }: HttpContext) {
|
|
const { params } = await request.validateUsing(deleteApiTokenValidator);
|
|
const tokenId = params.tokenId;
|
|
|
|
const token = await this.apiTokenService.getTokenByValue(
|
|
auth.user!,
|
|
tokenId
|
|
);
|
|
if (!token) {
|
|
return response.notFound();
|
|
}
|
|
|
|
await this.apiTokenService.revokeToken(
|
|
auth.user!,
|
|
Number(token.identifier)
|
|
);
|
|
return response.redirect().withQs().back();
|
|
}
|
|
}
|