Signed-off-by: Andrew DeMaria <lostonamountain@gmail.com>master
commit
0a16c2cb52
@ -0,0 +1,67 @@ |
|||||||
|
/* |
||||||
|
This file is part of Libresonic. |
||||||
|
|
||||||
|
Libresonic is free software: you can redistribute it and/or modify |
||||||
|
it under the terms of the GNU General Public License as published by |
||||||
|
the Free Software Foundation, either version 3 of the License, or |
||||||
|
(at your option) any later version. |
||||||
|
|
||||||
|
Libresonic is distributed in the hope that it will be useful, |
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
|
GNU General Public License for more details. |
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License |
||||||
|
along with Libresonic. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Copyright 2016 (C) Libresonic Authors |
||||||
|
Based upon Subsonic, Copyright 2009 (C) Sindre Mehus |
||||||
|
*/ |
||||||
|
package org.libresonic.player.command; |
||||||
|
|
||||||
|
import org.libresonic.player.controller.*; |
||||||
|
|
||||||
|
/** |
||||||
|
* Command used in {@link PasswordSettingsController}. |
||||||
|
* |
||||||
|
* @author Sindre Mehus |
||||||
|
*/ |
||||||
|
public class PasswordSettingsCommand { |
||||||
|
private String username; |
||||||
|
private String password; |
||||||
|
private String confirmPassword; |
||||||
|
private boolean ldapAuthenticated; |
||||||
|
|
||||||
|
public String getUsername() { |
||||||
|
return username; |
||||||
|
} |
||||||
|
|
||||||
|
public void setUsername(String username) { |
||||||
|
this.username = username; |
||||||
|
} |
||||||
|
|
||||||
|
public String getPassword() { |
||||||
|
return password; |
||||||
|
} |
||||||
|
|
||||||
|
public void setPassword(String password) { |
||||||
|
this.password = password; |
||||||
|
} |
||||||
|
|
||||||
|
public String getConfirmPassword() { |
||||||
|
return confirmPassword; |
||||||
|
} |
||||||
|
|
||||||
|
public void setConfirmPassword(String confirmPassword) { |
||||||
|
this.confirmPassword = confirmPassword; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean isLdapAuthenticated() { |
||||||
|
return ldapAuthenticated; |
||||||
|
} |
||||||
|
|
||||||
|
public void setLdapAuthenticated(boolean ldapAuthenticated) { |
||||||
|
this.ldapAuthenticated = ldapAuthenticated; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,85 @@ |
|||||||
|
/* |
||||||
|
This file is part of Libresonic. |
||||||
|
|
||||||
|
Libresonic is free software: you can redistribute it and/or modify |
||||||
|
it under the terms of the GNU General Public License as published by |
||||||
|
the Free Software Foundation, either version 3 of the License, or |
||||||
|
(at your option) any later version. |
||||||
|
|
||||||
|
Libresonic is distributed in the hope that it will be useful, |
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
|
GNU General Public License for more details. |
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License |
||||||
|
along with Libresonic. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Copyright 2016 (C) Libresonic Authors |
||||||
|
Based upon Subsonic, Copyright 2009 (C) Sindre Mehus |
||||||
|
*/ |
||||||
|
package org.libresonic.player.controller; |
||||||
|
|
||||||
|
import org.libresonic.player.command.PasswordSettingsCommand; |
||||||
|
import org.libresonic.player.domain.User; |
||||||
|
import org.libresonic.player.service.SecurityService; |
||||||
|
import org.libresonic.player.validator.PasswordSettingsValidator; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.validation.BindingResult; |
||||||
|
import org.springframework.validation.annotation.Validated; |
||||||
|
import org.springframework.web.bind.WebDataBinder; |
||||||
|
import org.springframework.web.bind.annotation.InitBinder; |
||||||
|
import org.springframework.web.bind.annotation.ModelAttribute; |
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestMethod; |
||||||
|
import org.springframework.web.servlet.ModelAndView; |
||||||
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes; |
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest; |
||||||
|
|
||||||
|
/** |
||||||
|
* Controller for the page used to change password. |
||||||
|
* |
||||||
|
* @author Sindre Mehus |
||||||
|
*/ |
||||||
|
@org.springframework.stereotype.Controller |
||||||
|
@RequestMapping("/passwordSettings") |
||||||
|
public class PasswordSettingsController { |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private SecurityService securityService; |
||||||
|
@Autowired |
||||||
|
private PasswordSettingsValidator passwordSettingsValidator; |
||||||
|
|
||||||
|
@InitBinder |
||||||
|
protected void initBinder(WebDataBinder binder) { |
||||||
|
binder.addValidators(passwordSettingsValidator); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@RequestMapping(method = RequestMethod.GET) |
||||||
|
protected ModelAndView displayForm(HttpServletRequest request) throws Exception { |
||||||
|
PasswordSettingsCommand command = new PasswordSettingsCommand(); |
||||||
|
User user = securityService.getCurrentUser(request); |
||||||
|
command.setUsername(user.getUsername()); |
||||||
|
command.setLdapAuthenticated(user.isLdapAuthenticated()); |
||||||
|
return new ModelAndView("passwordSettings","command",command); |
||||||
|
} |
||||||
|
|
||||||
|
@RequestMapping(method = RequestMethod.POST) |
||||||
|
protected String doSubmitAction(HttpServletRequest request,@ModelAttribute("command") @Validated PasswordSettingsCommand command,BindingResult bindingResult, RedirectAttributes redirectAttributes) throws Exception { |
||||||
|
if (!bindingResult.hasErrors()) { |
||||||
|
User user = securityService.getUserByName(command.getUsername()); |
||||||
|
user.setPassword(command.getPassword()); |
||||||
|
securityService.updateUser(user); |
||||||
|
|
||||||
|
command.setPassword(null); |
||||||
|
command.setConfirmPassword(null); |
||||||
|
redirectAttributes.addFlashAttribute("settings_toast", true); |
||||||
|
|
||||||
|
} else { |
||||||
|
return "passwordSettings"; |
||||||
|
} |
||||||
|
return "redirect:passwordSettings.view"; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,48 @@ |
|||||||
|
/* |
||||||
|
This file is part of Libresonic. |
||||||
|
|
||||||
|
Libresonic is free software: you can redistribute it and/or modify |
||||||
|
it under the terms of the GNU General Public License as published by |
||||||
|
the Free Software Foundation, either version 3 of the License, or |
||||||
|
(at your option) any later version. |
||||||
|
|
||||||
|
Libresonic is distributed in the hope that it will be useful, |
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
|
GNU General Public License for more details. |
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License |
||||||
|
along with Libresonic. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Copyright 2016 (C) Libresonic Authors |
||||||
|
Based upon Subsonic, Copyright 2009 (C) Sindre Mehus |
||||||
|
*/ |
||||||
|
package org.libresonic.player.validator; |
||||||
|
|
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
import org.springframework.validation.*; |
||||||
|
import org.libresonic.player.command.*; |
||||||
|
import org.libresonic.player.controller.*; |
||||||
|
|
||||||
|
/** |
||||||
|
* Validator for {@link PasswordSettingsController}. |
||||||
|
* |
||||||
|
* @author Sindre Mehus |
||||||
|
*/ |
||||||
|
@Component |
||||||
|
public class PasswordSettingsValidator implements Validator { |
||||||
|
|
||||||
|
public boolean supports(Class clazz) { |
||||||
|
return clazz.equals(PasswordSettingsCommand.class); |
||||||
|
} |
||||||
|
|
||||||
|
public void validate(Object obj, Errors errors) { |
||||||
|
PasswordSettingsCommand command = (PasswordSettingsCommand) obj; |
||||||
|
|
||||||
|
if (command.getPassword() == null || command.getPassword().length() == 0) { |
||||||
|
errors.rejectValue("password", "usersettings.nopassword"); |
||||||
|
} else if (!command.getPassword().equals(command.getConfirmPassword())) { |
||||||
|
errors.rejectValue("password", "usersettings.wrongpassword"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue