Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update host #614

Merged
merged 12 commits into from
Apr 14, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
12 commits
Select commit Hold shift + click to select a range
ea13904
enhance(frontend): 設定に2要素認証のガイドへの導線を追加 (MisskeyIO#603)
CyberRex0 Apr 7, 2024
5e476a7
Bump up version to 2024.3.1-io.5c (MisskeyIO#602)
u1-liquid Apr 7, 2024
8b214f8
enhance(frontend/MkPostForm): ノートの投稿後すぐに投稿モーダルを閉じるように (MisskeyIO#605)
Misaki0331 Apr 11, 2024
22e398d
spec(SSO): メールアドレスが登録されていない場合、メアドフィールドの値にaactを入れる (MisskeyIO#607)
u1-liquid Apr 13, 2024
6b7df2b
fix(backend): 登録にメール認証が必須になっている場合、登録されているメールアドレスを削除できないように (MisskeyIO…
u1-liquid Apr 13, 2024
8f331e1
spec(backend): 管理者が登録待ちのユーザーの一覧をみる・取り消すAPIを追加 (MisskeyIO#609)
u1-liquid Apr 13, 2024
3e8b466
update deps (MisskeyIO#610)
u1-liquid Apr 13, 2024
7da775d
spec(frontend): メアド認証が義務化されているのにメアドが登録されてない・認証されてない場合登録するように促す (Missk…
u1-liquid Apr 13, 2024
1f38f58
enhance(frontend/2fa): 二要素認証のバックアップコードを保存するように促す (MisskeyIO#611)
u1-liquid Apr 14, 2024
32802d1
enhance(frontend): ユーザーの信頼する外部サイトへのリンクは警告しないように (MisskeyIO#612)
u1-liquid Apr 14, 2024
4328337
Bump up version to 2024.3.1-io.6 (MisskeyIO#613)
u1-liquid Apr 14, 2024
4c8e8b8
Merge tag '2024.3.1-io.6' into host
u1-liquid Apr 14, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
spec(backend): 管理者が登録待ちのユーザーの一覧をみる・取り消すAPIを追加 (#609)
  • Loading branch information
u1-liquid committed Apr 13, 2024
commit 8f331e142b7d68df014746513c0cf9b3eb11e014
8 changes: 8 additions & 0 deletions packages/backend/src/server/api/EndpointsModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,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_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_pending_list from './endpoints/admin/accounts/pending/list.js';
import * as ep___admin_accounts_pending_revoke from './endpoints/admin/accounts/pending/revoke.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_list from './endpoints/admin/ad/list.js';
Expand Down Expand Up @@ -398,6 +400,8 @@ const $admin_abuseUserReports: Provider = { provide: 'ep:admin/abuse-user-report
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_findByEmail: Provider = { provide: 'ep:admin/accounts/find-by-email', useClass: ep___admin_accounts_findByEmail.default };
const $admin_accounts_pending_list: Provider = { provide: 'ep:admin/accounts/pending/list', useClass: ep___admin_accounts_pending_list.default };
const $admin_accounts_pending_revoke: Provider = { provide: 'ep:admin/accounts/pending/revoke', useClass: ep___admin_accounts_pending_revoke.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_list: Provider = { provide: 'ep:admin/ad/list', useClass: ep___admin_ad_list.default };
Expand Down Expand Up @@ -789,6 +793,8 @@ const $reversi_verify: Provider = { provide: 'ep:reversi/verify', useClass: ep__
$admin_accounts_create,
$admin_accounts_delete,
$admin_accounts_findByEmail,
$admin_accounts_pending_list,
$admin_accounts_pending_revoke,
$admin_ad_create,
$admin_ad_delete,
$admin_ad_list,
Expand Down Expand Up @@ -1174,6 +1180,8 @@ const $reversi_verify: Provider = { provide: 'ep:reversi/verify', useClass: ep__
$admin_accounts_create,
$admin_accounts_delete,
$admin_accounts_findByEmail,
$admin_accounts_pending_list,
$admin_accounts_pending_revoke,
$admin_ad_create,
$admin_ad_delete,
$admin_ad_list,
Expand Down
4 changes: 4 additions & 0 deletions packages/backend/src/server/api/endpoints.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,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_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_pending_list from './endpoints/admin/accounts/pending/list.js';
import * as ep___admin_accounts_pending_revoke from './endpoints/admin/accounts/pending/revoke.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_list from './endpoints/admin/ad/list.js';
Expand Down Expand Up @@ -396,6 +398,8 @@ const eps = [
['admin/accounts/create', ep___admin_accounts_create],
['admin/accounts/delete', ep___admin_accounts_delete],
['admin/accounts/find-by-email', ep___admin_accounts_findByEmail],
['admin/accounts/pending/list', ep___admin_accounts_pending_list],
['admin/accounts/pending/revoke', ep___admin_accounts_pending_revoke],
['admin/ad/create', ep___admin_ad_create],
['admin/ad/delete', ep___admin_ad_delete],
['admin/ad/list', ep___admin_ad_list],
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
import { Inject, Injectable } from '@nestjs/common';
import { Endpoint } from '@/server/api/endpoint-base.js';
import type { UserPendingsRepository } from '@/models/_.js';
import { DI } from '@/di-symbols.js';

export const meta = {
tags: ['admin'],

requireCredential: true,
requireAdmin: true,
kind: 'read:admin:account',

res: {
type: 'array',
nullable: false, optional: false,
items: {
type: 'object',
nullable: false, optional: false,
properties: {
id: {
type: 'string',
nullable: false, optional: false,
format: 'id',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string',
nullable: false, optional: false,
format: 'date-time',
},
code: {
type: 'string',
nullable: false, optional: false,
},
username: {
type: 'string',
nullable: false, optional: false,
example: 'ai',
},
email: {
type: 'string',
nullable: true, optional: true,
},
},
},
},
} as const;

export const paramDef = {
type: 'object',
properties: {
limit: { type: 'integer', minimum: 1, maximum: 100, default: 10 },
offset: { type: 'integer', default: 0 },
sort: { type: 'string', enum: ['+createdAt', '-createdAt'] },
username: { type: 'string', nullable: true, default: null },
email: { type: 'string', nullable: true, default: null },
code: { type: 'string', nullable: true, default: null },
},
required: [],
} as const;

@Injectable()
export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export
constructor(
@Inject(DI.userPendingsRepository)
private userPendingsRepository: UserPendingsRepository,
) {
super(meta, paramDef, async (ps, me) => {
const query = this.userPendingsRepository.createQueryBuilder('pending');

if (ps.username != null) {
query.andWhere('pending.username = :username', { username: ps.username });
}

if (ps.email != null) {
query.andWhere('pending.email = :email', { email: ps.email });
}

if (ps.code != null) {
query.andWhere('pending.code = :code', { code: ps.code });
}

switch (ps.sort) {
case '+createdAt': query.orderBy('pending.id', 'DESC'); break;
case '-createdAt': query.orderBy('pending.id', 'ASC'); break;
default: query.orderBy('pending.id', 'DESC'); break;
}

query.limit(ps.limit);
query.offset(ps.offset);

const pendings = await query.getMany();
return pendings.map(pending => ({
id: pending.id,
createdAt: pending.createdAt.toISOString(),
code: pending.code,
username: pending.username,
email: pending.email,
}));
});
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { Inject, Injectable } from '@nestjs/common';
import { Endpoint } from '@/server/api/endpoint-base.js';
import { DI } from '@/di-symbols.js';
import type { UserPendingsRepository } from '@/models/_.js';
import { ApiError } from '@/server/api/error.js';

export const meta = {
tags: ['admin'],

requireCredential: true,
requireAdmin: true,
kind: 'write:admin:account',

errors: {
pendingUserNotFound: {
message: 'Pending User not found.',
code: 'PENDING_USER_NOT_FOUND',
id: 'a04d6118-65e6-4508-9144-9900a331bbf3',
},
},
} as const;

export const paramDef = {
type: 'object',
properties: {
id: { type: 'string', format: 'misskey:id' },
code: { type: 'string' },
},
anyOf: [
{ required: ['id'] },
{ required: ['code'] },
],
} as const;

@Injectable()
export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export
constructor(
@Inject(DI.userPendingsRepository)
private userPendingsRepository: UserPendingsRepository,
) {
super(meta, paramDef, async (ps, me) => {
const pendingUser = await this.userPendingsRepository.findOneBy({ id: ps.id, code: ps.code });

if (pendingUser == null) throw new ApiError(meta.errors.pendingUserNotFound);

await this.userPendingsRepository.delete(pendingUser.id);
});
}
}
12 changes: 12 additions & 0 deletions packages/misskey-js/etc/misskey-js.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,15 @@ type AdminAccountsFindByEmailRequest = operations['admin___accounts___find-by-em
// @public (undocumented)
type AdminAccountsFindByEmailResponse = operations['admin___accounts___find-by-email']['responses']['200']['content']['application/json'];

// @public (undocumented)
type AdminAccountsPendingListRequest = operations['admin___accounts___pending___list']['requestBody']['content']['application/json'];

// @public (undocumented)
type AdminAccountsPendingListResponse = operations['admin___accounts___pending___list']['responses']['200']['content']['application/json'];

// @public (undocumented)
type AdminAccountsPendingRevokeRequest = operations['admin___accounts___pending___revoke']['requestBody']['content']['application/json'];

// @public (undocumented)
type AdminAdCreateRequest = operations['admin___ad___create']['requestBody']['content']['application/json'];

Expand Down Expand Up @@ -1189,6 +1198,9 @@ declare namespace entities {
AdminAccountsDeleteRequest,
AdminAccountsFindByEmailRequest,
AdminAccountsFindByEmailResponse,
AdminAccountsPendingListRequest,
AdminAccountsPendingListResponse,
AdminAccountsPendingRevokeRequest,
AdminAdCreateRequest,
AdminAdCreateResponse,
AdminAdDeleteRequest,
Expand Down
22 changes: 22 additions & 0 deletions packages/misskey-js/src/autogen/apiClientJSDoc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,28 @@ declare module '../api.js' {
credential?: string | null,
): Promise<SwitchCaseResponseType<E, P>>;

/**
* No description provided.
*
* **Credential required**: *Yes* / **Permission**: *read:admin:account*
*/
request<E extends 'admin/accounts/pending/list', P extends Endpoints[E]['req']>(
endpoint: E,
params: P,
credential?: string | null,
): Promise<SwitchCaseResponseType<E, P>>;

/**
* No description provided.
*
* **Credential required**: *Yes* / **Permission**: *write:admin:account*
*/
request<E extends 'admin/accounts/pending/revoke', P extends Endpoints[E]['req']>(
endpoint: E,
params: P,
credential?: string | null,
): Promise<SwitchCaseResponseType<E, P>>;

/**
* No description provided.
*
Expand Down
5 changes: 5 additions & 0 deletions packages/misskey-js/src/autogen/endpoint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ import type {
AdminAccountsDeleteRequest,
AdminAccountsFindByEmailRequest,
AdminAccountsFindByEmailResponse,
AdminAccountsPendingListRequest,
AdminAccountsPendingListResponse,
AdminAccountsPendingRevokeRequest,
AdminAdCreateRequest,
AdminAdCreateResponse,
AdminAdDeleteRequest,
Expand Down Expand Up @@ -583,6 +586,8 @@ export type Endpoints = {
'admin/accounts/create': { req: AdminAccountsCreateRequest; res: AdminAccountsCreateResponse };
'admin/accounts/delete': { req: AdminAccountsDeleteRequest; res: EmptyResponse };
'admin/accounts/find-by-email': { req: AdminAccountsFindByEmailRequest; res: AdminAccountsFindByEmailResponse };
'admin/accounts/pending/list': { req: AdminAccountsPendingListRequest; res: AdminAccountsPendingListResponse };
'admin/accounts/pending/revoke': { req: AdminAccountsPendingRevokeRequest; res: EmptyResponse };
'admin/ad/create': { req: AdminAdCreateRequest; res: AdminAdCreateResponse };
'admin/ad/delete': { req: AdminAdDeleteRequest; res: EmptyResponse };
'admin/ad/list': { req: AdminAdListRequest; res: AdminAdListResponse };
Expand Down
3 changes: 3 additions & 0 deletions packages/misskey-js/src/autogen/entities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ export type AdminAccountsCreateResponse = operations['admin___accounts___create'
export type AdminAccountsDeleteRequest = operations['admin___accounts___delete']['requestBody']['content']['application/json'];
export type AdminAccountsFindByEmailRequest = operations['admin___accounts___find-by-email']['requestBody']['content']['application/json'];
export type AdminAccountsFindByEmailResponse = operations['admin___accounts___find-by-email']['responses']['200']['content']['application/json'];
export type AdminAccountsPendingListRequest = operations['admin___accounts___pending___list']['requestBody']['content']['application/json'];
export type AdminAccountsPendingListResponse = operations['admin___accounts___pending___list']['responses']['200']['content']['application/json'];
export type AdminAccountsPendingRevokeRequest = operations['admin___accounts___pending___revoke']['requestBody']['content']['application/json'];
export type AdminAdCreateRequest = operations['admin___ad___create']['requestBody']['content']['application/json'];
export type AdminAdCreateResponse = operations['admin___ad___create']['responses']['200']['content']['application/json'];
export type AdminAdDeleteRequest = operations['admin___ad___delete']['requestBody']['content']['application/json'];
Expand Down
Loading
Loading