Skip to content

Commit

Permalink
As a System I want to save login and password in cookies
Browse files Browse the repository at this point in the history
  • Loading branch information
tdziurko committed Sep 14, 2012
1 parent c5e91b3 commit b9a4191
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 0 deletions.
6 changes: 6 additions & 0 deletions pom.xml
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -77,6 +77,12 @@
<artifactId>guava</artifactId> <artifactId>guava</artifactId>
<version>11.0</version> <version>11.0</version>
</dependency> </dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>




</dependencies> </dependencies>
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/pl/tomaszdziurko/wicket/WicketApplication.java
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
import org.apache.wicket.protocol.http.WebApplication; import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.request.Request; import org.apache.wicket.request.Request;
import org.apache.wicket.request.Response; import org.apache.wicket.request.Response;
import pl.tomaszdziurko.wicket.service.CookieService;
import pl.tomaszdziurko.wicket.service.UserService; import pl.tomaszdziurko.wicket.service.UserService;
import pl.tomaszdziurko.wicket.view.HomePage; import pl.tomaszdziurko.wicket.view.HomePage;
import pl.tomaszdziurko.wicket.view.LoginPage; import pl.tomaszdziurko.wicket.view.LoginPage;


public class WicketApplication extends WebApplication { public class WicketApplication extends WebApplication {


private UserService userService = new UserService(); private UserService userService = new UserService();
private CookieService cookieService = new CookieService();


@Override @Override
public Class<HomePage> getHomePage() { public Class<HomePage> getHomePage() {
Expand Down Expand Up @@ -39,5 +41,9 @@ public UserService getUserService() {
return userService; return userService;
} }


public CookieService getCookieService() {
return cookieService;
}



} }
44 changes: 44 additions & 0 deletions src/main/java/pl/tomaszdziurko/wicket/service/CookieService.java
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,44 @@
package pl.tomaszdziurko.wicket.service;

import org.apache.wicket.request.Request;
import org.apache.wicket.request.Response;
import org.apache.wicket.request.http.WebRequest;
import org.apache.wicket.request.http.WebResponse;

import javax.servlet.http.Cookie;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class CookieService {

public Cookie loadCookie(Request request, String cookieName) {

List<Cookie> cookies = ((WebRequest) request).getCookies();

if (cookies == null) {
return null;
}

for (Cookie cookie : cookies) {
if(cookie.getName().equals(cookieName)) {
return cookie;
}
}

return null;
}

public void saveCookie(Response response, String cookieName, String cookieValue, int expiryTimeInDays) {
Cookie cookie = new Cookie(cookieName, cookieValue);
cookie.setMaxAge((int) TimeUnit.DAYS.toSeconds(expiryTimeInDays));
((WebResponse)response).addCookie(cookie);
}

public void removeCookieIfPresent(Request request, Response response, String cookieName) {
Cookie cookie = loadCookie(request, cookieName);

if(cookie != null) {
((WebResponse)response).clearCookie(cookie);
}
}
}
12 changes: 12 additions & 0 deletions src/main/java/pl/tomaszdziurko/wicket/view/LoginPage.java
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -10,10 +10,15 @@
import pl.tomaszdziurko.wicket.UserSession; import pl.tomaszdziurko.wicket.UserSession;
import pl.tomaszdziurko.wicket.WicketApplication; import pl.tomaszdziurko.wicket.WicketApplication;
import pl.tomaszdziurko.wicket.model.User; import pl.tomaszdziurko.wicket.model.User;
import pl.tomaszdziurko.wicket.service.CookieService;
import pl.tomaszdziurko.wicket.service.UserService; import pl.tomaszdziurko.wicket.service.UserService;


public class LoginPage extends BasePage { public class LoginPage extends BasePage {


public static final int REMEMBER_ME_DURATION_IN_DAYS = 30;
private static final String REMEMBER_ME_LOGIN_COOKIE = "loginCookie";
private static final String REMEMBER_ME_PASSWORD_COOKIE = "passwordCookie";

private String login; private String login;
private String password; private String password;
private boolean rememberMe; private boolean rememberMe;
Expand All @@ -40,6 +45,13 @@ public void onSubmit() {
} }
else { else {
UserSession.get().setUser(user); UserSession.get().setUser(user);

if(rememberMe) {
CookieService cookieService = WicketApplication.get().getCookieService();
cookieService.saveCookie(getResponse(), REMEMBER_ME_LOGIN_COOKIE, user.getLogin(), REMEMBER_ME_DURATION_IN_DAYS);
cookieService.saveCookie(getResponse(), REMEMBER_ME_PASSWORD_COOKIE, user.getPassword(), REMEMBER_ME_DURATION_IN_DAYS);
}

setResponsePage(HomePage.class); setResponsePage(HomePage.class);
} }
} }
Expand Down

0 comments on commit b9a4191

Please sign in to comment.