Subversion Repositories WebE

Rev

Rev 26 | Rev 33 | Go to most recent revision | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed

1
package ch.ffhs.webE.action;

import java.util.Map;

import ch.ffhs.webE.dao.UserDAO;
import ch.ffhs.webE.dao.UserDAOImpl;
import ch.ffhs.webE.domain.User;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class LoginAction extends ActionSupport implements ModelDriven<User>
{

    private static final long serialVersionUID = 1799753056277211344L;
    private User user = new User();
    private UserDAO userDAO = new UserDAOImpl();

    // Form fields
    private String userName;
    private String pw;

    // Session Object
    Map<String, Object> session = ActionContext.getContext().getSession();

    public LoginAction()
    {
    }

    public String doLogin()
    {

        // If password or user name are empty, the login fails.
        if ("".equals(getUserName()) || "".equals(getPw())
                || getUserName() == null || getPw() == null)
        {
            addFieldError("userName", "Falscher Username oder Passwort");
            return ERROR;
        }

        String verifiedUser = verifyUser(getUserName(), getPw());
        if (verifiedUser.equals("failed"))
        {
            addFieldError("userName", "Falscher Username oder Passwort");
            return ERROR;
        }
        else
        {

            // Put user name, password into session
            session.put("username", getUserName());
            session.put("pw", getPw());
            return verifiedUser;
        }
    }

    /**
     * Logout ausführen. Zerstört die Daten in der Session
     * @return String
     */

    public String doLogout()
    {
        //Kill Session content
        ActionContext.getContext().getSession().clear();
        return SUCCESS;
    }

    /**
     * Verify user credentials
     *
     * @param String
     *            username: User name
     * @param String
     *            password: Password (hashed)
     * @return
     */

    public String verifyUser(String username, String password)
    {
        // DB Query
        User u = userDAO.searchUsername(username);

        // User does not exist
        if (u == null)
            return ERROR;

        // User password does not match
        if (!u.getPassword().equals(password))
            return ERROR;

        // User credentials are fine, check for admin rights
        if (u.isAdmin())
        {
            return "admin";
        }
        else
        {
            return "user";
        }
    }

    public String getUserName()
    {
        return userName;
    }

    public void setUserName(String userName)
    {
        this.userName = userName;
    }

    public String getPw()
    {
        return pw;
    }

    public void setPw(String pw)
    {
        this.pw = pw;
    }

    @Override
    public User getModel()
    {
        return user;
    }
}