public Result ReplaceAdmin(string oldAdminUsername, string oldAdminPassword, string newAdminUsername, string newAdminPassword)
{
try
{
log.Info("got request to replace admin");
Result res = securityManager.AuthenticateAdmin(oldAdminUsername, oldAdminPassword);
if (res == Result.OK)
{
User newAdmin;
try
{
newAdmin = dataManager.GetUser(newAdminUsername);
}
catch (UserNotFoundException)
{
newAdmin = new User(newAdminUsername, newAdminPassword);
dataManager.AddUser(newAdmin);
}
User oldAdmin = dataManager.GetAdmin();
if (CheckIfModerator(oldAdminUsername))
oldAdmin.Level = AuthorizationLevel.MODERATOR;
else
oldAdmin.Level = AuthorizationLevel.MEMBER;
newAdmin.Level = AuthorizationLevel.ADMIN;
if (dataManager.SetAdmin(newAdmin))
return Result.OK;
else return Result.ENTRY_EXISTS;
}
else return res;
}
catch (Exception e)
{
log.Error("failed to replace admin", e);
throw e;
}
}