From 6a1414ab15c11f116ef75b542ade5766e9c770c9 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 31 May 2013 21:19:22 -0400 Subject: [PATCH] don't allow deletion of only admin user --- .../Library/UserManager.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs index f235262ccd..e6b218c388 100644 --- a/MediaBrowser.Server.Implementations/Library/UserManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs @@ -347,14 +347,21 @@ namespace MediaBrowser.Server.Implementations.Library throw new ArgumentNullException("user"); } - if (Users.FirstOrDefault(u => u.Id == user.Id) == null) + var allUsers = Users.ToList(); + + if (allUsers.FirstOrDefault(u => u.Id == user.Id) == null) { throw new ArgumentException(string.Format("The user cannot be deleted because there is no user with the Name {0} and Id {1}.", user.Name, user.Id)); } - if (Users.Count() == 1) + if (allUsers.Count == 1) { - throw new ArgumentException(string.Format("The user '{0}' be deleted because there must be at least one user in the system.", user.Name)); + throw new ArgumentException(string.Format("The user '{0}' cannot be deleted because there must be at least one user in the system.", user.Name)); + } + + if (user.Configuration.IsAdministrator && allUsers.Count(i => i.Configuration.IsAdministrator) == 1) + { + throw new ArgumentException(string.Format("The user '{0}' cannot be deleted because there must be at least one admin user in the system.", user.Name)); } await UserRepository.DeleteUser(user, CancellationToken.None).ConfigureAwait(false);