完成博客权限修改

This commit is contained in:
2025-06-23 00:07:23 +08:00
parent a38463837f
commit edc605fb62
10 changed files with 178 additions and 2 deletions

View File

@@ -11,7 +11,10 @@ import {
UseGuards,
} from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { UpdatePasswordDto } from 'src/admin/dto/admin-user/update-password.dto';
import { CreateBlogDto } from 'src/admin/dto/admin-web/create-blog.dto';
import { SetBlogPasswordDto } from 'src/admin/dto/admin-web/set-blog-password.dto';
import { UpdateBlogDto } from 'src/admin/dto/admin-web/update-blog.dto';
import { Role } from 'src/auth/role.enum';
import { BlogPermission } from 'src/blog/Blog.Permission.enum';
import { BlogService } from 'src/blog/blog.service';
@@ -38,11 +41,19 @@ export class AdminWebBlogController {
@Put(':id')
async update(
@Param('id', new ParseUUIDPipe({ version: '4' })) id: string,
@Body() dto: CreateBlogDto,
@Body() dto: UpdateBlogDto,
) {
return this.adminWebBlogService.update(id, dto);
}
@Post(':id/password')
async setPassword(
@Param('id', new ParseUUIDPipe({ version: '4' })) id: string,
@Body() dto: SetBlogPasswordDto,
) {
return this.adminWebBlogService.setPassword(id, dto.password);
}
@Get(':id')
async get(@Param('id', new ParseUUIDPipe({ version: '4' })) id: string) {
return this.adminWebBlogService.findById(id);

View File

@@ -0,0 +1,6 @@
import { IsString } from "class-validator";
export class SetBlogPasswordDto {
@IsString()
password: string;
}

View File

@@ -0,0 +1,16 @@
import { IsEnum, IsString } from 'class-validator';
import { BlogPermission } from 'src/blog/Blog.Permission.enum';
export class UpdateBlogDto {
@IsString()
title: string;
@IsString()
description: string;
@IsString()
contentUrl: string;
@IsEnum(BlogPermission, { each: true, message: '请求类型错误' })
permissions: BlogPermission[];
}

View File

@@ -36,6 +36,18 @@ export class BlogService {
return this.blogRepository.save(newBlog);
}
async setPassword(id: string, password: string) {
const blog = await this.findById(id);
if (!blog) {
throw new Error('博客不存在');
}
return (await this.blogRepository.update(id, {
...blog,
password_hash: createHash('sha256').update(`${password}`).digest('hex'),
})).affected > 0;
}
async update(id: string, blog: Partial<Blog>) {
await this.blogRepository.update(id, blog);
return this.blogRepository.findOneBy({ id });