summaryrefslogtreecommitdiff
path: root/packages/backend/src/core
diff options
context:
space:
mode:
authorMar0xy <marie@kaifa.ch>2023-10-20 12:50:56 +0200
committerMar0xy <marie@kaifa.ch>2023-10-20 12:50:56 +0200
commit71b7c31958e2ce11a4b5a11a5c282ca3bdcb41dc (patch)
tree653fabf747e5a53cb39c9e167d2499a4430e76c7 /packages/backend/src/core
parentupd: wrap username in header (diff)
downloadsharkey-71b7c31958e2ce11a4b5a11a5c282ca3bdcb41dc.tar.gz
sharkey-71b7c31958e2ce11a4b5a11a5c282ca3bdcb41dc.tar.bz2
sharkey-71b7c31958e2ce11a4b5a11a5c282ca3bdcb41dc.zip
upd: refetch user keys on signature failure
Reference: https://github.com/misskey-dev/misskey/pull/12051
Diffstat (limited to 'packages/backend/src/core')
-rw-r--r--packages/backend/src/core/activitypub/ApDbResolverService.ts15
1 files changed, 14 insertions, 1 deletions
diff --git a/packages/backend/src/core/activitypub/ApDbResolverService.ts b/packages/backend/src/core/activitypub/ApDbResolverService.ts
index 995c5dcd5f..dd1687edeb 100644
--- a/packages/backend/src/core/activitypub/ApDbResolverService.ts
+++ b/packages/backend/src/core/activitypub/ApDbResolverService.ts
@@ -12,7 +12,7 @@ import type { MiUserPublickey } from '@/models/UserPublickey.js';
import { CacheService } from '@/core/CacheService.js';
import type { MiNote } from '@/models/Note.js';
import { bindThis } from '@/decorators.js';
-import { MiLocalUser, MiRemoteUser } from '@/models/User.js';
+import type { MiLocalUser, MiRemoteUser } from '@/models/User.js';
import { getApId } from './type.js';
import { ApPersonService } from './models/ApPersonService.js';
import type { IObject } from './type.js';
@@ -164,6 +164,19 @@ export class ApDbResolverService implements OnApplicationShutdown {
};
}
+ /**
+ * Sharkey User -> Refetched Key
+ */
+ @bindThis
+ public async refetchPublicKeyForApId(user: MiRemoteUser): Promise<MiUserPublickey | null> {
+ await this.apPersonService.updatePerson(user.uri);
+ const key = await this.userPublickeysRepository.findOneBy({ userId: user.id });
+ if (key != null) {
+ await this.publicKeyByUserIdCache.set(user.id, key);
+ }
+ return key;
+ }
+
@bindThis
public dispose(): void {
this.publicKeyCache.dispose();