feat: moderation note
This commit is contained in:
		
							parent
							
								
									0de973d293
								
							
						
					
					
						commit
						dd426735a0
					
				
					 8 changed files with 146 additions and 44 deletions
				
			
		|  | @ -0,0 +1,11 @@ | |||
| export class userModerationNote1656772790599 { | ||||
|     name = 'userModerationNote1656772790599' | ||||
| 
 | ||||
|     async up(queryRunner) { | ||||
|         await queryRunner.query(`ALTER TABLE "user_profile" ADD "moderationNote" character varying(8192) NOT NULL DEFAULT ''`); | ||||
|     } | ||||
| 
 | ||||
|     async down(queryRunner) { | ||||
|         await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "moderationNote"`); | ||||
|     } | ||||
| } | ||||
|  | @ -1,8 +1,8 @@ | |||
| import { Entity, Column, Index, OneToOne, JoinColumn, PrimaryColumn } from 'typeorm'; | ||||
| import { ffVisibility, notificationTypes } from '@/types.js'; | ||||
| import { id } from '../id.js'; | ||||
| import { User } from './user.js'; | ||||
| import { Page } from './page.js'; | ||||
| import { ffVisibility, notificationTypes } from '@/types.js'; | ||||
| 
 | ||||
| // TODO: このテーブルで管理している情報すべてレジストリで管理するようにしても良いかも
 | ||||
| //       ただ、「emailVerified が true なユーザーを find する」のようなクエリは書けなくなるからウーン
 | ||||
|  | @ -117,6 +117,11 @@ export class UserProfile { | |||
| 	}) | ||||
| 	public password: string | null; | ||||
| 
 | ||||
| 	@Column('varchar', { | ||||
| 		length: 8192, default: '', | ||||
| 	}) | ||||
| 	public moderationNote: string | null; | ||||
| 
 | ||||
| 	// TODO: そのうち消す
 | ||||
| 	@Column('jsonb', { | ||||
| 		default: {}, | ||||
|  |  | |||
|  | @ -61,6 +61,7 @@ import * as ep___admin_unsuspendUser from './endpoints/admin/unsuspend-user.js'; | |||
| import * as ep___admin_updateMeta from './endpoints/admin/update-meta.js'; | ||||
| import * as ep___admin_vacuum from './endpoints/admin/vacuum.js'; | ||||
| import * as ep___admin_deleteAccount from './endpoints/admin/delete-account.js'; | ||||
| import * as ep___admin_updateUserNote from './endpoints/admin/update-user-note.js'; | ||||
| import * as ep___announcements from './endpoints/announcements.js'; | ||||
| import * as ep___antennas_create from './endpoints/antennas/create.js'; | ||||
| import * as ep___antennas_delete from './endpoints/antennas/delete.js'; | ||||
|  | @ -376,6 +377,7 @@ const eps = [ | |||
| 	['admin/update-meta', ep___admin_updateMeta], | ||||
| 	['admin/vacuum', ep___admin_vacuum], | ||||
| 	['admin/delete-account', ep___admin_deleteAccount], | ||||
| 	['admin/update-user-note', ep___admin_updateUserNote], | ||||
| 	['announcements', ep___announcements], | ||||
| 	['antennas/create', ep___antennas_create], | ||||
| 	['antennas/delete', ep___antennas_delete], | ||||
|  |  | |||
|  | @ -69,6 +69,7 @@ export default define(meta, paramDef, async (ps, me) => { | |||
| 		isSilenced: user.isSilenced, | ||||
| 		isSuspended: user.isSuspended, | ||||
| 		lastActiveDate: user.lastActiveDate, | ||||
| 		moderationNote: profile.moderationNote, | ||||
| 		signins, | ||||
| 	}; | ||||
| }); | ||||
|  |  | |||
|  | @ -0,0 +1,31 @@ | |||
| import { UserProfiles, Users } from '@/models/index.js'; | ||||
| import define from '../../define.js'; | ||||
| 
 | ||||
| export const meta = { | ||||
| 	tags: ['admin'], | ||||
| 
 | ||||
| 	requireCredential: true, | ||||
| 	requireModerator: true, | ||||
| } as const; | ||||
| 
 | ||||
| export const paramDef = { | ||||
| 	type: 'object', | ||||
| 	properties: { | ||||
| 		userId: { type: 'string', format: 'misskey:id' }, | ||||
| 		text: { type: 'string' }, | ||||
| 	}, | ||||
| 	required: ['userId', 'text'], | ||||
| } as const; | ||||
| 
 | ||||
| // eslint-disable-next-line import/no-default-export
 | ||||
| export default define(meta, paramDef, async (ps, me) => { | ||||
| 	const user = await Users.findOneBy({ id: ps.userId }); | ||||
| 
 | ||||
| 	if (user == null) { | ||||
| 		throw new Error('user not found'); | ||||
| 	} | ||||
| 
 | ||||
| 	await UserProfiles.update({ userId: user.id }, { | ||||
| 		moderationNote: ps.text, | ||||
| 	}); | ||||
| }); | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue