Skip to content

Commit 79cc3ae

Browse files
committed
Redirects user after sending data to protect from double submission.
/account/register -> /successful/registration /account/activate -> /successful/activation Fixed #74
1 parent b66ae1a commit 79cc3ae

File tree

6 files changed

+15
-4
lines changed

6 files changed

+15
-4
lines changed

src/main/java/ru/mystamps/web/SiteMap.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ public final class SiteMap {
3434
// defined at src/main/resources/spring/DispatcherServletContext.xml
3535
public static final String INDEX_PAGE_URL = "/";
3636
public static final String MAINTENANCE_PAGE_URL = "/site/maintenance";
37+
public static final String SUCCESSFUL_REGISTRATION_PAGE_URL = "/successful/registration";
38+
public static final String SUCCESSFUL_ACTIVATION_PAGE_URL = "/successful/activation";
3739

3840
public static final String REGISTRATION_PAGE_URL = "/account/register";
3941
public static final String AUTHENTICATION_PAGE_URL = "/account/auth";

src/main/java/ru/mystamps/web/controller/ActivateAccountController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838

3939
import static ru.mystamps.web.SiteMap.ACTIVATE_ACCOUNT_PAGE_URL;
4040
import static ru.mystamps.web.SiteMap.ACTIVATE_ACCOUNT_PAGE_WITH_KEY_URL;
41+
import static ru.mystamps.web.SiteMap.SUCCESSFUL_ACTIVATION_PAGE_URL;
4142

4243
@Controller
4344
public class ActivateAccountController {
@@ -91,7 +92,7 @@ public String processInput(
9192
form.getActivationKey()
9293
);
9394

94-
return "account/activation_successful";
95+
return "redirect:" + SUCCESSFUL_ACTIVATION_PAGE_URL;
9596
}
9697

9798
}

src/main/java/ru/mystamps/web/controller/RegisterAccountController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import ru.mystamps.web.validation.RegisterAccountValidator;
3535

3636
import static ru.mystamps.web.SiteMap.REGISTRATION_PAGE_URL;
37+
import static ru.mystamps.web.SiteMap.SUCCESSFUL_REGISTRATION_PAGE_URL;
3738

3839
@Controller
3940
@RequestMapping(REGISTRATION_PAGE_URL)
@@ -73,8 +74,7 @@ public String processInput(
7374

7475
userService.addRegistrationRequest(form.getEmail());
7576

76-
// TODO: do redirect to protect from double submission (#74)
77-
return "account/activation_sent";
77+
return "redirect:" + SUCCESSFUL_REGISTRATION_PAGE_URL;
7878
}
7979

8080
}

src/main/resources/spring/DispatcherServletContext.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
<mvc:view-controller path="/" view-name="site/index" />
3333
<mvc:view-controller path="/site/maintenance" view-name="site/maintenance" />
3434
<mvc:view-controller path="/password/restore" view-name="password/restore" />
35+
<mvc:view-controller path="/successful/registration" view-name="account/activation_sent" />
36+
<mvc:view-controller path="/successful/activation" view-name="account/activation_successful" />
3537

3638
<import resource="database.xml" />
3739

src/test/java/ru/mystamps/web/tests/cases/WhenUserActivateAccount.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040

4141
import static ru.mystamps.web.SiteMap.ACTIVATE_ACCOUNT_PAGE_WITH_KEY_URL;
4242
import static ru.mystamps.web.SiteMap.AUTHENTICATION_PAGE_URL;
43+
import static ru.mystamps.web.SiteMap.SUCCESSFUL_ACTIVATION_PAGE_URL;
4344

4445
@RunWith(SpringJUnit4ClassRunner.class)
4546
@ContextConfiguration(locations = "classpath:spring/TestContext.xml")
@@ -278,6 +279,8 @@ public void afterActivationShouldExistsMessageWithLinkForAuthentication() {
278279
page.fillField("activationKey", NOT_ACTIVATED_USER_ACT_KEY);
279280
page.submit();
280281

282+
assertThat(page.getCurrentUrl()).isEqualTo(SUCCESSFUL_ACTIVATION_PAGE_URL);
283+
281284
assertThat(page.textPresent(stripHtmlTags(tr("t_activation_successful")))).isTrue();
282285

283286
assertThat(page.linkHasLabelAndPointsTo("authentication", AUTHENTICATION_PAGE_URL))

src/test/java/ru/mystamps/web/tests/cases/WhenUserRegisterAccount.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import static ru.mystamps.web.SiteMap.AUTHENTICATION_PAGE_URL;
2424
import static ru.mystamps.web.SiteMap.RESTORE_PASSWORD_PAGE_URL;
25+
import static ru.mystamps.web.SiteMap.SUCCESSFUL_REGISTRATION_PAGE_URL;
2526
import static ru.mystamps.web.tests.TranslationUtils.tr;
2627
import static ru.mystamps.web.tests.TranslationUtils.stripHtmlTags;
2728
import static ru.mystamps.web.validation.ValidationRules.EMAIL_MAX_LENGTH;
@@ -99,7 +100,9 @@ public void emailShouldBeStripedFromLeadingAndTrailingSpaces() {
99100
public void successfulMessageShouldBeShownAfterRegistration() {
100101
page.fillField("email", "coder@rock.home");
101102
page.submit();
102-
// TODO: check page url
103+
104+
assertThat(page.getCurrentUrl()).isEqualTo(SUCCESSFUL_REGISTRATION_PAGE_URL);
105+
103106
assertThat(page.textPresent(tr("t_activation_sent_message"))).isTrue();
104107
}
105108

0 commit comments

Comments
 (0)