annotate gwt-client/src/main/java/org/dive4elements/river/client/server/UserServiceImpl.java @ 8870:c26fb37899ca

Introduced groups for modules. Modules marked with the same group-id, will be put together in the ui. Also using now the localization info from the server instead of localizing the modules again on the client side.
author gernotbelger
date Wed, 07 Feb 2018 11:59:13 +0100
parents 238fc722f87a
children 0a5239a1e46e
rev   line source
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5993
ea9eef426962 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5861
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5993
ea9eef426962 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5861
diff changeset
6 * documentation coming with Dive4Elements River for details.
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
9 package org.dive4elements.river.client.server;
2
bc5d4d2297b9 Introduced a service that retrieves the user who is currently logged in. This user is displayed in the menu bar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
4214
e39ac9767a69 Implement UserService method to remove current user from session
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3860
diff changeset
11 import javax.servlet.http.HttpSession;
e39ac9767a69 Implement UserService method to remove current user from session
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3860
diff changeset
12
3502
3a8884e06aaa Avoid using XPath queries for getting attributes of a node
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 1425
diff changeset
13 import org.w3c.dom.Element;
25
2da6be38d8b6 Added a User interface and a default implementation to handle users in this client.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2
diff changeset
14
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 229
diff changeset
15 import org.apache.log4j.Logger;
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 229
diff changeset
16
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
17 import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
2
bc5d4d2297b9 Introduced a service that retrieves the user who is currently logged in. This user is displayed in the menu bar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
19 import org.dive4elements.artifacts.httpclient.exceptions.ConnectionException;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
20
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
21 import org.dive4elements.river.client.client.services.UserService;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
22 import org.dive4elements.river.client.server.auth.UserClient;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
23 import org.dive4elements.river.client.shared.exceptions.AuthenticationException;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
24 import org.dive4elements.river.client.shared.model.DefaultUser;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
25 import org.dive4elements.river.client.shared.model.User;
2
bc5d4d2297b9 Introduced a service that retrieves the user who is currently logged in. This user is displayed in the menu bar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26
bc5d4d2297b9 Introduced a service that retrieves the user who is currently logged in. This user is displayed in the menu bar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 /**
bc5d4d2297b9 Introduced a service that retrieves the user who is currently logged in. This user is displayed in the menu bar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
bc5d4d2297b9 Introduced a service that retrieves the user who is currently logged in. This user is displayed in the menu bar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 */
bc5d4d2297b9 Introduced a service that retrieves the user who is currently logged in. This user is displayed in the menu bar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 public class UserServiceImpl
bc5d4d2297b9 Introduced a service that retrieves the user who is currently logged in. This user is displayed in the menu bar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 extends RemoteServiceServlet
bc5d4d2297b9 Introduced a service that retrieves the user who is currently logged in. This user is displayed in the menu bar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 implements UserService
bc5d4d2297b9 Introduced a service that retrieves the user who is currently logged in. This user is displayed in the menu bar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6188
diff changeset
34 /** Private log. */
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6188
diff changeset
35 private static final Logger log = Logger.getLogger(UserServiceImpl.class);
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 229
diff changeset
36
217
907b61e4d702 Improved the exception handling - added warnings for user authentication errors and errors that occur while fetching supported rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 49
diff changeset
37 public static final String ERROR_NO_SUCH_USER = "error_no_such_user";
907b61e4d702 Improved the exception handling - added warnings for user authentication errors and errors that occur while fetching supported rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 49
diff changeset
38
3860
b32e8353c30e Donate own error message when no users were found.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3698
diff changeset
39 public static final String ERROR_NO_USERS = "error_no_users";
b32e8353c30e Donate own error message when no users were found.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3698
diff changeset
40
1425
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
41 public User getCurrentUser(String locale)
217
907b61e4d702 Improved the exception handling - added warnings for user authentication errors and errors that occur while fetching supported rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 49
diff changeset
42 throws AuthenticationException
907b61e4d702 Improved the exception handling - added warnings for user authentication errors and errors that occur while fetching supported rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 49
diff changeset
43 {
1425
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
44 String url = getServletContext().getInitParameter("server-url");
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
45
3548
fed914a42a10 Merged revisions 5373,5377-5378 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3502
diff changeset
46 UserClient client = new UserClient(url);
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
47 org.dive4elements.river.client.server.auth.User loginuser = getUser();
25
2da6be38d8b6 Added a User interface and a default implementation to handle users in this client.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2
diff changeset
48
3695
5e4d91304484 Be more defensive about fetchimg users from session.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3548
diff changeset
49 if (loginuser == null) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6188
diff changeset
50 log.debug("no session user");
3695
5e4d91304484 Be more defensive about fetchimg users from session.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3548
diff changeset
51 throw new AuthenticationException(ERROR_NO_SUCH_USER);
5e4d91304484 Be more defensive about fetchimg users from session.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3548
diff changeset
52 }
5e4d91304484 Be more defensive about fetchimg users from session.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3548
diff changeset
53
25
2da6be38d8b6 Added a User interface and a default implementation to handle users in this client.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2
diff changeset
54 try {
3548
fed914a42a10 Merged revisions 5373,5377-5378 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3502
diff changeset
55 Element user = client.findUser(loginuser);
25
2da6be38d8b6 Added a User interface and a default implementation to handle users in this client.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2
diff changeset
56
3548
fed914a42a10 Merged revisions 5373,5377-5378 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3502
diff changeset
57 if (user != null) {
3502
3a8884e06aaa Avoid using XPath queries for getting attributes of a node
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 1425
diff changeset
58 String uuid = user.getAttributeNS(
3a8884e06aaa Avoid using XPath queries for getting attributes of a node
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 1425
diff changeset
59 ArtifactNamespaceContext.NAMESPACE_URI, "uuid");
3a8884e06aaa Avoid using XPath queries for getting attributes of a node
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 1425
diff changeset
60 String name = user.getAttributeNS(
3a8884e06aaa Avoid using XPath queries for getting attributes of a node
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 1425
diff changeset
61 ArtifactNamespaceContext.NAMESPACE_URI, "name");
25
2da6be38d8b6 Added a User interface and a default implementation to handle users in this client.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2
diff changeset
62
6188
733c32da04b8 Extend the shared interface User with the SAML ticket
Bernhard Herzog <bh@intevation.de>
parents: 5993
diff changeset
63 return new DefaultUser(uuid, name,
733c32da04b8 Extend the shared interface User with the SAML ticket
Bernhard Herzog <bh@intevation.de>
parents: 5993
diff changeset
64 loginuser.getSamlXMLBase64());
25
2da6be38d8b6 Added a User interface and a default implementation to handle users in this client.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2
diff changeset
65 }
2da6be38d8b6 Added a User interface and a default implementation to handle users in this client.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2
diff changeset
66 }
2da6be38d8b6 Added a User interface and a default implementation to handle users in this client.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2
diff changeset
67 catch (ConnectionException ce) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6188
diff changeset
68 log.error(ce, ce);
25
2da6be38d8b6 Added a User interface and a default implementation to handle users in this client.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2
diff changeset
69 }
2da6be38d8b6 Added a User interface and a default implementation to handle users in this client.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2
diff changeset
70
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6188
diff changeset
71 log.error("No users existing in the server.");
3860
b32e8353c30e Donate own error message when no users were found.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3698
diff changeset
72 throw new AuthenticationException(ERROR_NO_USERS);
2
bc5d4d2297b9 Introduced a service that retrieves the user who is currently logged in. This user is displayed in the menu bar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 }
4214
e39ac9767a69 Implement UserService method to remove current user from session
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3860
diff changeset
74
e39ac9767a69 Implement UserService method to remove current user from session
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3860
diff changeset
75 public void logoutCurrentUser() {
e39ac9767a69 Implement UserService method to remove current user from session
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3860
diff changeset
76 HttpSession session = this.getThreadLocalRequest().getSession();
e39ac9767a69 Implement UserService method to remove current user from session
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3860
diff changeset
77 session.setAttribute("user", null);
e39ac9767a69 Implement UserService method to remove current user from session
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3860
diff changeset
78 }
2
bc5d4d2297b9 Introduced a service that retrieves the user who is currently logged in. This user is displayed in the menu bar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 }
bc5d4d2297b9 Introduced a service that retrieves the user who is currently logged in. This user is displayed in the menu bar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org