view flys-client/src/main/java/de/intevation/flys/client/server/LoginServlet.java @ 3697:2e12518ff5b4

Removed trailing whitespace. Reverted functional change in parsing plain user file. flys-client/trunk@5396 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sat, 08 Sep 2012 12:22:53 +0000
parents a050cb5f303f
children a4c9296f6efa
line wrap: on
line source
package de.intevation.flys.client.server;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;

import de.intevation.flys.client.server.auth.Authentication;
import de.intevation.flys.client.server.auth.AuthenticationException;
import de.intevation.flys.client.server.auth.AuthenticationFactory;
import de.intevation.flys.client.server.auth.User;
import de.intevation.flys.client.server.auth.UserClient;
import de.intevation.flys.client.server.features.Features;

public class LoginServlet extends HttpServlet {

    private static Logger logger = Logger.getLogger(LoginServlet.class);

    private void redirectFailure(HttpServletResponse resp) throws IOException {
        resp.sendRedirect("/login.jsp");
    }

    private void redirectFailure(HttpServletResponse resp, Exception e) throws IOException {
        this.redirectFailure(resp, e.getMessage());
    }

    private void redirectFailure(HttpServletResponse resp, String message) throws IOException {
        resp.sendRedirect("/login.jsp?error=" + message);
    }
    private void redirectSuccess(HttpServletResponse resp, String uri) throws IOException {
        if (uri == null) {
            uri = "/FLYS.html";
        }
        resp.sendRedirect(uri);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
        logger.debug("Processing get request");
        this.redirectFailure(resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException
    {
        String encoding = req.getCharacterEncoding();
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        logger.debug("Processing post request");

        if (username == null || password == null) {
            logger.debug("No username or password provided");
            this.redirectFailure(resp);
            return;
        }

        try {
            Authentication aresp = this.auth(username, password, encoding);
            if (aresp == null || !aresp.isSuccess()) {
                logger.debug("Authentication not successful");
                this.redirectFailure(resp);
            }
            User user = aresp.getUser();

            String url = getServletContext().getInitParameter("server-url");
            UserClient client = new UserClient(url);
            if (!client.userExists(user)) {
                logger.debug("Creating db user");
                if (!client.createUser(user)) {
                    this.redirectFailure(resp, "Could not create new user");
                }
            }

            HttpSession session = req.getSession();
            session.setAttribute("user", user);

            String uri = (String)session.getAttribute("requesturi");

            this.redirectSuccess(resp, uri);
        }
        catch(AuthenticationException e) {
            logger.error(e);
            this.redirectFailure(resp, e);
        }
    }

    private Authentication auth(String username, String password, String encoding)
        throws AuthenticationException, IOException
    {
        ServletContext sc = this.getServletContext();
        Features features = (Features)sc.getAttribute(Features.CONTEXT_ATTRIBUTE);
        String auth = sc.getInitParameter("authentication");
        return AuthenticationFactory.getInstance(auth).auth(username, password, encoding, features);
    }
}

http://dive4elements.wald.intevation.org