ingo@2: package de.intevation.flys.client.server;
ingo@2: 
bjoern@4214: import javax.servlet.http.HttpSession;
bjoern@4214: 
bjoern@3502: import org.w3c.dom.Element;
ingo@25: 
ingo@1367: import org.apache.log4j.Logger;
ingo@1367: 
ingo@25: import de.intevation.artifacts.common.ArtifactNamespaceContext;
ingo@25: 
ingo@25: import de.intevation.artifacts.httpclient.exceptions.ConnectionException;
ingo@2: 
ingo@2: import de.intevation.flys.client.client.services.UserService;
ingo@3548: import de.intevation.flys.client.server.auth.UserClient;
ingo@217: import de.intevation.flys.client.shared.exceptions.AuthenticationException;
ingo@25: import de.intevation.flys.client.shared.model.DefaultUser;
ingo@25: import de.intevation.flys.client.shared.model.User;
ingo@2: 
ingo@2: /**
ingo@2:  * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
ingo@2:  */
ingo@2: public class UserServiceImpl
ingo@2: extends      RemoteServiceServlet
ingo@2: implements   UserService
ingo@2: {
felix@3860:     /** Private logger. */
ingo@1367:     private static final Logger logger = Logger.getLogger(UserServiceImpl.class);
ingo@1367: 
ingo@217:     public static final String ERROR_NO_SUCH_USER = "error_no_such_user";
ingo@217: 
felix@3860:     public static final String ERROR_NO_USERS = "error_no_users";
felix@3860: 
raimund@1425:     public User getCurrentUser(String locale)
ingo@217:     throws AuthenticationException
ingo@217:     {
raimund@1425:         String url = getServletContext().getInitParameter("server-url");
raimund@1425: 
ingo@3548:         UserClient client = new UserClient(url);
ingo@3548:         de.intevation.flys.client.server.auth.User loginuser = getUser();
ingo@25: 
sascha@3695:         if (loginuser == null) {
sascha@3695:             logger.debug("no session user");
sascha@3695:             throw new AuthenticationException(ERROR_NO_SUCH_USER);
sascha@3695:         }
sascha@3695: 
ingo@25:         try {
ingo@3548:             Element user = client.findUser(loginuser);
ingo@25: 
ingo@3548:             if (user != null) {
bjoern@3502:                 String uuid = user.getAttributeNS(
bjoern@3502:                         ArtifactNamespaceContext.NAMESPACE_URI, "uuid");
bjoern@3502:                 String name = user.getAttributeNS(
bjoern@3502:                         ArtifactNamespaceContext.NAMESPACE_URI, "name");
ingo@25: 
ingo@25:                 return new DefaultUser(uuid, name);
ingo@25:             }
ingo@25:         }
ingo@25:         catch (ConnectionException ce) {
ingo@1367:             logger.error(ce, ce);
ingo@25:         }
ingo@25: 
ingo@1367:         logger.error("No users existing in the server.");
felix@3860:         throw new AuthenticationException(ERROR_NO_USERS);
ingo@2:     }
bjoern@4214: 
bjoern@4214:     public void logoutCurrentUser() {
bjoern@4214:         HttpSession session = this.getThreadLocalRequest().getSession();
bjoern@4214:         session.setAttribute("user", null);
bjoern@4214:     }
ingo@2: }
ingo@2: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :