Subversion Repositories WebE

Rev

Rev 30 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
18 moos 1
package ch.ffhs.webE.action;
2
 
20 moos 3
import java.util.Map;
4
 
19 moos 5
import ch.ffhs.webE.dao.UserDAOImpl;
6
import ch.ffhs.webE.domain.User;
7
 
33 PointedEar 8
import com.opensymphony.xwork2.Action;
20 moos 9
import com.opensymphony.xwork2.ActionContext;
18 moos 10
import com.opensymphony.xwork2.ActionSupport;
19 moos 11
import com.opensymphony.xwork2.ModelDriven;
18 moos 12
 
26 moos 13
public class LoginAction extends ActionSupport implements ModelDriven<User>
14
{
20 moos 15
 
33 PointedEar 16
  private static final long serialVersionUID = 1799753056277211344L;
17
  private final User user = new User();
18
  private final UserDAOImpl userDAO = new UserDAOImpl();
18 moos 19
 
33 PointedEar 20
  /* Form fields */
21
  private String userName;
22
  private String pw;
18 moos 23
 
33 PointedEar 24
  /**
25
   * JSP session object
26
   */
27
  Map<String, Object> session = ActionContext.getContext().getSession();
19 moos 28
 
33 PointedEar 29
  /**
30
   *
31
   */
32
  public LoginAction()
33
  {
34
  }
26 moos 35
 
33 PointedEar 36
  public String doLogin()
37
  {
38
 
39
    // If password or user name are empty, the login fails.
40
    if ("".equals(this.getUserName()) || "".equals(this.getPw())
41
        || this.getUserName() == null || this.getPw() == null)
26 moos 42
    {
33 PointedEar 43
      this.addFieldError("userName", "Falscher Username oder Passwort");
44
      return Action.ERROR;
26 moos 45
    }
46
 
33 PointedEar 47
    String verifiedUser = this.verifyUser(this.getUserName(), this.getPw());
48
    if (verifiedUser.equals("failed"))
26 moos 49
    {
33 PointedEar 50
      this.addFieldError("userName", "Falscher Username oder Passwort");
51
      return Action.ERROR;
26 moos 52
    }
33 PointedEar 53
    else
26 moos 54
    {
55
 
33 PointedEar 56
      // Put user name, password into session
57
      this.session.put("username", this.getUserName());
58
      this.session.put("pw", this.getPw());
59
      return verifiedUser;
60
    }
61
  }
26 moos 62
 
33 PointedEar 63
  /**
64
   * Logout ausf�hren. Zerst�rt die Daten in der Session
65
   *
66
   * @return String
67
   */
68
  public String doLogout()
69
  {
70
    // Kill Session content
71
    ActionContext.getContext().getSession().clear();
72
    return Action.SUCCESS;
73
  }
26 moos 74
 
33 PointedEar 75
  /**
76
   * Verify user credentials
77
   *
78
   * @param String
79
   *          username: User name
80
   * @param String
81
   *          password: Password (hashed)
82
   * @return
83
   */
84
  public String verifyUser(String username, String password)
85
  {
86
    // DB Query
87
    User u = this.userDAO.searchUsername(username);
26 moos 88
 
33 PointedEar 89
    // User does not exist
90
    if (u == null)
26 moos 91
    {
33 PointedEar 92
      return Action.ERROR;
26 moos 93
    }
94
 
33 PointedEar 95
    // User password does not match
96
    if (!u.getPassword().equals(password))
26 moos 97
    {
33 PointedEar 98
      return Action.ERROR;
26 moos 99
    }
100
 
33 PointedEar 101
    // User credentials are fine, check for admin rights
102
    if (u.isAdmin())
26 moos 103
    {
33 PointedEar 104
      return "admin";
26 moos 105
    }
33 PointedEar 106
    else
26 moos 107
    {
33 PointedEar 108
      return "user";
26 moos 109
    }
33 PointedEar 110
  }
26 moos 111
 
33 PointedEar 112
  public String getUserName()
113
  {
114
    return this.userName;
115
  }
116
 
117
  public void setUserName(String userName)
118
  {
119
    this.userName = userName;
120
  }
121
 
122
  public String getPw()
123
  {
124
    return this.pw;
125
  }
126
 
127
  public void setPw(String pw)
128
  {
129
    this.pw = pw;
130
  }
131
 
132
  @Override
133
  public User getModel()
134
  {
135
    return this.user;
136
  }
18 moos 137
}