summaryrefslogtreecommitdiff
path: root/src/server/api/call.ts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-04-14 20:38:55 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-04-14 20:38:55 +0900
commitd66e4b7ff97d512e2a2523815e2eef170456b37f (patch)
tree59ae1a102d88b5c2c2236b734ea4a584b4f9ba46 /src/server/api/call.ts
parent10.100.0 (diff)
parent11.0.0 (diff)
downloadmisskey-d66e4b7ff97d512e2a2523815e2eef170456b37f.tar.gz
misskey-d66e4b7ff97d512e2a2523815e2eef170456b37f.tar.bz2
misskey-d66e4b7ff97d512e2a2523815e2eef170456b37f.zip
Merge branch 'develop'
Diffstat (limited to 'src/server/api/call.ts')
-rw-r--r--src/server/api/call.ts20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/server/api/call.ts b/src/server/api/call.ts
index 89a44b3c65..c79f8eef5d 100644
--- a/src/server/api/call.ts
+++ b/src/server/api/call.ts
@@ -1,10 +1,10 @@
import { performance } from 'perf_hooks';
import limiter from './limiter';
-import { IUser } from '../../models/user';
-import { IApp } from '../../models/app';
+import { User } from '../../models/entities/user';
import endpoints from './endpoints';
import { ApiError } from './error';
import { apiLogger } from './logger';
+import { App } from '../../models/entities/app';
const accessDenied = {
message: 'Access denied.',
@@ -12,7 +12,7 @@ const accessDenied = {
id: '56f35758-7dd5-468b-8439-5d6fb8ec9b8e'
};
-export default async (endpoint: string, user: IUser, app: IApp, data: any, file?: any) => {
+export default async (endpoint: string, user: User | null | undefined, app: App | null | undefined, data: any, file?: any) => {
const isSecure = user != null && app == null;
const ep = endpoints.find(e => e.name === endpoint);
@@ -39,15 +39,15 @@ export default async (endpoint: string, user: IUser, app: IApp, data: any, file?
});
}
- if (ep.meta.requireCredential && user.isSuspended) {
+ if (ep.meta.requireCredential && user!.isSuspended) {
throw new ApiError(accessDenied, { reason: 'Your account has been suspended.' });
}
- if (ep.meta.requireAdmin && !user.isAdmin) {
+ if (ep.meta.requireAdmin && !user!.isAdmin) {
throw new ApiError(accessDenied, { reason: 'You are not the admin.' });
}
- if (ep.meta.requireModerator && !user.isAdmin && !user.isModerator) {
+ if (ep.meta.requireModerator && !user!.isAdmin && !user!.isModerator) {
throw new ApiError(accessDenied, { reason: 'You are not a moderator.' });
}
@@ -61,7 +61,7 @@ export default async (endpoint: string, user: IUser, app: IApp, data: any, file?
if (ep.meta.requireCredential && ep.meta.limit) {
// Rate limit
- await limiter(ep, user).catch(e => {
+ await limiter(ep, user!).catch(e => {
throw new ApiError({
message: 'Rate limit exceeded. Please try again later.',
code: 'RATE_LIMIT_EXCEEDED',
@@ -80,7 +80,11 @@ export default async (endpoint: string, user: IUser, app: IApp, data: any, file?
apiLogger.error(`Internal error occurred in ${ep.name}`, {
ep: ep.name,
ps: data,
- e: e
+ e: {
+ message: e.message,
+ code: e.name,
+ stack: e.stack
+ }
});
throw new ApiError(null, {
e: {