Commit 5901a9725fa75966815e45d72d8211a2474db8b8
1 parent
3e533eef
feature: Standard-Rechteverwaltung begonnen (WIP)
Showing
3 changed files
with
180 additions
and
31 deletions
src/main/java/net/ziemers/swxercise/lg/user/enums/RightState.java
0 → 100644
1 | +package net.ziemers.swxercise.lg.user.enums; | ||
2 | + | ||
3 | +/** | ||
4 | + * Stellt grundsätzliche Rechte zur Verfügung, die so mit hoher Wahrscheinlichkeit | ||
5 | + * in vielen Anwendungen verwendet werden möchten. | ||
6 | + */ | ||
7 | +public enum RightState { | ||
8 | + | ||
9 | + NOT_LOGGED_IN(Constants.NOT_LOGGED_IN), | ||
10 | + LOGGED_IN(Constants.LOGGED_IN), | ||
11 | + ADMIN(Constants.ADMIN), | ||
12 | + SUPERADMIN(Constants.SUPERADMIN), | ||
13 | + ; | ||
14 | + | ||
15 | + private String name; | ||
16 | + | ||
17 | + RightState(final String name) { | ||
18 | + this.name = name; | ||
19 | + } | ||
20 | + | ||
21 | + public String getName() { | ||
22 | + return name; | ||
23 | + } | ||
24 | + | ||
25 | + private void setName(String name) { | ||
26 | + this.name = name; | ||
27 | + } | ||
28 | + | ||
29 | + /* | ||
30 | + * Diese Klasse wird verwendet, damit wir innerhalb von Annotationen auf die Namen zugreifen können. | ||
31 | + */ | ||
32 | + public static class Constants { | ||
33 | + public static final String NOT_LOGGED_IN = "NOT_LOGGED_IN"; | ||
34 | + public static final String LOGGED_IN = "LOGGED_IN"; | ||
35 | + public static final String ADMIN = "ADMIN"; | ||
36 | + public static final String SUPERADMIN = "SUPERADMIN"; | ||
37 | + } | ||
38 | + | ||
39 | +} |
src/main/java/net/ziemers/swxercise/lg/user/service/UserService.java
@@ -10,6 +10,7 @@ import net.ziemers.swxercise.db.dao.user.UserDao; | @@ -10,6 +10,7 @@ import net.ziemers.swxercise.db.dao.user.UserDao; | ||
10 | import net.ziemers.swxercise.lg.model.user.Profile; | 10 | import net.ziemers.swxercise.lg.model.user.Profile; |
11 | import net.ziemers.swxercise.lg.model.user.User; | 11 | import net.ziemers.swxercise.lg.model.user.User; |
12 | import net.ziemers.swxercise.lg.user.dto.UserDto; | 12 | import net.ziemers.swxercise.lg.user.dto.UserDto; |
13 | +import net.ziemers.swxercise.lg.user.enums.RightState; | ||
13 | 14 | ||
14 | /** | 15 | /** |
15 | * Diese Klasse stellt alle Dienste im Kontext einer Benutzerverwaltung zur Verfügung. | 16 | * Diese Klasse stellt alle Dienste im Kontext einer Benutzerverwaltung zur Verfügung. |
@@ -54,7 +55,21 @@ public class UserService { | @@ -54,7 +55,21 @@ public class UserService { | ||
54 | } | 55 | } |
55 | 56 | ||
56 | /** | 57 | /** |
58 | + * Findet den zurzeit angemeldeten Benutzer. | ||
59 | + * | ||
60 | + * @return den gesuchten Benutzer, oder <code>null</code>, falls ein solcher nicht existiert. | ||
61 | + */ | ||
62 | + public User findUser() { | ||
63 | + final User user = sessionContext.getUser(); | ||
64 | + if (user != null) { | ||
65 | + return dao.findById(user.getId()); | ||
66 | + } | ||
67 | + return null; | ||
68 | + } | ||
69 | + | ||
70 | + /** | ||
57 | * Findet alle existierenden Benutzer. | 71 | * Findet alle existierenden Benutzer. |
72 | + * | ||
58 | * @return alle Benutzer, oder eine leere Collection, falls keine existieren. | 73 | * @return alle Benutzer, oder eine leere Collection, falls keine existieren. |
59 | */ | 74 | */ |
60 | public Collection<User> findAllUsers() { | 75 | public Collection<User> findAllUsers() { |
@@ -64,16 +79,16 @@ public class UserService { | @@ -64,16 +79,16 @@ public class UserService { | ||
64 | /** | 79 | /** |
65 | * Erstellt einen neuen Benutzer, sofern noch keiner mit dem selben Benutzernamen existiert. | 80 | * Erstellt einen neuen Benutzer, sofern noch keiner mit dem selben Benutzernamen existiert. |
66 | * | 81 | * |
67 | - * @param userDto das {@link UserDto} enthält die Eigenschaften des zu erstellenden Benutzers | 82 | + * @param dto das {@link UserDto} enthält die Eigenschaften des zu erstellenden Benutzers |
68 | * @return die Id des neuen Benutzers, wenn die Erstellung erfolgreich war. | 83 | * @return die Id des neuen Benutzers, wenn die Erstellung erfolgreich war. |
69 | */ | 84 | */ |
70 | - public Long createUser(final UserDto userDto) { | ||
71 | - User user = dao.findByUsername(userDto.getUsername()); | 85 | + public Long createUser(final UserDto dto) { |
86 | + User user = dao.findByUsername(dto.getUsername()); | ||
72 | if (user == null) { | 87 | if (user == null) { |
73 | - final Profile profile = new Profile(userDto.getUsername(), userDto.getPassword()); | 88 | + final Profile profile = new Profile(dto.getUsername(), dto.getPassword()); |
74 | 89 | ||
75 | // wir füllen das User-Objekt mit Method Chaining | 90 | // wir füllen das User-Objekt mit Method Chaining |
76 | - user = new User(userDto.getFirstname(), userDto.getLastname()) | 91 | + user = new User(dto.getFirstname(), dto.getLastname()) |
77 | .withProfile(profile); | 92 | .withProfile(profile); |
78 | 93 | ||
79 | return dao.save(user); | 94 | return dao.save(user); |
@@ -82,6 +97,38 @@ public class UserService { | @@ -82,6 +97,38 @@ public class UserService { | ||
82 | } | 97 | } |
83 | 98 | ||
84 | /** | 99 | /** |
100 | + * Aktualisiert den Benutzer mit der übergebenen Id. | ||
101 | + * | ||
102 | + * @param id die Id des zu aktualisierenden Benutzers | ||
103 | + * @param dto das {@link UserDto} enthält die Eigenschaften des zu aktualisierenden Benutzers | ||
104 | + * @return <code>true</code>, wenn das Aktualisieren des Benutzers erfolgreich war. | ||
105 | + */ | ||
106 | + public boolean updateUser(final Long id, final UserDto dto) { | ||
107 | + final User user = dao.findById(id); | ||
108 | + if (user != null) { | ||
109 | + // TODO noch zu implementieren | ||
110 | + return false; | ||
111 | + } | ||
112 | + return false; | ||
113 | + } | ||
114 | + | ||
115 | + /** | ||
116 | + * Aktualisiert den zurzeit angemeldeten Benutzer. | ||
117 | + * | ||
118 | + * @param dto das {@link UserDto} enthält die Eigenschaften des zu aktualisierenden Benutzers | ||
119 | + * @return <code>true</code>, wenn das Aktualisieren des Benutzers erfolgreich war. | ||
120 | + */ | ||
121 | + public boolean updateUser(final UserDto dto) { | ||
122 | + // ist zurzeit ein Benutzer angemeldet, können wir ihn aktualisieren | ||
123 | + final User user = sessionContext.getUser(); | ||
124 | + if (user != null) { | ||
125 | + // TODO noch zu implementieren | ||
126 | + return false; | ||
127 | + } | ||
128 | + return false; | ||
129 | + } | ||
130 | + | ||
131 | + /** | ||
85 | * Löscht den Benutzer mit der übergebenen Id. | 132 | * Löscht den Benutzer mit der übergebenen Id. |
86 | * | 133 | * |
87 | * @param id die Id des zu löschenden Benutzers | 134 | * @param id die Id des zu löschenden Benutzers |
@@ -102,26 +149,44 @@ public class UserService { | @@ -102,26 +149,44 @@ public class UserService { | ||
102 | } | 149 | } |
103 | 150 | ||
104 | /** | 151 | /** |
105 | - * Liefert das {@link User}-Objekt des zurzeit angemeldeten Benutzers zurück. | 152 | + * Liefert das {@link User}-Objekt des zurzeit angemeldeten Benutzers zurück. Das ist derjenige |
153 | + * Benutzer, der im {@link SessionContext}-Objekt hinterlegt ist. | ||
154 | + * | ||
106 | * @return das User-Objekt des zurzeit angemeldeten Benutzers. | 155 | * @return das User-Objekt des zurzeit angemeldeten Benutzers. |
107 | */ | 156 | */ |
108 | - public User getSessionUser() { | 157 | + public User getSessionContextUser() { |
109 | return sessionContext.getUser(); | 158 | return sessionContext.getUser(); |
110 | } | 159 | } |
111 | 160 | ||
112 | /** | 161 | /** |
113 | - * Prüft, ob der zurzeit angemeldete Benutzer eine Rolle aus der Liste der übergebenen Rollen besitzt. | 162 | + * Prüft, ob der Benutzer des {@link SessionContext}s ein Recht aus der Liste der übergebenen Rechte besitzt. |
114 | * | 163 | * |
115 | - * @param rolesSet die Rollenliste | ||
116 | - * @return <code>true</code>, falls der zurzeit angemeldete Benutzer eine der übergebenen Rollen besitzt. | 164 | + * @param rightsSet die Rechteliste |
165 | + * @return <code>true</code>, falls der Benutzer eines der übergebenen Rechte besitzt. | ||
117 | */ | 166 | */ |
118 | - public boolean isUserAllowed(final Set<String> rolesSet) { | ||
119 | - final User user = getSessionUser(); | 167 | + public boolean isUserAllowed(final Set<String> rightsSet) { |
168 | + final User user = getSessionContextUser(); | ||
120 | 169 | ||
121 | - // ist überhaupt ein Benutzer angemeldet? | ||
122 | - if (user != null) { | ||
123 | - // TODO muss noch implementiert werden | ||
124 | - return true; | 170 | + // Rechte, die nur ein nicht-angemeldeter Benutzer besitzen kann |
171 | + if (user == null) { | ||
172 | + if (rightsSet.contains(RightState.Constants.NOT_LOGGED_IN)) { | ||
173 | + return true; | ||
174 | + } | ||
175 | + } | ||
176 | + | ||
177 | + // Rechte, die nur ein angemeldeter Benutzer besitzen kann | ||
178 | + else { | ||
179 | + if (rightsSet.contains(RightState.Constants.LOGGED_IN)) { | ||
180 | + return true; | ||
181 | + } | ||
182 | + if (rightsSet.contains(RightState.Constants.ADMIN)) { | ||
183 | + // TODO muss noch implementiert werden | ||
184 | + return true; | ||
185 | + } | ||
186 | + if (rightsSet.contains(RightState.Constants.SUPERADMIN)) { | ||
187 | + // TODO muss noch implementiert werden | ||
188 | + return true; | ||
189 | + } | ||
125 | } | 190 | } |
126 | return false; | 191 | return false; |
127 | } | 192 | } |
src/main/java/net/ziemers/swxercise/ui/UserViewController.java
@@ -8,6 +8,7 @@ import javax.inject.Inject; | @@ -8,6 +8,7 @@ import javax.inject.Inject; | ||
8 | import javax.ws.rs.*; | 8 | import javax.ws.rs.*; |
9 | import javax.ws.rs.core.MediaType; | 9 | import javax.ws.rs.core.MediaType; |
10 | 10 | ||
11 | +import net.ziemers.swxercise.lg.user.enums.RightState; | ||
11 | import net.ziemers.swxercise.lg.user.service.SessionContext; | 12 | import net.ziemers.swxercise.lg.user.service.SessionContext; |
12 | import net.ziemers.swxercise.lg.model.user.User; | 13 | import net.ziemers.swxercise.lg.model.user.User; |
13 | import net.ziemers.swxercise.lg.user.dto.UserDto; | 14 | import net.ziemers.swxercise.lg.user.dto.UserDto; |
@@ -28,7 +29,7 @@ public class UserViewController { | @@ -28,7 +29,7 @@ public class UserViewController { | ||
28 | 29 | ||
29 | /** | 30 | /** |
30 | * Liefert alle User-Objekte zurück. | 31 | * Liefert alle User-Objekte zurück. |
31 | - * | 32 | + * <p> |
32 | * Aufruf: | 33 | * Aufruf: |
33 | * GET http://localhost:8080/swxercise/rest/v1/users | 34 | * GET http://localhost:8080/swxercise/rest/v1/users |
34 | * | 35 | * |
@@ -37,13 +38,14 @@ public class UserViewController { | @@ -37,13 +38,14 @@ public class UserViewController { | ||
37 | @GET | 38 | @GET |
38 | @Path("v1/users") | 39 | @Path("v1/users") |
39 | @Produces(MediaType.APPLICATION_JSON) | 40 | @Produces(MediaType.APPLICATION_JSON) |
41 | + @RolesAllowed(RightState.Constants.SUPERADMIN) | ||
40 | public Collection<User> getAllUsers() { | 42 | public Collection<User> getAllUsers() { |
41 | return userService.findAllUsers(); | 43 | return userService.findAllUsers(); |
42 | } | 44 | } |
43 | 45 | ||
44 | /** | 46 | /** |
45 | * Liefert das User-Objekt mit der gewünschten Id zurück. | 47 | * Liefert das User-Objekt mit der gewünschten Id zurück. |
46 | - * | 48 | + * <p> |
47 | * Aufruf: | 49 | * Aufruf: |
48 | * GET http://localhost:8080/swxercise/rest/v1/user/42 | 50 | * GET http://localhost:8080/swxercise/rest/v1/user/42 |
49 | * | 51 | * |
@@ -53,25 +55,39 @@ public class UserViewController { | @@ -53,25 +55,39 @@ public class UserViewController { | ||
53 | @GET | 55 | @GET |
54 | @Path("v1/user/{id}") | 56 | @Path("v1/user/{id}") |
55 | @Produces(MediaType.APPLICATION_JSON) | 57 | @Produces(MediaType.APPLICATION_JSON) |
56 | - public User getById(@PathParam("id") Long id) { | 58 | + @RolesAllowed(RightState.Constants.SUPERADMIN) |
59 | + public User getUser(@PathParam("id") Long id) { | ||
57 | return userService.findUser(id); | 60 | return userService.findUser(id); |
58 | } | 61 | } |
59 | 62 | ||
60 | /** | 63 | /** |
61 | - * Erstellt ein neues User-Objekt mit den gewünschten Eigenschaften, welche mittels {@link UserDto} definiert werden. | 64 | + * Liefert das User-Objekt des zurzeit angemeldeten Benutzers zurück. |
65 | + * <p> | ||
66 | + * Aufruf: | ||
67 | + * GET http://localhost:8080/swxercise/rest/v1/user | ||
62 | * | 68 | * |
69 | + * @return das User-Objekt als JSON, oder <code>null</code>, falls keines existiert. | ||
70 | + */ | ||
71 | + @GET | ||
72 | + @Path("v1/user") | ||
73 | + @Produces(MediaType.APPLICATION_JSON) | ||
74 | + @RolesAllowed(RightState.Constants.LOGGED_IN) | ||
75 | + public User getUser() { return userService.findUser(); } | ||
76 | + | ||
77 | + /** | ||
78 | + * Erstellt ein neues User-Objekt mit den gewünschten Eigenschaften, welche mittels {@link UserDto} definiert werden. | ||
79 | + * <p> | ||
63 | * Aufruf: | 80 | * Aufruf: |
64 | * POST http://localhost:8080/swxercise/rest/v1/user | 81 | * POST http://localhost:8080/swxercise/rest/v1/user |
65 | * | 82 | * |
66 | * @param dto das mittels der als JSON-Objekt übergebenenen Eigenschaften zu füllende {@link UserDto} | 83 | * @param dto das mittels der als JSON-Objekt übergebenenen Eigenschaften zu füllende {@link UserDto} |
67 | * @return ein {@link ResponseState}-Objekt mit den Ergebnisinformationen des Aufrufs. | 84 | * @return ein {@link ResponseState}-Objekt mit den Ergebnisinformationen des Aufrufs. |
68 | - | ||
69 | */ | 85 | */ |
70 | @POST | 86 | @POST |
71 | @Path("v1/user") | 87 | @Path("v1/user") |
72 | @Consumes(MediaType.APPLICATION_JSON) | 88 | @Consumes(MediaType.APPLICATION_JSON) |
73 | @Produces(MediaType.APPLICATION_JSON) | 89 | @Produces(MediaType.APPLICATION_JSON) |
74 | - @RolesAllowed("ADMIN") | 90 | + @RolesAllowed(RightState.Constants.ADMIN) |
75 | public RestResponse createUser(UserDto dto) { | 91 | public RestResponse createUser(UserDto dto) { |
76 | final Long id = userService.createUser(dto); | 92 | final Long id = userService.createUser(dto); |
77 | if (id != null) { | 93 | if (id != null) { |
@@ -84,11 +100,11 @@ public class UserViewController { | @@ -84,11 +100,11 @@ public class UserViewController { | ||
84 | * Aktualisiert das User-Objekt mit der gewünschten Id mit den Eigenschaften, | 100 | * Aktualisiert das User-Objekt mit der gewünschten Id mit den Eigenschaften, |
85 | * welche mittels {@link UserDto} definiert werden. Der Pfadparameter wird | 101 | * welche mittels {@link UserDto} definiert werden. Der Pfadparameter wird |
86 | * als erstes ge'marshal't, das DTO im Post-Content danach (REST-Konvention). | 102 | * als erstes ge'marshal't, das DTO im Post-Content danach (REST-Konvention). |
87 | - * | 103 | + * <p> |
88 | * Aufruf: | 104 | * Aufruf: |
89 | * PUT http://localhost:8080/swxercise/rest/v1/user/42 | 105 | * PUT http://localhost:8080/swxercise/rest/v1/user/42 |
90 | * | 106 | * |
91 | - * @param id die Id des zu aktualisierenden User-Objekts | 107 | + * @param id die Id des zu aktualisierenden User-Objekts |
92 | * @param dto das mittels der als JSON-Objekt übergebenenen Eigenschaften zu füllende {@link UserDto} | 108 | * @param dto das mittels der als JSON-Objekt übergebenenen Eigenschaften zu füllende {@link UserDto} |
93 | * @return ein {@link ResponseState}-Objekt mit den Ergebnisinformationen des Aufrufs. | 109 | * @return ein {@link ResponseState}-Objekt mit den Ergebnisinformationen des Aufrufs. |
94 | */ | 110 | */ |
@@ -96,15 +112,41 @@ public class UserViewController { | @@ -96,15 +112,41 @@ public class UserViewController { | ||
96 | @Path("v1/user/{id}") | 112 | @Path("v1/user/{id}") |
97 | @Consumes(MediaType.APPLICATION_JSON) | 113 | @Consumes(MediaType.APPLICATION_JSON) |
98 | @Produces(MediaType.APPLICATION_JSON) | 114 | @Produces(MediaType.APPLICATION_JSON) |
99 | - @RolesAllowed("ADMIN") | 115 | + @RolesAllowed(RightState.Constants.ADMIN) |
100 | public RestResponse updateUser(@PathParam("id") Long id, UserDto dto) { | 116 | public RestResponse updateUser(@PathParam("id") Long id, UserDto dto) { |
101 | - // TODO noch zu implementieren | 117 | + if (userService.updateUser(id, dto)) { |
118 | + return new RestResponse(); | ||
119 | + } | ||
102 | return new RestResponse(ResponseState.FAILED); | 120 | return new RestResponse(ResponseState.FAILED); |
103 | } | 121 | } |
104 | 122 | ||
105 | /** | 123 | /** |
106 | - * Löscht das User-Objekt mit der gewünschten Id. | 124 | + * Aktualisiert das User-Objekt des zurzeit angemeldeten Benutzers mit den |
125 | + * Eigenschaften, welche mittels {@link UserDto} definiert werden. Der | ||
126 | + * Pfadparameter wird als erstes ge'marshal't, das DTO im Post-Content | ||
127 | + * danach (REST-Konvention). | ||
128 | + * <p> | ||
129 | + * Aufruf: | ||
130 | + * PUT http://localhost:8080/swxercise/rest/v1/user | ||
107 | * | 131 | * |
132 | + * @param dto das mittels der als JSON-Objekt übergebenenen Eigenschaften zu füllende {@link UserDto} | ||
133 | + * @return ein {@link ResponseState}-Objekt mit den Ergebnisinformationen des Aufrufs. | ||
134 | + */ | ||
135 | + @PUT | ||
136 | + @Path("v1/user") | ||
137 | + @Consumes(MediaType.APPLICATION_JSON) | ||
138 | + @Produces(MediaType.APPLICATION_JSON) | ||
139 | + @RolesAllowed(RightState.Constants.LOGGED_IN) | ||
140 | + public RestResponse updateUser(UserDto dto) { | ||
141 | + if (userService.updateUser(dto)) { | ||
142 | + return new RestResponse(); | ||
143 | + } | ||
144 | + return new RestResponse(ResponseState.FAILED); | ||
145 | + } | ||
146 | + | ||
147 | + /** | ||
148 | + * Löscht das User-Objekt mit der gewünschten Id. | ||
149 | + * <p> | ||
108 | * Aufruf: | 150 | * Aufruf: |
109 | * DELETE http://localhost:8080/swxercise/rest/v1/user/42 | 151 | * DELETE http://localhost:8080/swxercise/rest/v1/user/42 |
110 | * | 152 | * |
@@ -114,7 +156,7 @@ public class UserViewController { | @@ -114,7 +156,7 @@ public class UserViewController { | ||
114 | @DELETE | 156 | @DELETE |
115 | @Path("v1/user/{id}") | 157 | @Path("v1/user/{id}") |
116 | @Produces(MediaType.APPLICATION_JSON) | 158 | @Produces(MediaType.APPLICATION_JSON) |
117 | - @RolesAllowed("ADMIN") | 159 | + @RolesAllowed(RightState.Constants.ADMIN) |
118 | public RestResponse deleteUser(@PathParam("id") Long id) { | 160 | public RestResponse deleteUser(@PathParam("id") Long id) { |
119 | userService.deleteUser(id); | 161 | userService.deleteUser(id); |
120 | return new RestResponse(); | 162 | return new RestResponse(); |
@@ -122,7 +164,7 @@ public class UserViewController { | @@ -122,7 +164,7 @@ public class UserViewController { | ||
122 | 164 | ||
123 | /** | 165 | /** |
124 | * Löscht das User-Objekt des zurzeit angemeldeten Benutzers. | 166 | * Löscht das User-Objekt des zurzeit angemeldeten Benutzers. |
125 | - * | 167 | + * <p> |
126 | * Aufruf: | 168 | * Aufruf: |
127 | * DELETE http://localhost:8080/swxercise/rest/v1/user | 169 | * DELETE http://localhost:8080/swxercise/rest/v1/user |
128 | * | 170 | * |
@@ -131,6 +173,7 @@ public class UserViewController { | @@ -131,6 +173,7 @@ public class UserViewController { | ||
131 | @DELETE | 173 | @DELETE |
132 | @Path("v1/user") | 174 | @Path("v1/user") |
133 | @Produces(MediaType.APPLICATION_JSON) | 175 | @Produces(MediaType.APPLICATION_JSON) |
176 | + @RolesAllowed(RightState.Constants.LOGGED_IN) | ||
134 | public RestResponse deleteUser() { | 177 | public RestResponse deleteUser() { |
135 | if (userService.deleteUser()) { | 178 | if (userService.deleteUser()) { |
136 | return new RestResponse(); | 179 | return new RestResponse(); |
@@ -140,7 +183,7 @@ public class UserViewController { | @@ -140,7 +183,7 @@ public class UserViewController { | ||
140 | 183 | ||
141 | /** | 184 | /** |
142 | * Meldet einen Benutzer durch übergebenen username und password mit einem neuen User-{@link SessionContext} an. | 185 | * Meldet einen Benutzer durch übergebenen username und password mit einem neuen User-{@link SessionContext} an. |
143 | - * | 186 | + * <p> |
144 | * Aufruf: | 187 | * Aufruf: |
145 | * POST http://localhost:8080/swxercise/rest/v1/user/login | 188 | * POST http://localhost:8080/swxercise/rest/v1/user/login |
146 | * | 189 | * |
@@ -151,6 +194,7 @@ public class UserViewController { | @@ -151,6 +194,7 @@ public class UserViewController { | ||
151 | @Path("v1/user/login") | 194 | @Path("v1/user/login") |
152 | @Consumes(MediaType.APPLICATION_JSON) | 195 | @Consumes(MediaType.APPLICATION_JSON) |
153 | @Produces(MediaType.APPLICATION_JSON) | 196 | @Produces(MediaType.APPLICATION_JSON) |
197 | + @RolesAllowed(RightState.Constants.NOT_LOGGED_IN) | ||
154 | public RestResponse loginUser(UserDto dto) { | 198 | public RestResponse loginUser(UserDto dto) { |
155 | if (userService.loginUser(dto)) { | 199 | if (userService.loginUser(dto)) { |
156 | return new RestResponse(); | 200 | return new RestResponse(); |
@@ -160,7 +204,7 @@ public class UserViewController { | @@ -160,7 +204,7 @@ public class UserViewController { | ||
160 | 204 | ||
161 | /** | 205 | /** |
162 | * Meldet den angemeldeten Benutzer von seinem User-{@link SessionContext} ab. | 206 | * Meldet den angemeldeten Benutzer von seinem User-{@link SessionContext} ab. |
163 | - * | 207 | + * <p> |
164 | * Aufruf: | 208 | * Aufruf: |
165 | * POST http://localhost:8080/swxercise/rest/v1/user/logout | 209 | * POST http://localhost:8080/swxercise/rest/v1/user/logout |
166 | * | 210 | * |
@@ -169,6 +213,7 @@ public class UserViewController { | @@ -169,6 +213,7 @@ public class UserViewController { | ||
169 | @POST | 213 | @POST |
170 | @Path("v1/user/logout") | 214 | @Path("v1/user/logout") |
171 | @Produces(MediaType.APPLICATION_JSON) | 215 | @Produces(MediaType.APPLICATION_JSON) |
216 | + @RolesAllowed(RightState.Constants.LOGGED_IN) | ||
172 | public RestResponse logoutUser() { | 217 | public RestResponse logoutUser() { |
173 | if (userService.logoutUser()) { | 218 | if (userService.logoutUser()) { |
174 | return new RestResponse(); | 219 | return new RestResponse(); |