add backend api remove all keys in scope
This commit is contained in:
parent
c670c258dc
commit
f395324e8b
|
@ -131,7 +131,7 @@ export class RegistryApiService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@bindThis
|
@bindThis
|
||||||
public async remove(userId: MiUser['id'], domain: string | null, scope: string[], key: string) {
|
public async remove(userId: MiUser['id'], domain: string | null, scope: string[], key?: string) {
|
||||||
const query = this.registryItemsRepository.createQueryBuilder().delete();
|
const query = this.registryItemsRepository.createQueryBuilder().delete();
|
||||||
if (domain) {
|
if (domain) {
|
||||||
query.where('domain = :domain', { domain: domain });
|
query.where('domain = :domain', { domain: domain });
|
||||||
|
@ -139,7 +139,9 @@ export class RegistryApiService {
|
||||||
query.where('domain IS NULL');
|
query.where('domain IS NULL');
|
||||||
}
|
}
|
||||||
query.andWhere('userId = :userId', { userId: userId });
|
query.andWhere('userId = :userId', { userId: userId });
|
||||||
|
if (key) {
|
||||||
query.andWhere('key = :key', { key: key });
|
query.andWhere('key = :key', { key: key });
|
||||||
|
}
|
||||||
query.andWhere('scope = :scope', { scope: scope });
|
query.andWhere('scope = :scope', { scope: scope });
|
||||||
|
|
||||||
await query.execute();
|
await query.execute();
|
||||||
|
|
|
@ -230,6 +230,7 @@ import * as ep___i_registry_get from './endpoints/i/registry/get.js';
|
||||||
import * as ep___i_registry_keysWithType from './endpoints/i/registry/keys-with-type.js';
|
import * as ep___i_registry_keysWithType from './endpoints/i/registry/keys-with-type.js';
|
||||||
import * as ep___i_registry_keys from './endpoints/i/registry/keys.js';
|
import * as ep___i_registry_keys from './endpoints/i/registry/keys.js';
|
||||||
import * as ep___i_registry_remove from './endpoints/i/registry/remove.js';
|
import * as ep___i_registry_remove from './endpoints/i/registry/remove.js';
|
||||||
|
import * as ep___i_registry_removeAllKeysInScope from './endpoints/i/registry/remove-all-keys-in-scope.js';
|
||||||
import * as ep___i_registry_scopesWithDomain from './endpoints/i/registry/scopes-with-domain.js';
|
import * as ep___i_registry_scopesWithDomain from './endpoints/i/registry/scopes-with-domain.js';
|
||||||
import * as ep___i_registry_set from './endpoints/i/registry/set.js';
|
import * as ep___i_registry_set from './endpoints/i/registry/set.js';
|
||||||
import * as ep___i_revokeToken from './endpoints/i/revoke-token.js';
|
import * as ep___i_revokeToken from './endpoints/i/revoke-token.js';
|
||||||
|
@ -588,6 +589,7 @@ const $i_registry_get: Provider = { provide: 'ep:i/registry/get', useClass: ep__
|
||||||
const $i_registry_keysWithType: Provider = { provide: 'ep:i/registry/keys-with-type', useClass: ep___i_registry_keysWithType.default };
|
const $i_registry_keysWithType: Provider = { provide: 'ep:i/registry/keys-with-type', useClass: ep___i_registry_keysWithType.default };
|
||||||
const $i_registry_keys: Provider = { provide: 'ep:i/registry/keys', useClass: ep___i_registry_keys.default };
|
const $i_registry_keys: Provider = { provide: 'ep:i/registry/keys', useClass: ep___i_registry_keys.default };
|
||||||
const $i_registry_remove: Provider = { provide: 'ep:i/registry/remove', useClass: ep___i_registry_remove.default };
|
const $i_registry_remove: Provider = { provide: 'ep:i/registry/remove', useClass: ep___i_registry_remove.default };
|
||||||
|
const $i_registry_removeAllKeysInScope: Provider = { provide: 'ep:i/registry/remove-all-keys-in-scope', useClass: ep___i_registry_removeAllKeysInScope.default };
|
||||||
const $i_registry_scopesWithDomain: Provider = { provide: 'ep:i/registry/scopes-with-domain', useClass: ep___i_registry_scopesWithDomain.default };
|
const $i_registry_scopesWithDomain: Provider = { provide: 'ep:i/registry/scopes-with-domain', useClass: ep___i_registry_scopesWithDomain.default };
|
||||||
const $i_registry_set: Provider = { provide: 'ep:i/registry/set', useClass: ep___i_registry_set.default };
|
const $i_registry_set: Provider = { provide: 'ep:i/registry/set', useClass: ep___i_registry_set.default };
|
||||||
const $i_revokeToken: Provider = { provide: 'ep:i/revoke-token', useClass: ep___i_revokeToken.default };
|
const $i_revokeToken: Provider = { provide: 'ep:i/revoke-token', useClass: ep___i_revokeToken.default };
|
||||||
|
@ -950,6 +952,7 @@ const $retention: Provider = { provide: 'ep:retention', useClass: ep___retention
|
||||||
$i_registry_keysWithType,
|
$i_registry_keysWithType,
|
||||||
$i_registry_keys,
|
$i_registry_keys,
|
||||||
$i_registry_remove,
|
$i_registry_remove,
|
||||||
|
$i_registry_removeAllKeysInScope,
|
||||||
$i_registry_scopesWithDomain,
|
$i_registry_scopesWithDomain,
|
||||||
$i_registry_set,
|
$i_registry_set,
|
||||||
$i_revokeToken,
|
$i_revokeToken,
|
||||||
|
@ -1306,6 +1309,7 @@ const $retention: Provider = { provide: 'ep:retention', useClass: ep___retention
|
||||||
$i_registry_keysWithType,
|
$i_registry_keysWithType,
|
||||||
$i_registry_keys,
|
$i_registry_keys,
|
||||||
$i_registry_remove,
|
$i_registry_remove,
|
||||||
|
$i_registry_removeAllKeysInScope,
|
||||||
$i_registry_scopesWithDomain,
|
$i_registry_scopesWithDomain,
|
||||||
$i_registry_set,
|
$i_registry_set,
|
||||||
$i_revokeToken,
|
$i_revokeToken,
|
||||||
|
|
|
@ -230,6 +230,7 @@ import * as ep___i_registry_get from './endpoints/i/registry/get.js';
|
||||||
import * as ep___i_registry_keysWithType from './endpoints/i/registry/keys-with-type.js';
|
import * as ep___i_registry_keysWithType from './endpoints/i/registry/keys-with-type.js';
|
||||||
import * as ep___i_registry_keys from './endpoints/i/registry/keys.js';
|
import * as ep___i_registry_keys from './endpoints/i/registry/keys.js';
|
||||||
import * as ep___i_registry_remove from './endpoints/i/registry/remove.js';
|
import * as ep___i_registry_remove from './endpoints/i/registry/remove.js';
|
||||||
|
import * as ep___i_registry_removeAllKeysInScope from './endpoints/i/registry/remove-all-keys-in-scope.js';
|
||||||
import * as ep___i_registry_scopesWithDomain from './endpoints/i/registry/scopes-with-domain.js';
|
import * as ep___i_registry_scopesWithDomain from './endpoints/i/registry/scopes-with-domain.js';
|
||||||
import * as ep___i_registry_set from './endpoints/i/registry/set.js';
|
import * as ep___i_registry_set from './endpoints/i/registry/set.js';
|
||||||
import * as ep___i_revokeToken from './endpoints/i/revoke-token.js';
|
import * as ep___i_revokeToken from './endpoints/i/revoke-token.js';
|
||||||
|
@ -586,6 +587,7 @@ const eps = [
|
||||||
['i/registry/keys-with-type', ep___i_registry_keysWithType],
|
['i/registry/keys-with-type', ep___i_registry_keysWithType],
|
||||||
['i/registry/keys', ep___i_registry_keys],
|
['i/registry/keys', ep___i_registry_keys],
|
||||||
['i/registry/remove', ep___i_registry_remove],
|
['i/registry/remove', ep___i_registry_remove],
|
||||||
|
['i/registry/remove-all-keys-in-scope', ep___i_registry_removeAllKeysInScope],
|
||||||
['i/registry/scopes-with-domain', ep___i_registry_scopesWithDomain],
|
['i/registry/scopes-with-domain', ep___i_registry_scopesWithDomain],
|
||||||
['i/registry/set', ep___i_registry_set],
|
['i/registry/set', ep___i_registry_set],
|
||||||
['i/revoke-token', ep___i_revokeToken],
|
['i/revoke-token', ep___i_revokeToken],
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: syuilo and other misskey contributors
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { Inject, Injectable } from '@nestjs/common';
|
||||||
|
import { Endpoint } from '@/server/api/endpoint-base.js';
|
||||||
|
import type { RegistryItemsRepository } from '@/models/_.js';
|
||||||
|
import { DI } from '@/di-symbols.js';
|
||||||
|
import { RegistryApiService } from '@/core/RegistryApiService.js';
|
||||||
|
import { ApiError } from '../../../error.js';
|
||||||
|
|
||||||
|
export const meta = {
|
||||||
|
requireCredential: true,
|
||||||
|
|
||||||
|
errors: {},
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export const paramDef = {
|
||||||
|
type: 'object',
|
||||||
|
properties: {
|
||||||
|
scope: { type: 'array', default: [], items: {
|
||||||
|
type: 'string', pattern: /^[a-zA-Z0-9_]+$/.toString().slice(1, -1),
|
||||||
|
} },
|
||||||
|
domain: { type: 'string', nullable: true },
|
||||||
|
},
|
||||||
|
required: ['scope'],
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export
|
||||||
|
constructor(
|
||||||
|
private registryApiService: RegistryApiService,
|
||||||
|
) {
|
||||||
|
super(meta, paramDef, async (ps, me, accessToken) => {
|
||||||
|
await this.registryApiService.remove(me.id, accessToken != null ? accessToken.id : (ps.domain ?? null), ps.scope);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue