feat: ロールによるコンテンツの操作の制限 (#120)

This commit is contained in:
まっちゃとーにゅ
2023-07-28 04:21:59 +09:00
committed by GitHub
parent 0bed053b7d
commit 46f8a0435c
91 changed files with 228 additions and 11 deletions

View File

@@ -51,8 +51,10 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
throw new Error('user not found');
}
const policies = await this.roleService.getUserPolicies(user.id);
const isModerator = await this.roleService.isModerator(user);
const isSilenced = !(await this.roleService.getUserPolicies(user.id)).canPublicNote;
const isLimited = !(policies.canCreateContent && policies.canUpdateContent && policies.canDeleteContent);
const isSilenced = !policies.canPublicNote;
const _me = await this.usersRepository.findOneByOrFail({ id: me.id });
if (!await this.roleService.isAdministrator(_me) && await this.roleService.isAdministrator(user)) {
@@ -80,6 +82,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
mutingNotificationTypes: profile.mutingNotificationTypes,
isModerator: isModerator,
isSilenced: isSilenced,
isLimited: isLimited,
isSuspended: user.isSuspended,
lastActiveDate: user.lastActiveDate,
moderationNote: profile.moderationNote ?? '',

View File

@@ -12,6 +12,7 @@ export const meta = {
tags: ['antennas'],
requireCredential: true,
requireRolePolicy: 'canCreateContent',
prohibitMoved: true,

View File

@@ -9,6 +9,7 @@ export const meta = {
tags: ['antennas'],
requireCredential: true,
requireRolePolicy: 'canDeleteContent',
kind: 'write:account',

View File

@@ -10,6 +10,7 @@ export const meta = {
tags: ['antennas'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -17,6 +17,7 @@ export const meta = {
},
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:blocks',

View File

@@ -17,6 +17,7 @@ export const meta = {
},
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:blocks',

View File

@@ -12,6 +12,7 @@ export const meta = {
tags: ['channels'],
requireCredential: true,
requireRolePolicy: 'canCreateContent',
prohibitMoved: true,

View File

@@ -9,6 +9,7 @@ export const meta = {
tags: ['channels'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -10,6 +10,7 @@ export const meta = {
tags: ['channels'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -8,6 +8,7 @@ export const meta = {
tags: ['channels'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -9,6 +9,7 @@ export const meta = {
tags: ['channels'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -10,6 +10,7 @@ export const meta = {
tags: ['channels'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:channels',

View File

@@ -14,6 +14,7 @@ export const meta = {
requireCredential: true,
prohibitMoved: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:account',

View File

@@ -11,6 +11,7 @@ export const meta = {
tags: ['clips'],
requireCredential: true,
requireRolePolicy: 'canCreateContent',
prohibitMoved: true,

View File

@@ -8,6 +8,7 @@ export const meta = {
tags: ['clips'],
requireCredential: true,
requireRolePolicy: 'canDeleteContent',
kind: 'write:account',

View File

@@ -9,6 +9,7 @@ export const meta = {
tags: ['account', 'notes', 'clips'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -8,6 +8,7 @@ export const meta = {
tags: ['clip'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -9,6 +9,7 @@ export const meta = {
tags: ['clips'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -14,6 +14,7 @@ export const meta = {
tags: ['drive'],
requireCredential: true,
requireRolePolicy: 'canCreateContent',
prohibitMoved: true,

View File

@@ -11,6 +11,7 @@ export const meta = {
tags: ['drive'],
requireCredential: true,
requireRolePolicy: 'canDeleteContent',
kind: 'write:drive',

View File

@@ -11,6 +11,7 @@ export const meta = {
tags: ['drive'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:drive',

View File

@@ -18,6 +18,7 @@ export const meta = {
description: 'Request the server to download a new drive file from the specified URL.',
requireCredential: true,
requireRolePolicy: 'canCreateContent',
prohibitMoved: true,

View File

@@ -12,6 +12,7 @@ export const meta = {
tags: ['drive'],
requireCredential: true,
requireRolePolicy: 'canCreateContent',
kind: 'write:drive',

View File

@@ -9,6 +9,7 @@ export const meta = {
tags: ['drive'],
requireCredential: true,
requireRolePolicy: 'canDeleteContent',
kind: 'write:drive',

View File

@@ -10,6 +10,7 @@ export const meta = {
tags: ['drive'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:drive',

View File

@@ -10,6 +10,7 @@ export const meta = {
tags: ['flash'],
requireCredential: true,
requireRolePolicy: 'canCreateContent',
prohibitMoved: true,

View File

@@ -8,6 +8,7 @@ export const meta = {
tags: ['flashs'],
requireCredential: true,
requireRolePolicy: 'canDeleteContent',
kind: 'write:flash',

View File

@@ -9,6 +9,7 @@ export const meta = {
tags: ['flash'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -8,6 +8,7 @@ export const meta = {
tags: ['flash'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -9,6 +9,7 @@ export const meta = {
tags: ['flash'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -12,6 +12,7 @@ export const meta = {
tags: ['gallery'],
requireCredential: true,
requireRolePolicy: 'canCreateContent',
prohibitMoved: true,

View File

@@ -8,6 +8,7 @@ export const meta = {
tags: ['gallery'],
requireCredential: true,
requireRolePolicy: 'canDeleteContent',
kind: 'write:gallery',

View File

@@ -9,6 +9,7 @@ export const meta = {
tags: ['gallery'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -8,6 +8,7 @@ export const meta = {
tags: ['gallery'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -10,6 +10,7 @@ export const meta = {
tags: ['gallery'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -7,6 +7,7 @@ import { DI } from '@/di-symbols.js';
export const meta = {
requireCredential: true,
requireRolePolicy: 'canDeleteContent',
secure: true,
} as const;

View File

@@ -11,6 +11,8 @@ import { ApiError } from '../../error.js';
export const meta = {
secure: true,
requireCredential: true,
requireRolePolicy: 'canCreateContent',
prohibitMoved: true,
limit: {

View File

@@ -10,6 +10,8 @@ import { ApiError } from '../../error.js';
export const meta = {
secure: true,
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,
limit: {

View File

@@ -10,6 +10,8 @@ import { ApiError } from '../../error.js';
export const meta = {
secure: true,
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,
limit: {

View File

@@ -10,7 +10,10 @@ import { ApiError } from '../../error.js';
export const meta = {
secure: true,
requireCredential: true,
requireRolePolicy: 'canCreateContent',
prohibitMoved: true,
limit: {
duration: ms('1hour'),
max: 1,

View File

@@ -23,7 +23,10 @@ export const meta = {
secure: true,
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,
limit: {
duration: ms('1day'),
max: 5,

View File

@@ -8,6 +8,8 @@ export const meta = {
tags: ['account', 'notes'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,
kind: 'write:account',

View File

@@ -8,6 +8,7 @@ export const meta = {
tags: ['account', 'notes'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:account',

View File

@@ -12,10 +12,11 @@ import { L_CHARS, secureRndstr } from '@/misc/secure-rndstr.js';
import { ApiError } from '../../error.js';
export const meta = {
requireCredential: true,
secure: true,
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
limit: {
duration: ms('1hour'),
max: 3,

View File

@@ -30,6 +30,7 @@ export const meta = {
tags: ['account'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:account',

View File

@@ -12,6 +12,7 @@ export const meta = {
tags: ['webhooks'],
requireCredential: true,
requireRolePolicy: 'canCreateContent',
kind: 'write:account',

View File

@@ -9,6 +9,7 @@ export const meta = {
tags: ['webhooks'],
requireCredential: true,
requireRolePolicy: 'canDeleteContent',
kind: 'write:account',

View File

@@ -10,6 +10,7 @@ export const meta = {
tags: ['webhooks'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:account',

View File

@@ -11,6 +11,8 @@ export const meta = {
tags: ['account'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,
kind: 'write:mutes',

View File

@@ -10,6 +10,7 @@ export const meta = {
tags: ['account'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:mutes',

View File

@@ -17,6 +17,7 @@ export const meta = {
tags: ['notes'],
requireCredential: true,
requireRolePolicy: 'canCreateContent',
prohibitMoved: true,

View File

@@ -12,6 +12,7 @@ export const meta = {
tags: ['notes'],
requireCredential: true,
requireRolePolicy: 'canDeleteContent',
kind: 'write:notes',

View File

@@ -12,6 +12,8 @@ export const meta = {
tags: ['notes', 'favorites'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,
kind: 'write:favorites',

View File

@@ -9,6 +9,7 @@ export const meta = {
tags: ['notes', 'favorites'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:favorites',

View File

@@ -16,6 +16,7 @@ export const meta = {
tags: ['notes'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -8,6 +8,7 @@ export const meta = {
tags: ['reactions', 'notes'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -9,6 +9,7 @@ export const meta = {
tags: ['reactions', 'notes'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:reactions',

View File

@@ -12,6 +12,7 @@ export const meta = {
tags: ['notes'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:account',

View File

@@ -9,6 +9,7 @@ export const meta = {
tags: ['notes'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:account',

View File

@@ -11,6 +11,7 @@ export const meta = {
tags: ['notes'],
requireCredential: true,
requireRolePolicy: 'canDeleteContent',
kind: 'write:notes',

View File

@@ -12,6 +12,7 @@ export const meta = {
tags: ['pages'],
requireCredential: true,
requireRolePolicy: 'canCreateContent',
prohibitMoved: true,

View File

@@ -8,6 +8,7 @@ export const meta = {
tags: ['pages'],
requireCredential: true,
requireRolePolicy: 'canDeleteContent',
kind: 'write:pages',

View File

@@ -9,6 +9,7 @@ export const meta = {
tags: ['pages'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -8,6 +8,7 @@ export const meta = {
tags: ['pages'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -10,6 +10,7 @@ export const meta = {
tags: ['pages'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -13,6 +13,8 @@ export const meta = {
tags: ['account'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,
kind: 'write:mutes',

View File

@@ -10,6 +10,7 @@ export const meta = {
tags: ['account'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:mutes',

View File

@@ -12,7 +12,10 @@ import { UserListService } from '@/core/UserListService.js';
export const meta = {
requireCredential: true,
requireRolePolicy: 'canCreateContent',
prohibitMoved: true,
res: {
type: 'object',
optional: false, nullable: false,

View File

@@ -12,6 +12,7 @@ export const meta = {
tags: ['lists'],
requireCredential: true,
requireRolePolicy: 'canCreateContent',
prohibitMoved: true,

View File

@@ -8,6 +8,7 @@ export const meta = {
tags: ['lists'],
requireCredential: true,
requireRolePolicy: 'canDeleteContent',
kind: 'write:account',

View File

@@ -7,6 +7,8 @@ import { DI } from '@/di-symbols.js';
export const meta = {
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
errors: {
noSuchList: {
message: 'No such user list.',

View File

@@ -11,6 +11,7 @@ export const meta = {
tags: ['lists', 'users'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -11,6 +11,7 @@ export const meta = {
tags: ['lists', 'users'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
prohibitMoved: true,

View File

@@ -6,6 +6,8 @@ import { DI } from '@/di-symbols.js';
export const meta = {
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
errors: {
noSuchList: {
message: 'No such user list.',

View File

@@ -9,6 +9,7 @@ export const meta = {
tags: ['lists'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:account',

View File

@@ -10,6 +10,7 @@ export const meta = {
tags: ['account'],
requireCredential: true,
requireRolePolicy: 'canUpdateContent',
kind: 'write:account',