fix: 削除したノートやユーザーがリモートから参照されると復活することがあるのを修正 (#7918)
* Fix #7557 * CHANGELOG * Fix user * CHANGELOG * Tune CHANGELOG * Tune CHANGELOG * resolver * Remove check * Remove import * CHANGELOG * Tune Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
This commit is contained in:
parent
9236a8fd6c
commit
e2556189de
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
- リレー向けのActivityが一部実装で除外されてしまうことがあるのを修正
|
- リレー向けのActivityが一部実装で除外されてしまうことがあるのを修正
|
||||||
|
- 削除したノートやユーザーがリモートから参照されると復活することがあるのを修正
|
||||||
|
|
||||||
## 12.94.1 (2021/10/25)
|
## 12.94.1 (2021/10/25)
|
||||||
|
|
||||||
|
|
|
@ -288,6 +288,10 @@ export async function resolveNote(value: string | IObject, resolver?: Resolver):
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
|
if (uri.startsWith(config.url)) {
|
||||||
|
throw new StatusError('cannot resolve local note', 400, 'cannot resolve local note');
|
||||||
|
}
|
||||||
|
|
||||||
// リモートサーバーからフェッチしてきて登録
|
// リモートサーバーからフェッチしてきて登録
|
||||||
// ここでuriの代わりに添付されてきたNote Objectが指定されていると、サーバーフェッチを経ずにノートが生成されるが
|
// ここでuriの代わりに添付されてきたNote Objectが指定されていると、サーバーフェッチを経ずにノートが生成されるが
|
||||||
// 添付されてきたNote Objectは偽装されている可能性があるため、常にuriを指定してサーバーフェッチを行う。
|
// 添付されてきたNote Objectは偽装されている可能性があるため、常にuriを指定してサーバーフェッチを行う。
|
||||||
|
|
|
@ -29,6 +29,7 @@ import { toArray } from '@/prelude/array';
|
||||||
import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata';
|
import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata';
|
||||||
import { normalizeForSearch } from '@/misc/normalize-for-search';
|
import { normalizeForSearch } from '@/misc/normalize-for-search';
|
||||||
import { truncate } from '@/misc/truncate';
|
import { truncate } from '@/misc/truncate';
|
||||||
|
import { StatusError } from '@/misc/fetch';
|
||||||
|
|
||||||
const logger = apLogger;
|
const logger = apLogger;
|
||||||
|
|
||||||
|
@ -116,6 +117,10 @@ export async function fetchPerson(uri: string, resolver?: Resolver): Promise<Use
|
||||||
export async function createPerson(uri: string, resolver?: Resolver): Promise<User> {
|
export async function createPerson(uri: string, resolver?: Resolver): Promise<User> {
|
||||||
if (typeof uri !== 'string') throw new Error('uri is not string');
|
if (typeof uri !== 'string') throw new Error('uri is not string');
|
||||||
|
|
||||||
|
if (uri.startsWith(config.url)) {
|
||||||
|
throw new StatusError('cannot resolve local user', 400, 'cannot resolve local user');
|
||||||
|
}
|
||||||
|
|
||||||
if (resolver == null) resolver = new Resolver();
|
if (resolver == null) resolver = new Resolver();
|
||||||
|
|
||||||
const object = await resolver.resolve(uri) as any;
|
const object = await resolver.resolve(uri) as any;
|
||||||
|
|
Loading…
Reference in a new issue