| @@ -37,7 +37,7 @@ import * as ep___admin_federation_updateInstance from './endpoints/admin/federat | ||||
| import * as ep___admin_getIndexStats from './endpoints/admin/get-index-stats.js'; | ||||
| import * as ep___admin_getTableStats from './endpoints/admin/get-table-stats.js'; | ||||
| import * as ep___admin_getUserIps from './endpoints/admin/get-user-ips.js'; | ||||
| import * as ep___admin_invite from './endpoints/admin/invite.js'; | ||||
| import * as ep___invite from './endpoints/invite.js'; | ||||
| import * as ep___admin_promo_create from './endpoints/admin/promo/create.js'; | ||||
| import * as ep___admin_queue_clear from './endpoints/admin/queue/clear.js'; | ||||
| import * as ep___admin_queue_deliverDelayed from './endpoints/admin/queue/deliver-delayed.js'; | ||||
| @@ -371,7 +371,7 @@ const $admin_federation_updateInstance: Provider = { provide: 'ep:admin/federati | ||||
| const $admin_getIndexStats: Provider = { provide: 'ep:admin/get-index-stats', useClass: ep___admin_getIndexStats.default }; | ||||
| const $admin_getTableStats: Provider = { provide: 'ep:admin/get-table-stats', useClass: ep___admin_getTableStats.default }; | ||||
| const $admin_getUserIps: Provider = { provide: 'ep:admin/get-user-ips', useClass: ep___admin_getUserIps.default }; | ||||
| const $admin_invite: Provider = { provide: 'ep:admin/invite', useClass: ep___admin_invite.default }; | ||||
| const $invite: Provider = { provide: 'ep:invite', useClass: ep___invite.default }; | ||||
| const $admin_promo_create: Provider = { provide: 'ep:admin/promo/create', useClass: ep___admin_promo_create.default }; | ||||
| const $admin_queue_clear: Provider = { provide: 'ep:admin/queue/clear', useClass: ep___admin_queue_clear.default }; | ||||
| const $admin_queue_deliverDelayed: Provider = { provide: 'ep:admin/queue/deliver-delayed', useClass: ep___admin_queue_deliverDelayed.default }; | ||||
| @@ -709,7 +709,7 @@ const $retention: Provider = { provide: 'ep:retention', useClass: ep___retention | ||||
| 		$admin_getIndexStats, | ||||
| 		$admin_getTableStats, | ||||
| 		$admin_getUserIps, | ||||
| 		$admin_invite, | ||||
| 		$invite, | ||||
| 		$admin_promo_create, | ||||
| 		$admin_queue_clear, | ||||
| 		$admin_queue_deliverDelayed, | ||||
| @@ -1041,7 +1041,7 @@ const $retention: Provider = { provide: 'ep:retention', useClass: ep___retention | ||||
| 		$admin_getIndexStats, | ||||
| 		$admin_getTableStats, | ||||
| 		$admin_getUserIps, | ||||
| 		$admin_invite, | ||||
| 		$invite, | ||||
| 		$admin_promo_create, | ||||
| 		$admin_queue_clear, | ||||
| 		$admin_queue_deliverDelayed, | ||||
|   | ||||
| @@ -36,7 +36,7 @@ import * as ep___admin_federation_updateInstance from './endpoints/admin/federat | ||||
| import * as ep___admin_getIndexStats from './endpoints/admin/get-index-stats.js'; | ||||
| import * as ep___admin_getTableStats from './endpoints/admin/get-table-stats.js'; | ||||
| import * as ep___admin_getUserIps from './endpoints/admin/get-user-ips.js'; | ||||
| import * as ep___admin_invite from './endpoints/admin/invite.js'; | ||||
| import * as ep___invite from './endpoints/invite.js'; | ||||
| import * as ep___admin_promo_create from './endpoints/admin/promo/create.js'; | ||||
| import * as ep___admin_queue_clear from './endpoints/admin/queue/clear.js'; | ||||
| import * as ep___admin_queue_deliverDelayed from './endpoints/admin/queue/deliver-delayed.js'; | ||||
| @@ -368,7 +368,7 @@ const eps = [ | ||||
| 	['admin/get-index-stats', ep___admin_getIndexStats], | ||||
| 	['admin/get-table-stats', ep___admin_getTableStats], | ||||
| 	['admin/get-user-ips', ep___admin_getUserIps], | ||||
| 	['admin/invite', ep___admin_invite], | ||||
| 	['invite', ep___invite], | ||||
| 	['admin/promo/create', ep___admin_promo_create], | ||||
| 	['admin/queue/clear', ep___admin_queue_clear], | ||||
| 	['admin/queue/deliver-delayed', ep___admin_queue_deliverDelayed], | ||||
|   | ||||
| @@ -4,12 +4,12 @@ import { Endpoint } from '@/server/api/endpoint-base.js'; | ||||
| import type { RegistrationTicketsRepository } from '@/models/index.js'; | ||||
| import { IdService } from '@/core/IdService.js'; | ||||
| import { DI } from '@/di-symbols.js'; | ||||
| import { RoleService } from '@/core/RoleService.js'; | ||||
| 
 | ||||
| export const meta = { | ||||
| 	tags: ['admin'], | ||||
| 	tags: ['meta'], | ||||
| 
 | ||||
| 	requireCredential: true, | ||||
| 	requireModerator: true, | ||||
| 
 | ||||
| 	res: { | ||||
| 		type: 'object', | ||||
| @@ -39,9 +39,15 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { | ||||
| 		@Inject(DI.registrationTicketsRepository) | ||||
| 		private registrationTicketsRepository: RegistrationTicketsRepository, | ||||
| 
 | ||||
| 		private roleService: RoleService, | ||||
| 		private idService: IdService, | ||||
| 	) { | ||||
| 		super(meta, paramDef, async () => { | ||||
| 		super(meta, paramDef, async (ps, me) => { | ||||
| 			const role = await this.roleService.getUserRoleOptions(me.id); | ||||
| 			if (!me.isRoot && !role.canInvite) { | ||||
| 				throw new Error('access denied'); | ||||
| 			} | ||||
| 
 | ||||
| 			const code = rndstr({ | ||||
| 				length: 8, | ||||
| 				chars: '2-9A-HJ-NP-Z', // [0-9A-Z] w/o [01IO] (32 patterns)
 | ||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo