update
This commit is contained in:
parent
94bca758ab
commit
26bb2d42f9
|
@ -388,13 +388,14 @@ import * as ep___reversi_surrender from './endpoints/reversi/surrender.js';
|
||||||
import * as ep___reversi_verify from './endpoints/reversi/verify.js';
|
import * as ep___reversi_verify from './endpoints/reversi/verify.js';
|
||||||
import { GetterService } from './GetterService.js';
|
import { GetterService } from './GetterService.js';
|
||||||
import { ApiLoggerService } from './ApiLoggerService.js';
|
import { ApiLoggerService } from './ApiLoggerService.js';
|
||||||
|
import * as ep___admin_accounts_present_points from './endpoints/admin/accounts/present-points.js';
|
||||||
import type { Provider } from '@nestjs/common';
|
import type { Provider } from '@nestjs/common';
|
||||||
|
|
||||||
const $admin_meta: Provider = { provide: 'ep:admin/meta', useClass: ep___admin_meta.default };
|
const $admin_meta: Provider = { provide: 'ep:admin/meta', useClass: ep___admin_meta.default };
|
||||||
const $admin_abuseUserReports: Provider = { provide: 'ep:admin/abuse-user-reports', useClass: ep___admin_abuseUserReports.default };
|
const $admin_abuseUserReports: Provider = { provide: 'ep:admin/abuse-user-reports', useClass: ep___admin_abuseUserReports.default };
|
||||||
const $admin_accounts_create: Provider = { provide: 'ep:admin/accounts/create', useClass: ep___admin_accounts_create.default };
|
const $admin_accounts_create: Provider = { provide: 'ep:admin/accounts/create', useClass: ep___admin_accounts_create.default };
|
||||||
const $admin_accounts_delete: Provider = { provide: 'ep:admin/accounts/delete', useClass: ep___admin_accounts_delete.default };
|
const $admin_accounts_delete: Provider = { provide: 'ep:admin/accounts/delete', useClass: ep___admin_accounts_delete.default };
|
||||||
const $admin_accounts_findByEmail: Provider = { provide: 'ep:admin/accounts/find-by-email', useClass: ep___admin_accounts_findByEmail.default };
|
const $admin_accounts_findByEmail: Provider = { provide: 'ep:admin/accounts/find-by-email', useClass: ep___admin_accounts_findByEmail.default };
|
||||||
|
const $admin_accounts_present_points: Provider = { provide: 'ep:admin/accounts/present-points', useClass: ep___admin_accounts_present_points.default };
|
||||||
const $admin_ad_create: Provider = { provide: 'ep:admin/ad/create', useClass: ep___admin_ad_create.default };
|
const $admin_ad_create: Provider = { provide: 'ep:admin/ad/create', useClass: ep___admin_ad_create.default };
|
||||||
const $admin_ad_delete: Provider = { provide: 'ep:admin/ad/delete', useClass: ep___admin_ad_delete.default };
|
const $admin_ad_delete: Provider = { provide: 'ep:admin/ad/delete', useClass: ep___admin_ad_delete.default };
|
||||||
const $admin_ad_list: Provider = { provide: 'ep:admin/ad/list', useClass: ep___admin_ad_list.default };
|
const $admin_ad_list: Provider = { provide: 'ep:admin/ad/list', useClass: ep___admin_ad_list.default };
|
||||||
|
@ -783,6 +784,7 @@ const $reversi_verify: Provider = { provide: 'ep:reversi/verify', useClass: ep__
|
||||||
$admin_accounts_create,
|
$admin_accounts_create,
|
||||||
$admin_accounts_delete,
|
$admin_accounts_delete,
|
||||||
$admin_accounts_findByEmail,
|
$admin_accounts_findByEmail,
|
||||||
|
$admin_accounts_present_points,
|
||||||
$admin_ad_create,
|
$admin_ad_create,
|
||||||
$admin_ad_delete,
|
$admin_ad_delete,
|
||||||
$admin_ad_list,
|
$admin_ad_list,
|
||||||
|
@ -1165,6 +1167,7 @@ const $reversi_verify: Provider = { provide: 'ep:reversi/verify', useClass: ep__
|
||||||
$admin_accounts_create,
|
$admin_accounts_create,
|
||||||
$admin_accounts_delete,
|
$admin_accounts_delete,
|
||||||
$admin_accounts_findByEmail,
|
$admin_accounts_findByEmail,
|
||||||
|
$admin_accounts_present_points,
|
||||||
$admin_ad_create,
|
$admin_ad_create,
|
||||||
$admin_ad_delete,
|
$admin_ad_delete,
|
||||||
$admin_ad_list,
|
$admin_ad_list,
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { permissions } from 'misskey-js';
|
import { permissions } from 'misskey-js';
|
||||||
import type { KeyOf,Schema } from '@/misc/json-schema.js';
|
import type { KeyOf, Schema } from '@/misc/json-schema.js';
|
||||||
import { RolePolicies } from '@/core/RoleService.js';
|
import { RolePolicies } from '@/core/RoleService.js';
|
||||||
import * as ep___admin_emoji_setlocalOnlyBulk from './endpoints/admin/emoji/set-localonly-bulk.js';
|
import * as ep___admin_emoji_setlocalOnlyBulk from './endpoints/admin/emoji/set-localonly-bulk.js';
|
||||||
import * as ep___admin_emoji_setisSensitiveBulk from './endpoints/admin/emoji/set-issensitive-bulk.js';
|
import * as ep___admin_emoji_setisSensitiveBulk from './endpoints/admin/emoji/set-issensitive-bulk.js';
|
||||||
|
@ -13,6 +13,8 @@ import * as ep___admin_abuseUserReports from './endpoints/admin/abuse-user-repor
|
||||||
import * as ep___admin_accounts_create from './endpoints/admin/accounts/create.js';
|
import * as ep___admin_accounts_create from './endpoints/admin/accounts/create.js';
|
||||||
import * as ep___admin_accounts_delete from './endpoints/admin/accounts/delete.js';
|
import * as ep___admin_accounts_delete from './endpoints/admin/accounts/delete.js';
|
||||||
import * as ep___admin_accounts_findByEmail from './endpoints/admin/accounts/find-by-email.js';
|
import * as ep___admin_accounts_findByEmail from './endpoints/admin/accounts/find-by-email.js';
|
||||||
|
import * as ep___admin_accounts_present_points from './endpoints/admin/accounts/present-points.js';
|
||||||
|
|
||||||
import * as ep___admin_ad_create from './endpoints/admin/ad/create.js';
|
import * as ep___admin_ad_create from './endpoints/admin/ad/create.js';
|
||||||
import * as ep___admin_ad_delete from './endpoints/admin/ad/delete.js';
|
import * as ep___admin_ad_delete from './endpoints/admin/ad/delete.js';
|
||||||
import * as ep___admin_ad_list from './endpoints/admin/ad/list.js';
|
import * as ep___admin_ad_list from './endpoints/admin/ad/list.js';
|
||||||
|
@ -386,13 +388,13 @@ import * as ep___reversi_invitations from './endpoints/reversi/invitations.js';
|
||||||
import * as ep___reversi_showGame from './endpoints/reversi/show-game.js';
|
import * as ep___reversi_showGame from './endpoints/reversi/show-game.js';
|
||||||
import * as ep___reversi_surrender from './endpoints/reversi/surrender.js';
|
import * as ep___reversi_surrender from './endpoints/reversi/surrender.js';
|
||||||
import * as ep___reversi_verify from './endpoints/reversi/verify.js';
|
import * as ep___reversi_verify from './endpoints/reversi/verify.js';
|
||||||
|
|
||||||
const eps = [
|
const eps = [
|
||||||
['admin/meta', ep___admin_meta],
|
['admin/meta', ep___admin_meta],
|
||||||
['admin/abuse-user-reports', ep___admin_abuseUserReports],
|
['admin/abuse-user-reports', ep___admin_abuseUserReports],
|
||||||
['admin/accounts/create', ep___admin_accounts_create],
|
['admin/accounts/create', ep___admin_accounts_create],
|
||||||
['admin/accounts/delete', ep___admin_accounts_delete],
|
['admin/accounts/delete', ep___admin_accounts_delete],
|
||||||
['admin/accounts/find-by-email', ep___admin_accounts_findByEmail],
|
['admin/accounts/find-by-email', ep___admin_accounts_findByEmail],
|
||||||
|
['admin/accounts/present-points', ep___admin_accounts_present_points],
|
||||||
['admin/ad/create', ep___admin_ad_create],
|
['admin/ad/create', ep___admin_ad_create],
|
||||||
['admin/ad/delete', ep___admin_ad_delete],
|
['admin/ad/delete', ep___admin_ad_delete],
|
||||||
['admin/ad/list', ep___admin_ad_list],
|
['admin/ad/list', ep___admin_ad_list],
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { Inject, Injectable } from '@nestjs/common';
|
||||||
|
import { Endpoint } from '@/server/api/endpoint-base.js';
|
||||||
|
import type { UsersRepository } from '@/models/_.js';
|
||||||
|
import { DI } from '@/di-symbols.js';
|
||||||
|
import { NotificationService } from '@/core/NotificationService.js';
|
||||||
|
|
||||||
|
export const meta = {
|
||||||
|
tags: ['admin'],
|
||||||
|
|
||||||
|
requireCredential: true,
|
||||||
|
requireAdmin: true,
|
||||||
|
kind: 'write:admin:account',
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export const paramDef = {
|
||||||
|
type: 'object',
|
||||||
|
properties: {
|
||||||
|
userId: { type: 'string', format: 'misskey:id' },
|
||||||
|
points: { type: 'number' },
|
||||||
|
},
|
||||||
|
required: ['userId', 'points'],
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export
|
||||||
|
constructor(
|
||||||
|
@Inject(DI.usersRepository)
|
||||||
|
private usersRepository: UsersRepository,
|
||||||
|
private notificationService: NotificationService,
|
||||||
|
) {
|
||||||
|
super(meta, paramDef, async (ps, me) => {
|
||||||
|
const user = await this.usersRepository.findOneBy({ id: ps.userId });
|
||||||
|
|
||||||
|
if (user == null) {
|
||||||
|
throw new Error('user not found');
|
||||||
|
}
|
||||||
|
this.usersRepository.update( user.id, {
|
||||||
|
getPoints: user.getPoints + ps.points,
|
||||||
|
});
|
||||||
|
this.notificationService.createNotification(user.id, 'loginbonus', {
|
||||||
|
loginbonus: ps.points,
|
||||||
|
});
|
||||||
|
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -76,7 +76,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
||||||
this.usersRepository.update( user.id, {
|
this.usersRepository.update( user.id, {
|
||||||
getPoints: user.getPoints + todayGetPoints,
|
getPoints: user.getPoints + todayGetPoints,
|
||||||
});
|
});
|
||||||
this.notificationService.createNotification(user.id, 'loginbonus', {
|
this.notificationService.createNotification(user. id, 'loginbonus', {
|
||||||
loginbonus: todayGetPoints,
|
loginbonus: todayGetPoints,
|
||||||
});
|
});
|
||||||
userProfile.loggedInDates = [...userProfile.loggedInDates, today];
|
userProfile.loggedInDates = [...userProfile.loggedInDates, today];
|
||||||
|
|
|
@ -98,6 +98,9 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<div>
|
<div>
|
||||||
<MkButton v-if="user.host == null" inline style="margin-right: 8px;" @click="resetPassword"><i class="ti ti-key"></i> {{ i18n.ts.resetPassword }}</MkButton>
|
<MkButton v-if="user.host == null" inline style="margin-right: 8px;" @click="resetPassword"><i class="ti ti-key"></i> {{ i18n.ts.resetPassword }}</MkButton>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<MkButton v-if="user.host == null" inline style="margin-right: 8px;" @click="presentsPoints">ぷりずむを付与する</MkButton>
|
||||||
|
</div>
|
||||||
|
|
||||||
<MkFolder>
|
<MkFolder>
|
||||||
<template #icon><i class="ti ti-license"></i></template>
|
<template #icon><i class="ti ti-license"></i></template>
|
||||||
|
@ -312,6 +315,15 @@ async function resetPassword() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function presentsPoints() {
|
||||||
|
const { canceled, result } = await os.inputText({
|
||||||
|
title: 'ポイント',
|
||||||
|
});
|
||||||
|
if (canceled) return;
|
||||||
|
if (result === null) return;
|
||||||
|
await misskeyApi('admin/accounts/present-points', { userId: user.value.id, points: parseInt(result) });
|
||||||
|
}
|
||||||
|
|
||||||
async function toggleSuspend(v) {
|
async function toggleSuspend(v) {
|
||||||
const confirm = await os.confirm({
|
const confirm = await os.confirm({
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
|
|
Loading…
Reference in a new issue