track requesters for builds releases deployments and migrations
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
@@ -1,13 +1,39 @@
|
||||
import { Body, Controller, Post, Req } from '@nestjs/common';
|
||||
import { Body, Controller, Delete, Get, Patch, Post, Put, Req } from '@nestjs/common';
|
||||
import type { Request } from 'express';
|
||||
|
||||
import { AdminAuthService } from './admin-auth.service';
|
||||
import { Public } from './decorators/admin-auth.decorators';
|
||||
import { AdminLoginDto } from './dto';
|
||||
import { AdminLoginDto, ChangeAdminPasswordDto } from './dto';
|
||||
|
||||
@Controller('auth/admin')
|
||||
export class AdminAuthController {
|
||||
constructor(private readonly adminAuthService: AdminAuthService) {}
|
||||
|
||||
@Get('me')
|
||||
me(@Req() request: { admin?: { id: string } }) {
|
||||
return this.adminAuthService.me(request.admin!.id);
|
||||
}
|
||||
|
||||
@Put('avatar')
|
||||
async updateAvatar(@Req() request: Request & { admin?: { id: string } }) {
|
||||
const mimeType = String(request.headers['content-type'] ?? '').split(';')[0].trim().toLowerCase();
|
||||
const imageData = await readRequestBody(request);
|
||||
return this.adminAuthService.updateAvatar(request.admin!.id, imageData, mimeType);
|
||||
}
|
||||
|
||||
@Delete('avatar')
|
||||
deleteAvatar(@Req() request: { admin?: { id: string } }) {
|
||||
return this.adminAuthService.deleteAvatar(request.admin!.id);
|
||||
}
|
||||
|
||||
@Patch('password')
|
||||
changePassword(
|
||||
@Req() request: { admin?: { id: string } },
|
||||
@Body() body: ChangeAdminPasswordDto,
|
||||
) {
|
||||
return this.adminAuthService.changePassword(request.admin!.id, body);
|
||||
}
|
||||
|
||||
@Public()
|
||||
@Post('login')
|
||||
login(
|
||||
@@ -22,3 +48,15 @@ export class AdminAuthController {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function readRequestBody(request: Request) {
|
||||
return new Promise<Buffer>((resolve, reject) => {
|
||||
const chunks: Buffer[] = [];
|
||||
|
||||
request.on('data', (chunk: Buffer | string) => {
|
||||
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
||||
});
|
||||
request.on('end', () => resolve(Buffer.concat(chunks)));
|
||||
request.on('error', reject);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user