From 4bd35d3390ec80139384cf96f86bfa3bdfade4aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=AA=E3=82=B9=E3=82=AB=E3=83=BC=E3=80=81?= Date: Sun, 12 Jan 2025 18:14:38 +0900 Subject: [PATCH] fix: maybe there was some problem --- src/backend/controllers/announcement.ts | 46 ++++++++++++++++++------- src/backend/services/misskey.ts | 2 +- src/backend/services/send-alert.ts | 5 ++- 3 files changed, 37 insertions(+), 16 deletions(-) diff --git a/src/backend/controllers/announcement.ts b/src/backend/controllers/announcement.ts index 31a60cf..49ff8a3 100644 --- a/src/backend/controllers/announcement.ts +++ b/src/backend/controllers/announcement.ts @@ -3,7 +3,7 @@ * @author Xeltica */ -import { BadRequestError, Body, CurrentUser, Delete, Get, JsonController, NotFoundError, OnUndefined, Param, Post, Put } from 'routing-controllers'; +import { BadRequestError, ForbiddenError, Body, CurrentUser, Delete, Get, JsonController, NotFoundError, OnUndefined, Param, Post, Put } from 'routing-controllers'; import { IUser } from '../../common/types/user.js'; import { Announcements } from '../models/index.js'; import { AnnounceCreate } from './body/announce-create.js'; @@ -22,7 +22,7 @@ export class AnnouncementController { @OnUndefined(204) @Post() async post(@CurrentUser({ required: true }) user: IUser, @Body({required: true}) {title, body}: AnnounceCreate) { if (!user.isAdmin) { - throw new BadRequestError('Not an Admin'); + throw new ForbiddenError('Not an Admin'); } if (!title || !body) { throw new BadRequestError(); @@ -37,12 +37,19 @@ export class AnnouncementController { @OnUndefined(204) @Put() async update(@CurrentUser({ required: true }) user: IUser, @Body() {id, title, body}: AnnounceUpdate) { if (!user.isAdmin) { - throw new BadRequestError('Not an Admin'); + throw new ForbiddenError('Not an Admin'); } + if (!id || !title || !body) { throw new BadRequestError(); } - if (!(await Announcements.findOne(id))) { + + const idNumber = Number(id); + if (isNaN(idNumber)) { + throw new BadRequestError(); + } + + if (!(await Announcements.findOne(idNumber))) { throw new NotFoundError(); } @@ -55,18 +62,19 @@ export class AnnouncementController { @OnUndefined(204) @Post('/like/:id') async like(@CurrentUser({ required: true }) user: IUser, @Param('id') id: string) { if (!user.isAdmin) { - throw new BadRequestError('Not an Admin'); - } - const idNumber = Number(id); - if (isNaN(idNumber)) { - throw new NotFoundError(); + throw new ForbiddenError('Not an Admin'); } + if (!id) { throw new BadRequestError(); } - const announcement = await Announcements.findOne(Number(idNumber)); + const idNumber = Number(id); + if (isNaN(idNumber)) { + throw new BadRequestError(); + } + const announcement = await Announcements.findOne(idNumber); if (!announcement) { throw new NotFoundError(); } @@ -80,20 +88,34 @@ export class AnnouncementController { @Delete() async delete(@CurrentUser({ required: true }) user: IUser, @Body() {id}: IdProp) { if (!user.isAdmin) { - throw new BadRequestError('Not an Admin'); + throw new ForbiddenError('Not an Admin'); } if (!id) { throw new BadRequestError(); } + const idNumber = Number(id); + if (isNaN(idNumber)) { + throw new BadRequestError(); + } + + const announcement = await Announcements.findOne(idNumber); + if (!announcement) { + throw new NotFoundError(); + } + await Announcements.delete(id); } @Get('/:id') async getDetail(@Param('id') id: string) { + if (!id) { + throw new BadRequestError(); + } + const idNumber = Number(id); if (isNaN(idNumber)) { - throw new NotFoundError(); + throw new BadRequestError(); } const announcement = await Announcements.findOne(idNumber); if (!announcement) { diff --git a/src/backend/services/misskey.ts b/src/backend/services/misskey.ts index 8dce3dc..e05fa50 100644 --- a/src/backend/services/misskey.ts +++ b/src/backend/services/misskey.ts @@ -18,7 +18,7 @@ export const api = async = Record(`https://${host}/api/${endpoint}`, a).then(res => res.data); } catch (e) { - printLog(`전송 오류: ${host}/api/${endpoint} - 재시도 중 (${i + 1} / ${RETRY_COUNT})\n${e}`, 'error'); + printLog(`API 오류: ${host}/api/${endpoint} - 재시도 중 (${i + 1} / ${RETRY_COUNT})\n${e}`, 'error'); await delay(3000); continue; } diff --git a/src/backend/services/send-alert.ts b/src/backend/services/send-alert.ts index 975275e..7dfe17e 100644 --- a/src/backend/services/send-alert.ts +++ b/src/backend/services/send-alert.ts @@ -34,9 +34,8 @@ export const sendAlert = async (user: User) => { export const sendNoteAlert = async (text: string, user: User) => { const res = await api>(user.host, 'notes/create', { text, - visibility: user.visibility, - localOnly: user.localOnly, - remoteFollowersOnly: user.remoteFollowersOnly, + visibility: user.visibility === 'users' ? 'specified' : user.visibility, + localOnly: user.localOnly }, user.token); if (res.error) {