Slight introduction to Java annotation based configuration (note that <mvc:annotation-driven /> has been added to libresonic-servlet.xml).master
parent
c9bdff4dff
commit
a03aa2805d
@ -0,0 +1,72 @@ |
|||||||
|
package org.libresonic.player.controller; |
||||||
|
|
||||||
|
import org.libresonic.player.Logger; |
||||||
|
import org.libresonic.player.domain.User; |
||||||
|
import org.libresonic.player.service.PlaylistService; |
||||||
|
import org.libresonic.player.service.SecurityService; |
||||||
|
import org.libresonic.player.service.SettingsService; |
||||||
|
import org.libresonic.player.util.StringUtil; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; |
||||||
|
import org.springframework.stereotype.Controller; |
||||||
|
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.view.RedirectView; |
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest; |
||||||
|
import javax.servlet.http.HttpServletResponse; |
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* Spring MVC Controller that serves the login page. |
||||||
|
*/ |
||||||
|
@Controller |
||||||
|
@RequestMapping("/login") |
||||||
|
public class LoginController { |
||||||
|
|
||||||
|
|
||||||
|
private static final Logger LOG = Logger.getLogger(LoginController.class); |
||||||
|
|
||||||
|
private final SecurityService securityService; |
||||||
|
private final SettingsService settingsService; |
||||||
|
private final PlaylistService playlistService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
public LoginController(SecurityService securityService, SettingsService settingsService, PlaylistService playlistService) { |
||||||
|
this.securityService = securityService; |
||||||
|
this.settingsService = settingsService; |
||||||
|
this.playlistService = playlistService; |
||||||
|
} |
||||||
|
|
||||||
|
@RequestMapping(method = { RequestMethod.GET, RequestMethod.POST }) |
||||||
|
public ModelAndView login(HttpServletRequest request, HttpServletResponse response) throws Exception { |
||||||
|
|
||||||
|
// Auto-login if "user" and "password" parameters are given.
|
||||||
|
String username = request.getParameter("user"); |
||||||
|
String password = request.getParameter("password"); |
||||||
|
if (username != null && password != null) { |
||||||
|
username = StringUtil.urlEncode(username); |
||||||
|
password = StringUtil.urlEncode(password); |
||||||
|
return new ModelAndView(new RedirectView("/j_spring_security_check?"+ |
||||||
|
UsernamePasswordAuthenticationFilter.SPRING_SECURITY_FORM_USERNAME_KEY+"=" + username + |
||||||
|
"&"+UsernamePasswordAuthenticationFilter.SPRING_SECURITY_FORM_PASSWORD_KEY+"=" + password |
||||||
|
)); |
||||||
|
} |
||||||
|
|
||||||
|
Map<String, Object> map = new HashMap<String, Object>(); |
||||||
|
map.put("logout", request.getParameter("logout") != null); |
||||||
|
map.put("error", request.getParameter("error") != null); |
||||||
|
map.put("brand", settingsService.getBrand()); |
||||||
|
map.put("loginMessage", settingsService.getLoginMessage()); |
||||||
|
|
||||||
|
User admin = securityService.getUserByName(User.USERNAME_ADMIN); |
||||||
|
if (User.USERNAME_ADMIN.equals(admin.getPassword())) { |
||||||
|
map.put("insecure", true); |
||||||
|
} |
||||||
|
|
||||||
|
return new ModelAndView("login", "model", map); |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue