From ffcc967aefc2639972b80737c3b1c0aedbd7dca3 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Tue, 4 Aug 2020 11:28:44 +0900 Subject: [PATCH] Fix: Spurious Error Message When Saving User With Non-Admin Rights (fix #1793) --- BTCPayServer/Controllers/ServerController.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/BTCPayServer/Controllers/ServerController.cs b/BTCPayServer/Controllers/ServerController.cs index 6a017b42e..fc8b0bf8e 100644 --- a/BTCPayServer/Controllers/ServerController.cs +++ b/BTCPayServer/Controllers/ServerController.cs @@ -285,14 +285,15 @@ namespace BTCPayServer.Controllers return NotFound(); var admins = await _UserManager.GetUsersInRoleAsync(Roles.ServerAdmin); - if (!viewModel.IsAdmin && admins.Count == 1) + var roles = await _UserManager.GetRolesAsync(user); + var wasAdmin = IsAdmin(roles); + if (!viewModel.IsAdmin && admins.Count == 1 && wasAdmin) { TempData[WellKnownTempData.ErrorMessage] = "This is the only Admin, so their role can't be removed until another Admin is added."; return View(viewModel); // return } - var roles = await _UserManager.GetRolesAsync(user); - if (viewModel.IsAdmin != IsAdmin(roles)) + if (viewModel.IsAdmin != wasAdmin) { if (viewModel.IsAdmin) await _UserManager.AddToRoleAsync(user, Roles.ServerAdmin);