feat: 凍結されたユーザーのコンテンツを見えないようにする (MisskeyIO#134)

ついでにEntityServiceの型定義、meのoptionalをやめる
This commit is contained in:
まっちゃとーにゅ 2023-08-08 20:13:05 +09:00 committed by GitHub
parent 3b73874196
commit 7f0acd3ea4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
70 changed files with 742 additions and 325 deletions

View file

@ -12,6 +12,7 @@ import { MetaService } from '@/core/MetaService.js';
import { createTemp } from '@/misc/create-temp.js';
import { bindThis } from '@/decorators.js';
import { RoleService } from '@/core/RoleService.js';
import { IdentifiableError } from '@/misc/identifiable-error.js';
import { ApiError } from './error.js';
import { RateLimiterService } from './RateLimiterService.js';
import { ApiLoggerService } from './ApiLoggerService.js';
@ -356,7 +357,7 @@ export class ApiCallService implements OnApplicationShutdown {
// API invoking
return await ep.exec(data, user, token, file, request.ip, request.headers).catch((err: Error) => {
if (err instanceof ApiError || err instanceof AuthenticationError) {
if (err instanceof ApiError || err instanceof IdentifiableError || err instanceof AuthenticationError) {
throw err;
} else {
const errId = randomUUID();

View file

@ -155,7 +155,7 @@ export class ApiServerService {
return {
ok: true,
token: token.token,
user: await this.userEntityService.pack(token.userId, null, { detail: true }),
user: await this.userEntityService.pack(token.userId, { id: token.userId }, { detail: true }),
};
} else {
return {

View file

@ -117,7 +117,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
const reports = await query.limit(ps.limit).getMany();
return await this.abuseUserReportEntityService.packMany(reports);
return await this.abuseUserReportEntityService.packMany(reports, me);
});
}
}

View file

@ -78,7 +78,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
const files = await query.limit(ps.limit).getMany();
return await this.driveFileEntityService.packMany(files, { detail: true, withUser: true, self: true });
return await this.driveFileEntityService.packMany(files, me, { detail: true, withUser: true, self: true });
});
}
}

View file

@ -76,7 +76,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
const reports = await query.limit(ps.limit).getMany();
return await this.moderationLogEntityService.packMany(reports);
return await this.moderationLogEntityService.packMany(reports, me);
});
}
}

View file

@ -61,7 +61,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
secret: secret,
}).then(x => this.appsRepository.findOneByOrFail(x.identifiers[0]));
return await this.appEntityService.pack(app, null, {
return await this.appEntityService.pack(app, me, {
detail: true,
includeSecret: true,
});

View file

@ -110,7 +110,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
return {
accessToken: accessToken.token,
user: await this.userEntityService.pack(session.userId, null, {
user: await this.userEntityService.pack(session.userId, me, {
detail: true,
}),
};

View file

@ -75,7 +75,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
const files = await query.limit(ps.limit).getMany();
return await this.driveFileEntityService.packMany(files, { detail: false, self: true });
return await this.driveFileEntityService.packMany(files, me, { detail: false, self: true });
});
}
}

View file

@ -108,7 +108,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
requestIp: instance.enableIpLogging ? ip : null,
requestHeaders: instance.enableIpLogging ? headers : null,
});
return await this.driveFileEntityService.pack(driveFile, { self: true });
return await this.driveFileEntityService.pack(driveFile, me, { self: true });
} catch (err) {
if (err instanceof Error || typeof err === 'string') {
console.error(err);

View file

@ -47,7 +47,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
userId: me.id,
});
return await this.driveFileEntityService.packMany(files, { self: true });
return await this.driveFileEntityService.packMany(files, me, { self: true });
});
}
}

View file

@ -50,7 +50,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
folderId: ps.folderId ?? IsNull(),
});
return await Promise.all(files.map(file => this.driveFileEntityService.pack(file, { self: true })));
return await Promise.all(files.map(file => this.driveFileEntityService.pack(file, me, { self: true })));
});
}
}

View file

@ -84,7 +84,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
throw new ApiError(meta.errors.accessDenied);
}
return await this.driveFileEntityService.pack(file, {
return await this.driveFileEntityService.pack(file, me, {
detail: true,
withUser: true,
self: true,

View file

@ -129,7 +129,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
isSensitive: file.isSensitive,
});
const fileObj = await this.driveFileEntityService.pack(file, { self: true });
const fileObj = await this.driveFileEntityService.pack(file, me, { self: true });
// Publish fileUpdated event
this.globalEventService.publishDriveStream(me.id, 'fileUpdated', fileObj);

View file

@ -51,7 +51,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
) {
super(meta, paramDef, async (ps, user, _1, _2, _3, ip, headers) => {
this.driveService.uploadFromUrl({ url: ps.url, user, folderId: ps.folderId, sensitive: ps.isSensitive, force: ps.force, comment: ps.comment, requestIp: ip, requestHeaders: headers }).then(file => {
this.driveFileEntityService.pack(file, { self: true }).then(packedFile => {
this.driveFileEntityService.pack(file, user, { self: true }).then(packedFile => {
this.globalEventService.publishMainStream(user.id, 'urlUploadFinished', {
marker: ps.marker,
file: packedFile,

View file

@ -58,7 +58,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
const files = await query.limit(ps.limit).getMany();
return await this.driveFileEntityService.packMany(files, { detail: false, self: true });
return await this.driveFileEntityService.packMany(files, me, { detail: false, self: true });
});
}
}

View file

@ -60,7 +60,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
permissions: ps.permissions,
}).then(x => this.flashsRepository.findOneByOrFail(x.identifiers[0]));
return await this.flashEntityService.pack(flash);
return await this.flashEntityService.pack(flash, me);
});
}
}

View file

@ -51,7 +51,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
.limit(ps.limit)
.getMany();
return await this.flashEntityService.packMany(flashs);
return await this.flashEntityService.packMany(flashs, me);
});
}
}

View file

@ -67,7 +67,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
.limit(ps.limit)
.getMany();
return await Promise.all(requests.map(req => this.followRequestEntityService.pack(req)));
return await this.followRequestEntityService.packMany(requests, me);
});
}
}

View file

@ -51,7 +51,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
.limit(ps.limit)
.getMany();
return await this.pageEntityService.packMany(pages);
return await this.pageEntityService.packMany(pages, me);
});
}
}

View file

@ -341,7 +341,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
};
if (ps.detail) {
const proxyAccount = instance.proxyAccountId ? await this.userEntityService.pack(instance.proxyAccountId).catch(() => null) : null;
const proxyAccount = instance.proxyAccountId ? await this.userEntityService.pack(instance.proxyAccountId, null).catch(() => null) : null;
response.proxyAccountName = proxyAccount ? proxyAccount.username : null;
response.features = {

View file

@ -81,7 +81,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
const notes = await query.limit(ps.limit).getMany();
return await this.noteEntityService.packMany(notes);
return await this.noteEntityService.packMany(notes, me);
});
}
}

View file

@ -117,7 +117,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
font: ps.font,
})).then(x => this.pagesRepository.findOneByOrFail(x.identifiers[0]));
return await this.pageEntityService.pack(page);
return await this.pageEntityService.pack(page, me);
});
}
}

View file

@ -77,7 +77,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
// Pull the user
await this.userListJoiningsRepository.delete({ userListId: userList.id, userId: user.id });
this.globalEventService.publishUserListStream(userList.id, 'userRemoved', await this.userEntityService.pack(user));
this.globalEventService.publishUserListStream(userList.id, 'userRemoved', await this.userEntityService.pack(user, me));
});
}
}

View file

@ -51,7 +51,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
.limit(ps.limit)
.getMany();
return await this.pageEntityService.packMany(pages);
return await this.pageEntityService.packMany(pages, me);
});
}
}