diff --git a/airsonic-main/src/main/java/org/airsonic/player/validator/UserSettingsValidator.java b/airsonic-main/src/main/java/org/airsonic/player/validator/UserSettingsValidator.java index e3d912f6..e44f2bb0 100644 --- a/airsonic-main/src/main/java/org/airsonic/player/validator/UserSettingsValidator.java +++ b/airsonic-main/src/main/java/org/airsonic/player/validator/UserSettingsValidator.java @@ -29,6 +29,8 @@ import org.springframework.stereotype.Component; import org.springframework.validation.Errors; import org.springframework.validation.Validator; +import javax.servlet.http.HttpServletRequest; + /** * Validator for {@link UserSettingsController}. * @@ -41,6 +43,8 @@ public class UserSettingsValidator implements Validator { private SecurityService securityService; @Autowired private SettingsService settingsService; + @Autowired + private HttpServletRequest request; /** * {@inheritDoc} @@ -85,6 +89,16 @@ public class UserSettingsValidator implements Validator { errors.rejectValue("password", "usersettings.passwordnotsupportedforldap"); } + if (securityService.getCurrentUser(request).getUsername().equals(username)) { + // These errors don't need translation since the option isn't exposed to the user + if (command.isDeleteUser()) { + errors.rejectValue("deleteUser", null, "Cannot delete the current user"); + } + if (! command.isAdminRole()) { + errors.rejectValue("adminRole", null, "Cannot remove admin from the current user"); + } + } + } } \ No newline at end of file diff --git a/airsonic-main/src/main/webapp/WEB-INF/jsp/userSettings.jsp b/airsonic-main/src/main/webapp/WEB-INF/jsp/userSettings.jsp index b03210d2..75771d98 100644 --- a/airsonic-main/src/main/webapp/WEB-INF/jsp/userSettings.jsp +++ b/airsonic-main/src/main/webapp/WEB-INF/jsp/userSettings.jsp @@ -66,6 +66,7 @@ + @@ -141,6 +142,7 @@ +