View Javadoc
1   package pl.matsuo.core.web.controller.login;
2   
3   import org.slf4j.Logger;
4   import org.slf4j.LoggerFactory;
5   import org.springframework.beans.factory.annotation.Autowired;
6   import org.springframework.web.bind.annotation.PathVariable;
7   import org.springframework.web.bind.annotation.RequestBody;
8   import org.springframework.web.bind.annotation.RequestMapping;
9   import org.springframework.web.bind.annotation.ResponseStatus;
10  import org.springframework.web.bind.annotation.RestController;
11  import pl.matsuo.core.model.user.User;
12  import pl.matsuo.core.service.db.Database;
13  import pl.matsuo.core.service.login.CreateAccountData;
14  import pl.matsuo.core.service.login.ILoginService;
15  import pl.matsuo.core.service.login.LoginData;
16  import pl.matsuo.core.service.permission.IPermissionService;
17  import pl.matsuo.core.service.session.SessionState;
18  
19  import java.util.ArrayList;
20  import java.util.List;
21  
22  import static org.springframework.http.HttpStatus.*;
23  import static org.springframework.web.bind.annotation.RequestMethod.*;
24  
25  
26  /**
27   * Created by tunguski on 22.12.13.
28   */
29  @RestController
30  @RequestMapping("/login")
31  public class LoginController {
32    private static final Logger logger = LoggerFactory.getLogger(LoginController.class);
33  
34  
35    @Autowired
36    SessionState sessionState;
37    @Autowired
38    Database database;
39    @Autowired
40    ILoginService loginService;
41    @Autowired
42    IPermissionService permissionService;
43  
44  
45    @RequestMapping(method = GET)
46    public String loggedUsername() {
47      if (sessionState.getUser() == null) {
48        return null;
49      } else {
50        return sessionState.getUser().getUsername();
51      }
52    }
53  
54  
55    @RequestMapping(method = POST)
56    public String login(@RequestBody LoginData loginData) {
57      return loginService.login(loginData);
58    }
59  
60  
61    @RequestMapping(value = "/activateAccount/{ticket}")
62    public void activateAccount(@PathVariable("ticket") String ticket) {
63      loginService.activateAccount(ticket);
64    }
65  
66  
67    @RequestMapping(value = "/createAccount", method = POST)
68    public String createAccount(@RequestBody CreateAccountData createAccountData) {
69      return "Account confirmation ticket: " + loginService.createAccount(createAccountData);
70    }
71  
72  
73    @RequestMapping(value = "/logoff", method = POST)
74    @ResponseStatus(NO_CONTENT)
75    public void logoff() {
76      permissionService.logoff();
77    }
78  
79  
80    @RequestMapping(value = "/remindPassword/{username}", method = POST)
81    @ResponseStatus(NO_CONTENT)
82    public void remindPassword(@PathVariable("username") String username) {
83      username.length();
84    }
85  
86  
87    @RequestMapping(value = "/user", method = GET)
88    public User loggedUser() {
89      return sessionState.getUser();
90    }
91  
92  
93    @RequestMapping(value = "/permissions", method = POST)
94    public List<Boolean> permissions(@RequestBody List<String> permissions) {
95      List<Boolean> permissionsCheck = new ArrayList<>();
96  
97      for (String permission : permissions) {
98        permissionsCheck.add(permissionService.isPermitted(permission));
99      }
100 
101 
102     return permissionsCheck;
103   }
104 
105 
106   @RequestMapping(value = "/loginTime", method = GET)
107   public Long loginTime() {
108     return sessionState.getLoginTime();
109   }
110 }
111