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
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