mirror of
https://github.com/Sonny93/my-links.git
synced 2025-12-08 22:53:25 +00:00
feat: add user token management
This commit is contained in:
32
app/user/controllers/api_token_controller.ts
Normal file
32
app/user/controllers/api_token_controller.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user