summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/admin
diff options
context:
space:
mode:
authorMarie <Marie@kaifa.ch>2023-12-23 02:09:23 +0100
committerMarie <Marie@kaifa.ch>2023-12-23 02:09:23 +0100
commit5db583a3eb61d50de14d875ebf7ecef20490e313 (patch)
tree783dd43d2ac660c32e745a4485d499e9ddc43324 /packages/backend/src/server/api/endpoints/admin
parentadd: Custom MOTDs (diff)
parentUpdate CHANGELOG.md (diff)
downloadsharkey-5db583a3eb61d50de14d875ebf7ecef20490e313.tar.gz
sharkey-5db583a3eb61d50de14d875ebf7ecef20490e313.tar.bz2
sharkey-5db583a3eb61d50de14d875ebf7ecef20490e313.zip
merge: upstream
Diffstat (limited to 'packages/backend/src/server/api/endpoints/admin')
-rw-r--r--packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/accounts/create.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/accounts/delete.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/accounts/find-by-email.ts7
-rw-r--r--packages/backend/src/server/api/endpoints/admin/ad/create.ts21
-rw-r--r--packages/backend/src/server/api/endpoints/admin/ad/delete.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/ad/list.ts32
-rw-r--r--packages/backend/src/server/api/endpoints/admin/ad/update.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/announcements/create.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/announcements/delete.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/announcements/list.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/announcements/update.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/avatar-decorations/create.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/avatar-decorations/delete.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/avatar-decorations/list.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/avatar-decorations/update.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/delete-account.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/drive/clean-remote-files.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/drive/cleanup.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/drive/files.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/drive/show-file.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/add.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/copy.ts42
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/delete.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/list.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/set-license-bulk.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/update.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/federation/delete-all-files.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/federation/remove-all-following.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/get-index-stats.ts12
-rw-r--r--packages/backend/src/server/api/endpoints/admin/get-table-stats.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/get-user-ips.ts21
-rw-r--r--packages/backend/src/server/api/endpoints/admin/invite/create.ts10
-rw-r--r--packages/backend/src/server/api/endpoints/admin/invite/list.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/admin/meta.ts88
-rw-r--r--packages/backend/src/server/api/endpoints/admin/promo/create.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/queue/clear.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/queue/deliver-delayed.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/queue/inbox-delayed.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/queue/promote.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/queue/stats.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/relays/add.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/relays/list.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/relays/remove.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/reset-password.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/roles/assign.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/roles/create.ts8
-rw-r--r--packages/backend/src/server/api/endpoints/admin/roles/delete.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/roles/list.ts12
-rw-r--r--packages/backend/src/server/api/endpoints/admin/roles/show.ts8
-rw-r--r--packages/backend/src/server/api/endpoints/admin/roles/unassign.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/roles/update-default-policies.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/roles/update.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/roles/users.ts18
-rw-r--r--packages/backend/src/server/api/endpoints/admin/send-email.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/server-info.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/show-moderation-logs.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/admin/show-user.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/show-users.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/suspend-user.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/unset-user-avatar.ts62
-rw-r--r--packages/backend/src/server/api/endpoints/admin/unset-user-banner.ts62
-rw-r--r--packages/backend/src/server/api/endpoints/admin/unsuspend-user.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/update-meta.ts16
-rw-r--r--packages/backend/src/server/api/endpoints/admin/update-user-note.ts2
76 files changed, 508 insertions, 38 deletions
diff --git a/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts b/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts
index be4fc82f0c..484118cd46 100644
--- a/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts
+++ b/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts
@@ -13,6 +13,8 @@ import { AbuseUserReportEntityService } from '@/core/entities/AbuseUserReportEnt
export const meta = {
tags: ['admin'],
+ kind: 'read:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/accounts/create.ts b/packages/backend/src/server/api/endpoints/admin/accounts/create.ts
index 070e88f6f3..07f24d2995 100644
--- a/packages/backend/src/server/api/endpoints/admin/accounts/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/accounts/create.ts
@@ -15,6 +15,8 @@ import { DI } from '@/di-symbols.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
res: {
type: 'object',
optional: false, nullable: false,
diff --git a/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts b/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts
index 60e928ccbe..86f4b0709b 100644
--- a/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts
+++ b/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts
@@ -14,6 +14,8 @@ import { UserEntityService } from '@/core/entities/UserEntityService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireAdmin: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/accounts/find-by-email.ts b/packages/backend/src/server/api/endpoints/admin/accounts/find-by-email.ts
index 686341582b..bc292fd53a 100644
--- a/packages/backend/src/server/api/endpoints/admin/accounts/find-by-email.ts
+++ b/packages/backend/src/server/api/endpoints/admin/accounts/find-by-email.ts
@@ -13,6 +13,8 @@ import { ApiError } from '@/server/api/error.js';
export const meta = {
tags: ['admin'],
+ kind: 'read:admin',
+
requireCredential: true,
requireAdmin: true,
@@ -23,6 +25,11 @@ export const meta = {
id: 'cb865949-8af5-4062-a88c-ef55e8786d1d',
},
},
+ res: {
+ type: 'object',
+ optional: false, nullable: false,
+ ref: 'User',
+ },
} as const;
export const paramDef = {
diff --git a/packages/backend/src/server/api/endpoints/admin/ad/create.ts b/packages/backend/src/server/api/endpoints/admin/ad/create.ts
index 17f792639b..087ae4befc 100644
--- a/packages/backend/src/server/api/endpoints/admin/ad/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/ad/create.ts
@@ -13,8 +13,16 @@ import { ModerationLogService } from '@/core/ModerationLogService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
+ res: {
+ type: 'object',
+ optional: false,
+ nullable: false,
+ ref: 'Ad',
+ },
} as const;
export const paramDef = {
@@ -61,7 +69,18 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
ad: ad,
});
- return ad;
+ return {
+ id: ad.id,
+ expiresAt: ad.expiresAt.toISOString(),
+ startsAt: ad.startsAt.toISOString(),
+ dayOfWeek: ad.dayOfWeek,
+ url: ad.url,
+ imageUrl: ad.imageUrl,
+ priority: ad.priority,
+ ratio: ad.ratio,
+ place: ad.place,
+ memo: ad.memo,
+ };
});
}
}
diff --git a/packages/backend/src/server/api/endpoints/admin/ad/delete.ts b/packages/backend/src/server/api/endpoints/admin/ad/delete.ts
index 8097133a4c..ba655a6aa3 100644
--- a/packages/backend/src/server/api/endpoints/admin/ad/delete.ts
+++ b/packages/backend/src/server/api/endpoints/admin/ad/delete.ts
@@ -13,6 +13,8 @@ import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/ad/list.ts b/packages/backend/src/server/api/endpoints/admin/ad/list.ts
index 29eff89523..12528917dc 100644
--- a/packages/backend/src/server/api/endpoints/admin/ad/list.ts
+++ b/packages/backend/src/server/api/endpoints/admin/ad/list.ts
@@ -12,8 +12,21 @@ import { DI } from '@/di-symbols.js';
export const meta = {
tags: ['admin'],
+ kind: 'read:admin',
+
requireCredential: true,
requireModerator: true,
+ res: {
+ type: 'array',
+ optional: false,
+ nullable: false,
+ items: {
+ type: 'object',
+ optional: false,
+ nullable: false,
+ ref: 'Ad',
+ },
+ },
} as const;
export const paramDef = {
@@ -22,7 +35,7 @@ export const paramDef = {
limit: { type: 'integer', minimum: 1, maximum: 100, default: 10 },
sinceId: { type: 'string', format: 'misskey:id' },
untilId: { type: 'string', format: 'misskey:id' },
- publishing: { type: 'boolean', default: false },
+ publishing: { type: 'boolean', default: null, nullable: true },
},
required: [],
} as const;
@@ -37,12 +50,25 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
) {
super(meta, paramDef, async (ps, me) => {
const query = this.queryService.makePaginationQuery(this.adsRepository.createQueryBuilder('ad'), ps.sinceId, ps.untilId);
- if (ps.publishing) {
+ if (ps.publishing === true) {
query.andWhere('ad.expiresAt > :now', { now: new Date() }).andWhere('ad.startsAt <= :now', { now: new Date() });
+ } else if (ps.publishing === false) {
+ query.andWhere('ad.expiresAt <= :now', { now: new Date() }).orWhere('ad.startsAt > :now', { now: new Date() });
}
const ads = await query.limit(ps.limit).getMany();
- return ads;
+ return ads.map(ad => ({
+ id: ad.id,
+ expiresAt: ad.expiresAt.toISOString(),
+ startsAt: ad.startsAt.toISOString(),
+ dayOfWeek: ad.dayOfWeek,
+ url: ad.url,
+ imageUrl: ad.imageUrl,
+ memo: ad.memo,
+ place: ad.place,
+ priority: ad.priority,
+ ratio: ad.ratio,
+ }));
});
}
}
diff --git a/packages/backend/src/server/api/endpoints/admin/ad/update.ts b/packages/backend/src/server/api/endpoints/admin/ad/update.ts
index d065f9ec50..b83c163004 100644
--- a/packages/backend/src/server/api/endpoints/admin/ad/update.ts
+++ b/packages/backend/src/server/api/endpoints/admin/ad/update.ts
@@ -13,6 +13,8 @@ import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/create.ts b/packages/backend/src/server/api/endpoints/admin/announcements/create.ts
index 69c31a05eb..fb432336e4 100644
--- a/packages/backend/src/server/api/endpoints/admin/announcements/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/announcements/create.ts
@@ -10,6 +10,8 @@ import { AnnouncementService } from '@/core/AnnouncementService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts b/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts
index 80ec281253..e84e63c666 100644
--- a/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts
+++ b/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts
@@ -13,6 +13,8 @@ import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/list.ts b/packages/backend/src/server/api/endpoints/admin/announcements/list.ts
index 9630299a6e..e98ef0b169 100644
--- a/packages/backend/src/server/api/endpoints/admin/announcements/list.ts
+++ b/packages/backend/src/server/api/endpoints/admin/announcements/list.ts
@@ -14,6 +14,8 @@ import { IdService } from '@/core/IdService.js';
export const meta = {
tags: ['admin'],
+ kind: 'read:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/update.ts b/packages/backend/src/server/api/endpoints/admin/announcements/update.ts
index 717866aead..e2ec344899 100644
--- a/packages/backend/src/server/api/endpoints/admin/announcements/update.ts
+++ b/packages/backend/src/server/api/endpoints/admin/announcements/update.ts
@@ -13,6 +13,8 @@ import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/avatar-decorations/create.ts b/packages/backend/src/server/api/endpoints/admin/avatar-decorations/create.ts
index ec143fcb53..158435ed21 100644
--- a/packages/backend/src/server/api/endpoints/admin/avatar-decorations/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/avatar-decorations/create.ts
@@ -10,6 +10,8 @@ import { AvatarDecorationService } from '@/core/AvatarDecorationService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageAvatarDecorations',
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/avatar-decorations/delete.ts b/packages/backend/src/server/api/endpoints/admin/avatar-decorations/delete.ts
index 6f1f386871..06083cc180 100644
--- a/packages/backend/src/server/api/endpoints/admin/avatar-decorations/delete.ts
+++ b/packages/backend/src/server/api/endpoints/admin/avatar-decorations/delete.ts
@@ -12,6 +12,8 @@ import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageAvatarDecorations',
errors: {
diff --git a/packages/backend/src/server/api/endpoints/admin/avatar-decorations/list.ts b/packages/backend/src/server/api/endpoints/admin/avatar-decorations/list.ts
index d9c669377d..49a8718bce 100644
--- a/packages/backend/src/server/api/endpoints/admin/avatar-decorations/list.ts
+++ b/packages/backend/src/server/api/endpoints/admin/avatar-decorations/list.ts
@@ -15,6 +15,8 @@ import { AvatarDecorationService } from '@/core/AvatarDecorationService.js';
export const meta = {
tags: ['admin'],
+ kind: 'read:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageAvatarDecorations',
diff --git a/packages/backend/src/server/api/endpoints/admin/avatar-decorations/update.ts b/packages/backend/src/server/api/endpoints/admin/avatar-decorations/update.ts
index 5ea9a40762..3d8f3d63de 100644
--- a/packages/backend/src/server/api/endpoints/admin/avatar-decorations/update.ts
+++ b/packages/backend/src/server/api/endpoints/admin/avatar-decorations/update.ts
@@ -12,6 +12,8 @@ import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageAvatarDecorations',
diff --git a/packages/backend/src/server/api/endpoints/admin/delete-account.ts b/packages/backend/src/server/api/endpoints/admin/delete-account.ts
index 9ef09b172e..adc446d14b 100644
--- a/packages/backend/src/server/api/endpoints/admin/delete-account.ts
+++ b/packages/backend/src/server/api/endpoints/admin/delete-account.ts
@@ -12,6 +12,8 @@ import { DI } from '@/di-symbols.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireAdmin: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts b/packages/backend/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
index e47ecd81cf..1fdbbfb12e 100644
--- a/packages/backend/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
+++ b/packages/backend/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
@@ -12,6 +12,8 @@ import { DI } from '@/di-symbols.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireAdmin: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/drive/clean-remote-files.ts b/packages/backend/src/server/api/endpoints/admin/drive/clean-remote-files.ts
index 8af44029c5..3f23319a5f 100644
--- a/packages/backend/src/server/api/endpoints/admin/drive/clean-remote-files.ts
+++ b/packages/backend/src/server/api/endpoints/admin/drive/clean-remote-files.ts
@@ -10,6 +10,8 @@ import { QueueService } from '@/core/QueueService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/drive/cleanup.ts b/packages/backend/src/server/api/endpoints/admin/drive/cleanup.ts
index 75d689966f..fd8fa46a47 100644
--- a/packages/backend/src/server/api/endpoints/admin/drive/cleanup.ts
+++ b/packages/backend/src/server/api/endpoints/admin/drive/cleanup.ts
@@ -13,6 +13,8 @@ import { DI } from '@/di-symbols.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/drive/files.ts b/packages/backend/src/server/api/endpoints/admin/drive/files.ts
index ac8a70e3da..816bbfbc45 100644
--- a/packages/backend/src/server/api/endpoints/admin/drive/files.ts
+++ b/packages/backend/src/server/api/endpoints/admin/drive/files.ts
@@ -13,6 +13,8 @@ import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.j
export const meta = {
tags: ['admin'],
+ kind: 'read:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts b/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts
index 4e5320007e..61cb843558 100644
--- a/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts
+++ b/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts
@@ -14,6 +14,8 @@ import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
+ kind: 'read:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts
index 66ee4cab3b..5333adb624 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts
@@ -10,6 +10,8 @@ import { CustomEmojiService } from '@/core/CustomEmojiService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageCustomEmojis',
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/add.ts b/packages/backend/src/server/api/endpoints/admin/emoji/add.ts
index 58600c0eb3..7e484c612b 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/add.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/add.ts
@@ -14,6 +14,8 @@ import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageCustomEmojis',
@@ -29,6 +31,8 @@ export const meta = {
id: 'f7a3462c-4e6e-4069-8421-b9bd4f4c3975',
},
},
+
+ ref: 'EmojiDetailed',
} as const;
export const paramDef = {
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts b/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts
index 9348e279f1..a24c72b9b8 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts
@@ -7,17 +7,18 @@ import { Inject, Injectable } from '@nestjs/common';
import { IsNull } from 'typeorm';
import { Endpoint } from '@/server/api/endpoint-base.js';
import type { EmojisRepository } from '@/models/_.js';
-import { IdService } from '@/core/IdService.js';
import type { MiDriveFile } from '@/models/DriveFile.js';
import { DI } from '@/di-symbols.js';
import { DriveService } from '@/core/DriveService.js';
-import { GlobalEventService } from '@/core/GlobalEventService.js';
+import { CustomEmojiService } from '@/core/CustomEmojiService.js';
import { EmojiEntityService } from '@/core/entities/EmojiEntityService.js';
import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageCustomEmojis',
@@ -62,50 +63,43 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
constructor(
@Inject(DI.emojisRepository)
private emojisRepository: EmojisRepository,
-
private emojiEntityService: EmojiEntityService,
- private idService: IdService,
- private globalEventService: GlobalEventService,
+ private customEmojiService: CustomEmojiService,
private driveService: DriveService,
) {
super(meta, paramDef, async (ps, me) => {
const emoji = await this.emojisRepository.findOneBy({ id: ps.emojiId });
-
if (emoji == null) {
throw new ApiError(meta.errors.noSuchEmoji);
}
- const isDuplicate = await this.emojisRepository.findOneBy({ name: emoji.name, host: IsNull() } );
- if (isDuplicate) throw new ApiError(meta.errors.duplicateName);
-
let driveFile: MiDriveFile;
try {
// Create file
driveFile = await this.driveService.uploadFromUrl({ url: emoji.originalUrl, user: null, force: true });
} catch (e) {
+ // TODO: need to return Drive Error
throw new ApiError();
}
- const copied = await this.emojisRepository.insert({
- id: this.idService.gen(),
- updatedAt: new Date(),
+ // Duplication Check
+ const isDuplicate = await this.customEmojiService.checkDuplicate(emoji.name);
+ if (isDuplicate) throw new ApiError(meta.errors.duplicateName);
+
+ const addedEmoji = await this.customEmojiService.add({
+ driveFile,
name: emoji.name,
+ category: emoji.category,
+ aliases: emoji.aliases,
host: null,
- aliases: [],
- originalUrl: driveFile.url,
- publicUrl: driveFile.webpublicUrl ?? driveFile.url,
- type: driveFile.webpublicType ?? driveFile.type,
license: emoji.license,
- }).then(x => this.emojisRepository.findOneByOrFail(x.identifiers[0]));
-
- this.globalEventService.publishBroadcastStream('emojiAdded', {
- emoji: await this.emojiEntityService.packDetailed(copied.id),
- });
+ isSensitive: emoji.isSensitive,
+ localOnly: emoji.localOnly,
+ roleIdsThatCanBeUsedThisEmojiAsReaction: emoji.roleIdsThatCanBeUsedThisEmojiAsReaction,
+ }, me);
- return {
- id: copied.id,
- };
+ return this.emojiEntityService.packDetailed(addedEmoji);
});
}
}
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts
index e6c1bf317f..c483794a40 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts
@@ -10,6 +10,8 @@ import { CustomEmojiService } from '@/core/CustomEmojiService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageCustomEmojis',
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts b/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts
index 58aa0b9950..e15af7717b 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts
@@ -10,6 +10,8 @@ import { CustomEmojiService } from '@/core/CustomEmojiService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageCustomEmojis',
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts b/packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts
index 208616c0ac..b75616f3cc 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts
@@ -8,7 +8,7 @@ import { Endpoint } from '@/server/api/endpoint-base.js';
import { QueueService } from '@/core/QueueService.js';
export const meta = {
- secure: true,
+ kind: 'write:admin',
requireCredential: true,
requireRolePolicy: 'canManageCustomEmojis',
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts b/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts
index 855ab8cd24..a383e09338 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts
@@ -15,6 +15,8 @@ import { sqlLikeEscape } from '@/misc/sql-like-escape.js';
export const meta = {
tags: ['admin'],
+ kind: 'read:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageCustomEmojis',
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/list.ts b/packages/backend/src/server/api/endpoints/admin/emoji/list.ts
index ab16d86a3d..210b3639c3 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/list.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/list.ts
@@ -15,6 +15,8 @@ import { EmojiEntityService } from '@/core/entities/EmojiEntityService.js';
export const meta = {
tags: ['admin'],
+ kind: 'read:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageCustomEmojis',
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts
index a5dd6d5e3a..8e92db1daf 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts
@@ -10,6 +10,8 @@ import { CustomEmojiService } from '@/core/CustomEmojiService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageCustomEmojis',
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts
index 515053f57b..5a06b5b32f 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts
@@ -10,6 +10,8 @@ import { CustomEmojiService } from '@/core/CustomEmojiService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageCustomEmojis',
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts
index 8e834ad1dd..b3e9c6df13 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts
@@ -10,6 +10,8 @@ import { CustomEmojiService } from '@/core/CustomEmojiService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageCustomEmojis',
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/set-license-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/set-license-bulk.ts
index 2dc9595a7e..c59d13ad16 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/set-license-bulk.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/set-license-bulk.ts
@@ -10,6 +10,8 @@ import { CustomEmojiService } from '@/core/CustomEmojiService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageCustomEmojis',
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/update.ts b/packages/backend/src/server/api/endpoints/admin/emoji/update.ts
index 04226d8953..61d857b7b0 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/update.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/update.ts
@@ -13,6 +13,8 @@ import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
+ kind: 'read:admin',
+
requireCredential: true,
requireRolePolicy: 'canManageCustomEmojis',
diff --git a/packages/backend/src/server/api/endpoints/admin/federation/delete-all-files.ts b/packages/backend/src/server/api/endpoints/admin/federation/delete-all-files.ts
index b63f01bec3..b81297413c 100644
--- a/packages/backend/src/server/api/endpoints/admin/federation/delete-all-files.ts
+++ b/packages/backend/src/server/api/endpoints/admin/federation/delete-all-files.ts
@@ -12,6 +12,8 @@ import { DI } from '@/di-symbols.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts b/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts
index 6dbfe3c4f5..6cc4e3087f 100644
--- a/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts
+++ b/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts
@@ -13,6 +13,8 @@ import { DI } from '@/di-symbols.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/federation/remove-all-following.ts b/packages/backend/src/server/api/endpoints/admin/federation/remove-all-following.ts
index 36ea390e45..18884dfca6 100644
--- a/packages/backend/src/server/api/endpoints/admin/federation/remove-all-following.ts
+++ b/packages/backend/src/server/api/endpoints/admin/federation/remove-all-following.ts
@@ -12,6 +12,8 @@ import { QueueService } from '@/core/QueueService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts b/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts
index 4db52b1052..cf4ac70cc9 100644
--- a/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts
+++ b/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts
@@ -14,6 +14,8 @@ import { ModerationLogService } from '@/core/ModerationLogService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/get-index-stats.ts b/packages/backend/src/server/api/endpoints/admin/get-index-stats.ts
index 4bd9e7de7f..b81d9857d7 100644
--- a/packages/backend/src/server/api/endpoints/admin/get-index-stats.ts
+++ b/packages/backend/src/server/api/endpoints/admin/get-index-stats.ts
@@ -12,7 +12,19 @@ export const meta = {
requireCredential: true,
requireAdmin: true,
+ kind: 'read:admin',
+
tags: ['admin'],
+ res: {
+ type: 'array',
+ items: {
+ type: 'object',
+ properties: {
+ tablename: { type: 'string' },
+ indexname: { type: 'string' },
+ },
+ },
+ },
} as const;
export const paramDef = {
diff --git a/packages/backend/src/server/api/endpoints/admin/get-table-stats.ts b/packages/backend/src/server/api/endpoints/admin/get-table-stats.ts
index f953b889a3..c104f653ef 100644
--- a/packages/backend/src/server/api/endpoints/admin/get-table-stats.ts
+++ b/packages/backend/src/server/api/endpoints/admin/get-table-stats.ts
@@ -12,6 +12,8 @@ export const meta = {
requireCredential: true,
requireAdmin: true,
+ kind: 'read:admin',
+
tags: ['admin'],
res: {
diff --git a/packages/backend/src/server/api/endpoints/admin/get-user-ips.ts b/packages/backend/src/server/api/endpoints/admin/get-user-ips.ts
index 6afa824703..76c32f2a9f 100644
--- a/packages/backend/src/server/api/endpoints/admin/get-user-ips.ts
+++ b/packages/backend/src/server/api/endpoints/admin/get-user-ips.ts
@@ -12,8 +12,29 @@ import { IdService } from '@/core/IdService.js';
export const meta = {
tags: ['admin'],
+ kind: 'read:admin',
+
requireCredential: true,
requireModerator: true,
+ res: {
+ type: 'array',
+ optional: false,
+ nullable: false,
+ items: {
+ type: 'object',
+ optional: false,
+ nullable: false,
+ properties: {
+ ip: { type: 'string' },
+ createdAt: {
+ type: 'string',
+ optional: false,
+ nullable: false,
+ format: 'date-time',
+ },
+ },
+ },
+ }
} as const;
export const paramDef = {
diff --git a/packages/backend/src/server/api/endpoints/admin/invite/create.ts b/packages/backend/src/server/api/endpoints/admin/invite/create.ts
index 4a22fd4824..96de772edc 100644
--- a/packages/backend/src/server/api/endpoints/admin/invite/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/invite/create.ts
@@ -16,6 +16,8 @@ import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
@@ -33,13 +35,7 @@ export const meta = {
items: {
type: 'object',
optional: false, nullable: false,
- properties: {
- code: {
- type: 'string',
- optional: false, nullable: false,
- example: 'GR6S02ERUA5VR',
- },
- },
+ ref: 'InviteCode',
},
},
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/invite/list.ts b/packages/backend/src/server/api/endpoints/admin/invite/list.ts
index f25d3fcb33..3b7dc72e11 100644
--- a/packages/backend/src/server/api/endpoints/admin/invite/list.ts
+++ b/packages/backend/src/server/api/endpoints/admin/invite/list.ts
@@ -12,6 +12,8 @@ import { DI } from '@/di-symbols.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
@@ -21,6 +23,7 @@ export const meta = {
items: {
type: 'object',
optional: false, nullable: false,
+ ref: 'InviteCode',
},
},
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/meta.ts b/packages/backend/src/server/api/endpoints/admin/meta.ts
index f10accaeac..17c81bb76d 100644
--- a/packages/backend/src/server/api/endpoints/admin/meta.ts
+++ b/packages/backend/src/server/api/endpoints/admin/meta.ts
@@ -13,6 +13,8 @@ import { DEFAULT_POLICIES } from '@/core/RoleService.js';
export const meta = {
tags: ['meta'],
+ kind: 'read:admin',
+
requireCredential: true,
requireAdmin: true,
@@ -282,6 +284,14 @@ export const meta = {
type: 'boolean',
optional: false, nullable: false,
},
+ enableVerifymailApi: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ verifymailAuthKey: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
enableChartsForRemoteUser: {
type: 'boolean',
optional: false, nullable: false,
@@ -338,6 +348,82 @@ export const meta = {
type: 'number',
optional: false, nullable: false,
},
+ backgroundImageUrl: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ deeplAuthKey: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ deeplIsPro: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ defaultDarkTheme: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ defaultLightTheme: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ description: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ disableRegistration: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ impressumUrl: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ maintainerEmail: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ maintainerName: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ name: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ objectStorageS3ForcePathStyle: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ privacyPolicyUrl: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ repositoryUrl: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ summalyProxy: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ themeColor: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ tosUrl: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ uri: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ version: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
},
},
} as const;
@@ -444,6 +530,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
deeplIsPro: instance.deeplIsPro,
enableIpLogging: instance.enableIpLogging,
enableActiveEmailValidation: instance.enableActiveEmailValidation,
+ enableVerifymailApi: instance.enableVerifymailApi,
+ verifymailAuthKey: instance.verifymailAuthKey,
enableChartsForRemoteUser: instance.enableChartsForRemoteUser,
enableChartsForFederatedInstances: instance.enableChartsForFederatedInstances,
enableServerMachineStats: instance.enableServerMachineStats,
diff --git a/packages/backend/src/server/api/endpoints/admin/promo/create.ts b/packages/backend/src/server/api/endpoints/admin/promo/create.ts
index 4061e1b5df..e2befec50f 100644
--- a/packages/backend/src/server/api/endpoints/admin/promo/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/promo/create.ts
@@ -13,6 +13,8 @@ import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/queue/clear.ts b/packages/backend/src/server/api/endpoints/admin/queue/clear.ts
index c9142e9885..1d565e8f24 100644
--- a/packages/backend/src/server/api/endpoints/admin/queue/clear.ts
+++ b/packages/backend/src/server/api/endpoints/admin/queue/clear.ts
@@ -11,6 +11,8 @@ import { QueueService } from '@/core/QueueService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/queue/deliver-delayed.ts b/packages/backend/src/server/api/endpoints/admin/queue/deliver-delayed.ts
index 1515ae4c74..30005fc666 100644
--- a/packages/backend/src/server/api/endpoints/admin/queue/deliver-delayed.ts
+++ b/packages/backend/src/server/api/endpoints/admin/queue/deliver-delayed.ts
@@ -11,6 +11,8 @@ import type { DeliverQueue } from '@/core/QueueModule.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/queue/inbox-delayed.ts b/packages/backend/src/server/api/endpoints/admin/queue/inbox-delayed.ts
index febe0d07c6..aa8b6edee5 100644
--- a/packages/backend/src/server/api/endpoints/admin/queue/inbox-delayed.ts
+++ b/packages/backend/src/server/api/endpoints/admin/queue/inbox-delayed.ts
@@ -11,6 +11,8 @@ import type { InboxQueue } from '@/core/QueueModule.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/queue/promote.ts b/packages/backend/src/server/api/endpoints/admin/queue/promote.ts
index 0cba5b4e25..8f46cd6375 100644
--- a/packages/backend/src/server/api/endpoints/admin/queue/promote.ts
+++ b/packages/backend/src/server/api/endpoints/admin/queue/promote.ts
@@ -11,6 +11,8 @@ import { QueueService } from '@/core/QueueService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/queue/stats.ts b/packages/backend/src/server/api/endpoints/admin/queue/stats.ts
index 901195e9a5..1d92e2bf86 100644
--- a/packages/backend/src/server/api/endpoints/admin/queue/stats.ts
+++ b/packages/backend/src/server/api/endpoints/admin/queue/stats.ts
@@ -10,6 +10,8 @@ import type { DbQueue, DeliverQueue, EndedPollNotificationQueue, InboxQueue, Obj
export const meta = {
tags: ['admin'],
+ kind: 'read:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/relays/add.ts b/packages/backend/src/server/api/endpoints/admin/relays/add.ts
index b675db2b89..53b83560cf 100644
--- a/packages/backend/src/server/api/endpoints/admin/relays/add.ts
+++ b/packages/backend/src/server/api/endpoints/admin/relays/add.ts
@@ -12,6 +12,8 @@ import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/relays/list.ts b/packages/backend/src/server/api/endpoints/admin/relays/list.ts
index 0633c57ed5..35c8e05487 100644
--- a/packages/backend/src/server/api/endpoints/admin/relays/list.ts
+++ b/packages/backend/src/server/api/endpoints/admin/relays/list.ts
@@ -10,6 +10,8 @@ import { RelayService } from '@/core/RelayService.js';
export const meta = {
tags: ['admin'],
+ kind: 'read:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/relays/remove.ts b/packages/backend/src/server/api/endpoints/admin/relays/remove.ts
index 661b4243c4..fdc53cb708 100644
--- a/packages/backend/src/server/api/endpoints/admin/relays/remove.ts
+++ b/packages/backend/src/server/api/endpoints/admin/relays/remove.ts
@@ -10,6 +10,8 @@ import { RelayService } from '@/core/RelayService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/reset-password.ts b/packages/backend/src/server/api/endpoints/admin/reset-password.ts
index a4a57d8e4e..d37a526db7 100644
--- a/packages/backend/src/server/api/endpoints/admin/reset-password.ts
+++ b/packages/backend/src/server/api/endpoints/admin/reset-password.ts
@@ -15,6 +15,8 @@ import { ModerationLogService } from '@/core/ModerationLogService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts b/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
index fb5ac7a335..fb26c82a9d 100644
--- a/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
+++ b/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
@@ -15,6 +15,8 @@ import { ModerationLogService } from '@/core/ModerationLogService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/roles/assign.ts b/packages/backend/src/server/api/endpoints/admin/roles/assign.ts
index a0f3edd867..bbd4cfabbe 100644
--- a/packages/backend/src/server/api/endpoints/admin/roles/assign.ts
+++ b/packages/backend/src/server/api/endpoints/admin/roles/assign.ts
@@ -13,6 +13,8 @@ import { RoleService } from '@/core/RoleService.js';
export const meta = {
tags: ['admin', 'role'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/roles/create.ts b/packages/backend/src/server/api/endpoints/admin/roles/create.ts
index 8451b1955f..ac6085d921 100644
--- a/packages/backend/src/server/api/endpoints/admin/roles/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/roles/create.ts
@@ -11,8 +11,16 @@ import { RoleService } from '@/core/RoleService.js';
export const meta = {
tags: ['admin', 'role'],
+ kind: 'write:admin',
+
requireCredential: true,
requireAdmin: true,
+
+ res: {
+ type: 'object',
+ optional: false, nullable: false,
+ ref: 'Role',
+ },
} as const;
export const paramDef = {
diff --git a/packages/backend/src/server/api/endpoints/admin/roles/delete.ts b/packages/backend/src/server/api/endpoints/admin/roles/delete.ts
index 7b989050eb..f60d6754a5 100644
--- a/packages/backend/src/server/api/endpoints/admin/roles/delete.ts
+++ b/packages/backend/src/server/api/endpoints/admin/roles/delete.ts
@@ -13,6 +13,8 @@ import { RoleService } from '@/core/RoleService.js';
export const meta = {
tags: ['admin', 'role'],
+ kind: 'write:admin',
+
requireCredential: true,
requireAdmin: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/roles/list.ts b/packages/backend/src/server/api/endpoints/admin/roles/list.ts
index 3ed4b324dc..30917ce984 100644
--- a/packages/backend/src/server/api/endpoints/admin/roles/list.ts
+++ b/packages/backend/src/server/api/endpoints/admin/roles/list.ts
@@ -12,8 +12,20 @@ import { RoleEntityService } from '@/core/entities/RoleEntityService.js';
export const meta = {
tags: ['admin', 'role'],
+ kind: 'read:admin',
+
requireCredential: true,
requireModerator: true,
+
+ res: {
+ type: 'array',
+ optional: false, nullable: false,
+ items: {
+ type: 'object',
+ optional: false, nullable: false,
+ ref: 'Role',
+ },
+ },
} as const;
export const paramDef = {
diff --git a/packages/backend/src/server/api/endpoints/admin/roles/show.ts b/packages/backend/src/server/api/endpoints/admin/roles/show.ts
index 5f0accab6f..91e32d95be 100644
--- a/packages/backend/src/server/api/endpoints/admin/roles/show.ts
+++ b/packages/backend/src/server/api/endpoints/admin/roles/show.ts
@@ -13,6 +13,8 @@ import { RoleEntityService } from '@/core/entities/RoleEntityService.js';
export const meta = {
tags: ['admin', 'role'],
+ kind: 'read:admin',
+
requireCredential: true,
requireModerator: true,
@@ -23,6 +25,12 @@ export const meta = {
id: '07dc7d34-c0d8-49b7-96c6-db3ce64ee0b3',
},
},
+
+ res: {
+ type: 'object',
+ optional: false, nullable: false,
+ ref: 'Role',
+ },
} as const;
export const paramDef = {
diff --git a/packages/backend/src/server/api/endpoints/admin/roles/unassign.ts b/packages/backend/src/server/api/endpoints/admin/roles/unassign.ts
index 4c27583111..701fea1ed5 100644
--- a/packages/backend/src/server/api/endpoints/admin/roles/unassign.ts
+++ b/packages/backend/src/server/api/endpoints/admin/roles/unassign.ts
@@ -13,6 +13,8 @@ import { RoleService } from '@/core/RoleService.js';
export const meta = {
tags: ['admin', 'role'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/roles/update-default-policies.ts b/packages/backend/src/server/api/endpoints/admin/roles/update-default-policies.ts
index b4e7e29e90..066fc73234 100644
--- a/packages/backend/src/server/api/endpoints/admin/roles/update-default-policies.ts
+++ b/packages/backend/src/server/api/endpoints/admin/roles/update-default-policies.ts
@@ -11,6 +11,8 @@ import { MetaService } from '@/core/MetaService.js';
export const meta = {
tags: ['admin', 'role'],
+ kind: 'write:admin',
+
requireCredential: true,
requireAdmin: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/roles/update.ts b/packages/backend/src/server/api/endpoints/admin/roles/update.ts
index 6031e2363e..6cfcd8ca4a 100644
--- a/packages/backend/src/server/api/endpoints/admin/roles/update.ts
+++ b/packages/backend/src/server/api/endpoints/admin/roles/update.ts
@@ -14,6 +14,8 @@ import { RoleService } from '@/core/RoleService.js';
export const meta = {
tags: ['admin', 'role'],
+ kind: 'write:admin',
+
requireCredential: true,
requireAdmin: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/roles/users.ts b/packages/backend/src/server/api/endpoints/admin/roles/users.ts
index b7f9aa0495..6a0f7f9987 100644
--- a/packages/backend/src/server/api/endpoints/admin/roles/users.ts
+++ b/packages/backend/src/server/api/endpoints/admin/roles/users.ts
@@ -16,6 +16,8 @@ import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin', 'role', 'users'],
+ kind: 'read:admin',
+
requireCredential: false,
requireAdmin: true,
@@ -26,6 +28,20 @@ export const meta = {
id: '224eff5e-2488-4b18-b3e7-f50d94421648',
},
},
+
+ res: {
+ type: 'array',
+ items: {
+ type: 'object',
+ properties: {
+ id: { type: 'string', format: 'misskey:id' },
+ createdAt: { type: 'string', format: 'date-time' },
+ user: { ref: 'UserDetailed' },
+ expiresAt: { type: 'string', format: 'date-time', nullable: true },
+ },
+ required: ['id', 'createdAt', 'user'],
+ },
+ }
} as const;
export const paramDef = {
@@ -78,7 +94,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
id: assign.id,
createdAt: this.idService.parse(assign.id).date.toISOString(),
user: await this.userEntityService.pack(assign.user!, me, { detail: true }),
- expiresAt: assign.expiresAt,
+ expiresAt: assign.expiresAt?.toISOString() ?? null,
})));
});
}
diff --git a/packages/backend/src/server/api/endpoints/admin/send-email.ts b/packages/backend/src/server/api/endpoints/admin/send-email.ts
index b9f2c6a6f1..d22066909e 100644
--- a/packages/backend/src/server/api/endpoints/admin/send-email.ts
+++ b/packages/backend/src/server/api/endpoints/admin/send-email.ts
@@ -10,6 +10,8 @@ import { EmailService } from '@/core/EmailService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/server-info.ts b/packages/backend/src/server/api/endpoints/admin/server-info.ts
index 3169373b0e..d3c3bebff6 100644
--- a/packages/backend/src/server/api/endpoints/admin/server-info.ts
+++ b/packages/backend/src/server/api/endpoints/admin/server-info.ts
@@ -17,6 +17,8 @@ export const meta = {
tags: ['admin', 'meta'],
+ kind: 'read:admin',
+
res: {
type: 'object',
optional: false, nullable: false,
diff --git a/packages/backend/src/server/api/endpoints/admin/show-moderation-logs.ts b/packages/backend/src/server/api/endpoints/admin/show-moderation-logs.ts
index f87a5a3574..c82532ed67 100644
--- a/packages/backend/src/server/api/endpoints/admin/show-moderation-logs.ts
+++ b/packages/backend/src/server/api/endpoints/admin/show-moderation-logs.ts
@@ -14,7 +14,9 @@ export const meta = {
tags: ['admin'],
requireCredential: true,
- requireModerator: true,
+ requireAdmin: true,
+
+ kind: 'read:admin',
res: {
type: 'array',
diff --git a/packages/backend/src/server/api/endpoints/admin/show-user.ts b/packages/backend/src/server/api/endpoints/admin/show-user.ts
index b1cf24b6ac..76032cfb3d 100644
--- a/packages/backend/src/server/api/endpoints/admin/show-user.ts
+++ b/packages/backend/src/server/api/endpoints/admin/show-user.ts
@@ -17,6 +17,8 @@ export const meta = {
requireCredential: true,
requireModerator: true,
+ kind: 'read:admin',
+
res: {
type: 'object',
nullable: false, optional: false,
diff --git a/packages/backend/src/server/api/endpoints/admin/show-users.ts b/packages/backend/src/server/api/endpoints/admin/show-users.ts
index c7f717ff15..f29ebc7fd3 100644
--- a/packages/backend/src/server/api/endpoints/admin/show-users.ts
+++ b/packages/backend/src/server/api/endpoints/admin/show-users.ts
@@ -17,6 +17,8 @@ export const meta = {
requireCredential: true,
requireModerator: true,
+ kind: 'read:admin',
+
res: {
type: 'array',
nullable: false, optional: false,
diff --git a/packages/backend/src/server/api/endpoints/admin/suspend-user.ts b/packages/backend/src/server/api/endpoints/admin/suspend-user.ts
index 9464f4b677..35c3f37481 100644
--- a/packages/backend/src/server/api/endpoints/admin/suspend-user.ts
+++ b/packages/backend/src/server/api/endpoints/admin/suspend-user.ts
@@ -19,6 +19,8 @@ import { QueueService } from '@/core/QueueService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/unset-user-avatar.ts b/packages/backend/src/server/api/endpoints/admin/unset-user-avatar.ts
new file mode 100644
index 0000000000..2309493937
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/admin/unset-user-avatar.ts
@@ -0,0 +1,62 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and other misskey contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Inject, Injectable } from '@nestjs/common';
+import type { UsersRepository } from '@/models/_.js';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import { DI } from '@/di-symbols.js';
+import { ModerationLogService } from '@/core/ModerationLogService.js';
+
+export const meta = {
+ tags: ['admin'],
+
+ kind: 'write:admin',
+
+ requireCredential: true,
+ requireModerator: true,
+} as const;
+
+export const paramDef = {
+ type: 'object',
+ properties: {
+ userId: { type: 'string', format: 'misskey:id' },
+ },
+ required: ['userId'],
+} as const;
+
+// eslint-disable-next-line import/no-default-export
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> {
+ constructor(
+ @Inject(DI.usersRepository)
+ private usersRepository: UsersRepository,
+
+ private moderationLogService: ModerationLogService,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ const user = await this.usersRepository.findOneBy({ id: ps.userId });
+
+ if (user == null) {
+ throw new Error('user not found');
+ }
+
+ if (user.avatarId == null) return;
+
+ await this.usersRepository.update(user.id, {
+ avatar: null,
+ avatarId: null,
+ avatarUrl: null,
+ avatarBlurhash: null,
+ });
+
+ this.moderationLogService.log(me, 'unsetUserAvatar', {
+ userId: user.id,
+ userUsername: user.username,
+ userHost: user.host,
+ fileId: user.avatarId,
+ });
+ });
+ }
+}
diff --git a/packages/backend/src/server/api/endpoints/admin/unset-user-banner.ts b/packages/backend/src/server/api/endpoints/admin/unset-user-banner.ts
new file mode 100644
index 0000000000..468c634e5b
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/admin/unset-user-banner.ts
@@ -0,0 +1,62 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and other misskey contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Inject, Injectable } from '@nestjs/common';
+import type { UsersRepository } from '@/models/_.js';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import { DI } from '@/di-symbols.js';
+import { ModerationLogService } from '@/core/ModerationLogService.js';
+
+export const meta = {
+ tags: ['admin'],
+
+ kind: 'write:admin',
+
+ requireCredential: true,
+ requireModerator: true,
+} as const;
+
+export const paramDef = {
+ type: 'object',
+ properties: {
+ userId: { type: 'string', format: 'misskey:id' },
+ },
+ required: ['userId'],
+} as const;
+
+// eslint-disable-next-line import/no-default-export
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> {
+ constructor(
+ @Inject(DI.usersRepository)
+ private usersRepository: UsersRepository,
+
+ private moderationLogService: ModerationLogService,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ const user = await this.usersRepository.findOneBy({ id: ps.userId });
+
+ if (user == null) {
+ throw new Error('user not found');
+ }
+
+ if (user.bannerId == null) return;
+
+ await this.usersRepository.update(user.id, {
+ banner: null,
+ bannerId: null,
+ bannerUrl: null,
+ bannerBlurhash: null,
+ });
+
+ this.moderationLogService.log(me, 'unsetUserBanner', {
+ userId: user.id,
+ userUsername: user.username,
+ userHost: user.host,
+ fileId: user.bannerId,
+ });
+ });
+ }
+}
diff --git a/packages/backend/src/server/api/endpoints/admin/unsuspend-user.ts b/packages/backend/src/server/api/endpoints/admin/unsuspend-user.ts
index 5e523bbc31..8cdd317eae 100644
--- a/packages/backend/src/server/api/endpoints/admin/unsuspend-user.ts
+++ b/packages/backend/src/server/api/endpoints/admin/unsuspend-user.ts
@@ -13,6 +13,8 @@ import { DI } from '@/di-symbols.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
} as const;
diff --git a/packages/backend/src/server/api/endpoints/admin/update-meta.ts b/packages/backend/src/server/api/endpoints/admin/update-meta.ts
index 47deeffe0c..3c5bc7e957 100644
--- a/packages/backend/src/server/api/endpoints/admin/update-meta.ts
+++ b/packages/backend/src/server/api/endpoints/admin/update-meta.ts
@@ -12,6 +12,8 @@ import { MetaService } from '@/core/MetaService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireAdmin: true,
} as const;
@@ -116,6 +118,8 @@ export const paramDef = {
objectStorageS3ForcePathStyle: { type: 'boolean' },
enableIpLogging: { type: 'boolean' },
enableActiveEmailValidation: { type: 'boolean' },
+ enableVerifymailApi: { type: 'boolean' },
+ verifymailAuthKey: { type: 'string', nullable: true },
enableChartsForRemoteUser: { type: 'boolean' },
enableChartsForFederatedInstances: { type: 'boolean' },
enableServerMachineStats: { type: 'boolean' },
@@ -455,6 +459,18 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
set.enableActiveEmailValidation = ps.enableActiveEmailValidation;
}
+ if (ps.enableVerifymailApi !== undefined) {
+ set.enableVerifymailApi = ps.enableVerifymailApi;
+ }
+
+ if (ps.verifymailAuthKey !== undefined) {
+ if (ps.verifymailAuthKey === '') {
+ set.verifymailAuthKey = null;
+ } else {
+ set.verifymailAuthKey = ps.verifymailAuthKey;
+ }
+ }
+
if (ps.enableChartsForRemoteUser !== undefined) {
set.enableChartsForRemoteUser = ps.enableChartsForRemoteUser;
}
diff --git a/packages/backend/src/server/api/endpoints/admin/update-user-note.ts b/packages/backend/src/server/api/endpoints/admin/update-user-note.ts
index bfccc2a2a5..dd0b777373 100644
--- a/packages/backend/src/server/api/endpoints/admin/update-user-note.ts
+++ b/packages/backend/src/server/api/endpoints/admin/update-user-note.ts
@@ -12,6 +12,8 @@ import { ModerationLogService } from '@/core/ModerationLogService.js';
export const meta = {
tags: ['admin'],
+ kind: 'write:admin',
+
requireCredential: true,
requireModerator: true,
} as const;