feat: Removing stack trace info in production env (#11657)

* feat: Hiding stack traces in production env

* sytle

* style

* style

* add SPDX

* move ./error.js to ./misc/error.js

* revert: remove frontend changes

* feat: Hiding stack traces in production env

* feat: Hiding stack traces in production env

* revert

* revert

* revert

* change and fix

* revert

* fix queue endpoint test

---------

Co-authored-by: tamaina <tamaina@hotmail.co.jp>
Co-authored-by: Kagami Sascha Rosylight <saschanaz@outlook.com>
This commit is contained in:
MomentQYC 2023-08-21 16:21:57 +08:00 committed by GitHub
parent 50ec129b87
commit 388448f298
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 7 deletions

View file

@ -148,18 +148,18 @@ export class ClientServerService {
if (url === bullBoardPath || url.startsWith(bullBoardPath + '/')) { if (url === bullBoardPath || url.startsWith(bullBoardPath + '/')) {
const token = request.cookies.token; const token = request.cookies.token;
if (token == null) { if (token == null) {
reply.code(401); reply.code(401).send('Login required');
throw new Error('login required'); return;
} }
const user = await this.usersRepository.findOneBy({ token }); const user = await this.usersRepository.findOneBy({ token });
if (user == null) { if (user == null) {
reply.code(403); reply.code(403).send('No such user');
throw new Error('no such user'); return;
} }
const isAdministrator = await this.roleService.isAdministrator(user); const isAdministrator = await this.roleService.isAdministrator(user);
if (!isAdministrator) { if (!isAdministrator) {
reply.code(403); reply.code(403).send('Access denied');
throw new Error('access denied'); return;
} }
} }
}); });

View file

@ -34,6 +34,8 @@ describe('Webリソース', () => {
let aliceGalleryPost: any; let aliceGalleryPost: any;
let aliceChannel: any; let aliceChannel: any;
let bob: misskey.entities.MeSignup;
type Request = { type Request = {
path: string, path: string,
accept?: string, accept?: string,
@ -90,6 +92,8 @@ describe('Webリソース', () => {
fileIds: [aliceUploadedFile.body.id], fileIds: [aliceUploadedFile.body.id],
}); });
aliceChannel = await channel(alice, {}); aliceChannel = await channel(alice, {});
bob = await signup({ username: 'alice' });
}, 1000 * 60 * 2); }, 1000 * 60 * 2);
afterAll(async () => { afterAll(async () => {
@ -163,9 +167,15 @@ describe('Webリソース', () => {
}); });
describe.each([{ path: '/queue' }])('$path', ({ path }) => { describe.each([{ path: '/queue' }])('$path', ({ path }) => {
test('はログインしないとGETできない。', async () => await notOk({
path,
status: 401,
}));
test('はadminでなければGETできない。', async () => await notOk({ test('はadminでなければGETできない。', async () => await notOk({
path, path,
status: 500, // FIXME? 403ではない。 cookie: cookie(bob),
status: 403,
})); }));
test('はadminならGETできる。', async () => await ok({ test('はadminならGETできる。', async () => await ok({