Skip to content

Commit b9a4191

Browse files
committed
As a System I want to save login and password in cookies
1 parent c5e91b3 commit b9a4191

4 files changed

Lines changed: 68 additions & 0 deletions

File tree

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@
7777
<artifactId>guava</artifactId>
7878
<version>11.0</version>
7979
</dependency>
80+
<dependency>
81+
<groupId>javax.servlet</groupId>
82+
<artifactId>servlet-api</artifactId>
83+
<version>2.5</version>
84+
<scope>provided</scope>
85+
</dependency>
8086

8187

8288
</dependencies>

src/main/java/pl/tomaszdziurko/wicket/WicketApplication.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44
import org.apache.wicket.protocol.http.WebApplication;
55
import org.apache.wicket.request.Request;
66
import org.apache.wicket.request.Response;
7+
import pl.tomaszdziurko.wicket.service.CookieService;
78
import pl.tomaszdziurko.wicket.service.UserService;
89
import pl.tomaszdziurko.wicket.view.HomePage;
910
import pl.tomaszdziurko.wicket.view.LoginPage;
1011

1112
public class WicketApplication extends WebApplication {
1213

1314
private UserService userService = new UserService();
15+
private CookieService cookieService = new CookieService();
1416

1517
@Override
1618
public Class<HomePage> getHomePage() {
@@ -39,5 +41,9 @@ public UserService getUserService() {
3941
return userService;
4042
}
4143

44+
public CookieService getCookieService() {
45+
return cookieService;
46+
}
47+
4248

4349
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package pl.tomaszdziurko.wicket.service;
2+
3+
import org.apache.wicket.request.Request;
4+
import org.apache.wicket.request.Response;
5+
import org.apache.wicket.request.http.WebRequest;
6+
import org.apache.wicket.request.http.WebResponse;
7+
8+
import javax.servlet.http.Cookie;
9+
import java.util.List;
10+
import java.util.concurrent.TimeUnit;
11+
12+
public class CookieService {
13+
14+
public Cookie loadCookie(Request request, String cookieName) {
15+
16+
List<Cookie> cookies = ((WebRequest) request).getCookies();
17+
18+
if (cookies == null) {
19+
return null;
20+
}
21+
22+
for (Cookie cookie : cookies) {
23+
if(cookie.getName().equals(cookieName)) {
24+
return cookie;
25+
}
26+
}
27+
28+
return null;
29+
}
30+
31+
public void saveCookie(Response response, String cookieName, String cookieValue, int expiryTimeInDays) {
32+
Cookie cookie = new Cookie(cookieName, cookieValue);
33+
cookie.setMaxAge((int) TimeUnit.DAYS.toSeconds(expiryTimeInDays));
34+
((WebResponse)response).addCookie(cookie);
35+
}
36+
37+
public void removeCookieIfPresent(Request request, Response response, String cookieName) {
38+
Cookie cookie = loadCookie(request, cookieName);
39+
40+
if(cookie != null) {
41+
((WebResponse)response).clearCookie(cookie);
42+
}
43+
}
44+
}

src/main/java/pl/tomaszdziurko/wicket/view/LoginPage.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,15 @@
1010
import pl.tomaszdziurko.wicket.UserSession;
1111
import pl.tomaszdziurko.wicket.WicketApplication;
1212
import pl.tomaszdziurko.wicket.model.User;
13+
import pl.tomaszdziurko.wicket.service.CookieService;
1314
import pl.tomaszdziurko.wicket.service.UserService;
1415

1516
public class LoginPage extends BasePage {
1617

18+
public static final int REMEMBER_ME_DURATION_IN_DAYS = 30;
19+
private static final String REMEMBER_ME_LOGIN_COOKIE = "loginCookie";
20+
private static final String REMEMBER_ME_PASSWORD_COOKIE = "passwordCookie";
21+
1722
private String login;
1823
private String password;
1924
private boolean rememberMe;
@@ -40,6 +45,13 @@ public void onSubmit() {
4045
}
4146
else {
4247
UserSession.get().setUser(user);
48+
49+
if(rememberMe) {
50+
CookieService cookieService = WicketApplication.get().getCookieService();
51+
cookieService.saveCookie(getResponse(), REMEMBER_ME_LOGIN_COOKIE, user.getLogin(), REMEMBER_ME_DURATION_IN_DAYS);
52+
cookieService.saveCookie(getResponse(), REMEMBER_ME_PASSWORD_COOKIE, user.getPassword(), REMEMBER_ME_DURATION_IN_DAYS);
53+
}
54+
4355
setResponsePage(HomePage.class);
4456
}
4557
}

0 commit comments

Comments
 (0)