summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2013-09-03 07:02:59 -0700
committerJesse Morgan <jesse@jesterpm.net>2013-09-03 07:03:26 -0700
commiteb881fdc9b62d1b9d1f5c61f1f4077065db7e933 (patch)
tree85dda0e94824177ed5aed88d511b95071fe85d87 /src
parent84d008be8a35d3a19607de669042ddb5c6540f0c (diff)
New account page improvements and renumbered questions.
Diffstat (limited to 'src')
-rw-r--r--src/com/p4square/f1oauth/F1OAuthHelper.java19
-rw-r--r--src/com/p4square/grow/frontend/NewAccountResource.java20
-rw-r--r--src/grow.properties2
-rw-r--r--src/templates/pages/newaccount.html.ftl15
4 files changed, 38 insertions, 18 deletions
diff --git a/src/com/p4square/f1oauth/F1OAuthHelper.java b/src/com/p4square/f1oauth/F1OAuthHelper.java
index d75460f..b5241c4 100644
--- a/src/com/p4square/f1oauth/F1OAuthHelper.java
+++ b/src/com/p4square/f1oauth/F1OAuthHelper.java
@@ -13,7 +13,9 @@ import org.restlet.Response;
import org.restlet.Request;
import org.restlet.data.ChallengeResponse;
import org.restlet.data.ChallengeScheme;
+import org.restlet.data.MediaType;
import org.restlet.data.Method;
+import org.restlet.data.Status;
import org.restlet.engine.util.Base64;
import org.restlet.representation.StringRepresentation;
@@ -108,21 +110,28 @@ public class F1OAuthHelper extends OAuthHelper {
return processAccessTokenRequest(request);
}
- public void createAccount(String firstname, String lastname, String email, String redirect)
+ public boolean createAccount(String firstname, String lastname, String email, String redirect)
throws OAuthException {
String req = String.format("{\n\"account\":{\n\"firstName\":\"%s\",\n"
+ "\"lastName\":\"%s\",\n\"email\":\"%s\",\n"
+ "\"urlRedirect\":\"%s\"\n}\n}",
firstname, lastname, email, redirect);
- Request request = new Request(Method.POST, mBaseUrl + "/Accounts");
+ Request request = new Request(Method.POST, mBaseUrl + "Accounts");
request.setChallengeResponse(new ChallengeResponse(ChallengeScheme.HTTP_OAUTH));
- request.setEntity(new StringRepresentation(req));
+ request.setEntity(new StringRepresentation(req, MediaType.APPLICATION_JSON));
Response response = getResponse(request);
- if (!response.getStatus().isSuccess()) {
- throw new OAuthException(response.getStatus());
+ Status status = response.getStatus();
+ if (Status.SUCCESS_NO_CONTENT.equals(status)) {
+ return true;
+
+ } else if (Status.CLIENT_ERROR_CONFLICT.equals(status)) {
+ return false;
+
+ } else {
+ throw new OAuthException(status);
}
}
}
diff --git a/src/com/p4square/grow/frontend/NewAccountResource.java b/src/com/p4square/grow/frontend/NewAccountResource.java
index b72680a..9155a00 100644
--- a/src/com/p4square/grow/frontend/NewAccountResource.java
+++ b/src/com/p4square/grow/frontend/NewAccountResource.java
@@ -46,10 +46,12 @@ public class NewAccountResource extends FreeMarkerPageResource {
mGrowFrontend = (GrowFrontend) getApplication();
mHelper = mGrowFrontend.getHelper();
- mErrorMessage = null;
+ mErrorMessage = "";
- mLoginPageUrl = "";
- mVerificationPage = "";
+ mLoginPageUrl = mGrowFrontend.getConfig().getString("postAccountCreationPage",
+ getRequest().getRootRef().toString());
+ mVerificationPage = mGrowFrontend.getConfig().getString("dynamicRoot", "")
+ + "/verification.html";
}
/**
@@ -66,7 +68,9 @@ public class NewAccountResource extends FreeMarkerPageResource {
}
Map<String, Object> root = getRootObject();
- root.put("errorMessage", mErrorMessage);
+ if (mErrorMessage.length() > 0) {
+ root.put("errorMessage", mErrorMessage);
+ }
return new TemplateRepresentation(t, root, MediaType.TEXT_HTML);
@@ -100,7 +104,11 @@ public class NewAccountResource extends FreeMarkerPageResource {
}
try {
- mHelper.createAccount(firstname, lastname, email, mLoginPageUrl);
+ if (!mHelper.createAccount(firstname, lastname, email, mLoginPageUrl)) {
+ mErrorMessage = "An account with that address already exists.";
+ return get();
+ }
+
getResponse().redirectSeeOther(mVerificationPage);
return new StringRepresentation("Redirecting to " + mVerificationPage);
@@ -110,6 +118,6 @@ public class NewAccountResource extends FreeMarkerPageResource {
}
private boolean isEmpty(String s) {
- return s != null && s.trim().length() > 0;
+ return s == null || s.trim().length() == 0;
}
}
diff --git a/src/grow.properties b/src/grow.properties
index 88bee42..6dd282c 100644
--- a/src/grow.properties
+++ b/src/grow.properties
@@ -12,6 +12,8 @@ dev.dynamicRoot =
*.f1BaseUrl = staging.fellowshiponeapi.com
*.f1ChurchCode = pfseawa
+prod.postAccountCreationPage = http://foursquaregrow.com/login.html
+
# Backend Settings
dev.clusterName = Dev Cluster
diff --git a/src/templates/pages/newaccount.html.ftl b/src/templates/pages/newaccount.html.ftl
index 780a5c8..edfd196 100644
--- a/src/templates/pages/newaccount.html.ftl
+++ b/src/templates/pages/newaccount.html.ftl
@@ -2,19 +2,20 @@
<#include "/macros/common-page.ftl">
<@commonpage>
- <@noticebox>
- <#if errorMessage??>
+ <#if errorMessage??>
+ <@noticebox class="visible">
${errorMessage?html}
- <#else>
- Welcome!
- </#if>
- </@noticebox>
+ </@noticebox>
+ <#else>
+ <@noticebox>
+ </@noticebox>
+ </#if>
<@content>
<p>
Fill out the form below to create a new Puyallup Foursquare InFellowship account.
</p>
- <form action="${dynamicRoot}/createaccount" method="post">
+ <form action="${dynamicRoot}/newaccount.html" method="post">
<p><label for="firstnameField">First Name:</label> <input id="firstnameField" type="text" name="firstname" /></p>
<p><label for="lastnameField">Last Name:</label> <input id="lastnameField" type="text" name="lastname" /></p>
<p><label for="emailField">Email:</label> <input id="emailField" type="text" name="email" /></p>