From 30444e5f1abcefeef49cd54d44ff0c8db79d41c2 Mon Sep 17 00:00:00 2001
From: syuilo <syuilotan@yahoo.co.jp>
Date: Tue, 21 Aug 2018 01:03:58 +0900
Subject: [PATCH] =?UTF-8?q?#2359=20=E3=81=AA=E3=81=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/models/user.ts                             | 1 +
 src/server/api/call.ts                         | 2 +-
 src/server/api/endpoints/admin/suspend-user.ts | 4 ++++
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/models/user.ts b/src/models/user.ts
index fdbb245faa..31d09bc8f8 100644
--- a/src/models/user.ts
+++ b/src/models/user.ts
@@ -118,6 +118,7 @@ export interface IRemoteUser extends IUserBase {
 		publicKeyPem: string;
 	};
 	updatedAt: Date;
+	isAdmin: false;
 }
 
 export type IUser = ILocalUser | IRemoteUser;
diff --git a/src/server/api/call.ts b/src/server/api/call.ts
index e4bb30b695..c191701b02 100644
--- a/src/server/api/call.ts
+++ b/src/server/api/call.ts
@@ -21,7 +21,7 @@ export default (endpoint: string, user: IUser, app: IApp, data: any, file?: any)
 		return rej('YOUR_ACCOUNT_HAS_BEEN_SUSPENDED');
 	}
 
-	if (ep.meta.requireAdmin && !(isLocalUser(user) && user.isAdmin)) {
+	if (ep.meta.requireAdmin && !user.isAdmin) {
 		return rej('YOU_ARE_NOT_ADMIN');
 	}
 
diff --git a/src/server/api/endpoints/admin/suspend-user.ts b/src/server/api/endpoints/admin/suspend-user.ts
index 9c32ba987d..9b492c6e15 100644
--- a/src/server/api/endpoints/admin/suspend-user.ts
+++ b/src/server/api/endpoints/admin/suspend-user.ts
@@ -34,6 +34,10 @@ export default (params: any) => new Promise(async (res, rej) => {
 		return rej('user not found');
 	}
 
+	if (user.isAdmin) {
+		return rej('cannot suspend admin');
+	}
+
 	await User.findOneAndUpdate({
 		_id: user._id
 	}, {