diff src/nabble/view/web/user/EditProfile.jtp @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children 18cf4872fd7f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/nabble/view/web/user/EditProfile.jtp	Thu Mar 21 19:15:52 2019 -0600
@@ -0,0 +1,138 @@
+<%
+package nabble.view.web.user;
+
+import fschmidt.db.DbDatabase;
+import fschmidt.util.java.HtmlUtils;
+import fschmidt.util.servlet.ServletUtils;
+import nabble.model.Db;
+import nabble.model.ModelException;
+import nabble.model.User;
+import nabble.view.lib.Jtp;
+import nabble.view.lib.Shared;
+import nabble.view.lib.help.Help;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+
+public final class EditProfile extends HttpServlet {
+
+	protected void service(HttpServletRequest request,HttpServletResponse response)
+		throws ServletException, IOException
+	{
+		PrintWriter out = response.getWriter();
+		User user = Jtp.getUser(request,response);
+		if( user==null ) {
+			Jtp.login("You must login to edit your profile.",request,response);
+			return;
+		}
+		String password1 = null;
+		String password2 = null;
+		String name;
+		String errorMsg = null;
+
+		if ("save".equals(request.getParameter("action")) && "POST".equals(request.getMethod())) {
+			password1 = request.getParameter("password1");
+			password2 = request.getParameter("password2");
+			name = request.getParameter("name");
+			if (!password1.equals(password2) ) {
+				errorMsg = "The password fields don't match.";
+			} else if (password1.length() > 0 && password1.trim().length() == 0) {
+				errorMsg = "Your password must contain valid alphanumeric characters.";
+			} else {
+				DbDatabase db = user.getSite().getDb();
+				db.beginTransaction();
+				try {
+					User u = user.getGoodCopy();
+					if (password1.length() > 0)
+						u.setPassword(password1);
+					u.setName(name);
+					u.update();
+					db.commitTransaction();
+					String pwd = u.getPasscookie();
+					ServletUtils.setCookie(request,response,"username", HtmlUtils.urlEncode(name), false, null);
+					ServletUtils.setCookie(request,response,"password", HtmlUtils.urlEncode(pwd), false, null);
+
+					StringBuffer js = new StringBuffer();
+					js.append("if (parent.nabbleinfo) {");
+					js.append("Nabble.setCookie('username','").append(HtmlUtils.javascriptStringEncode(HtmlUtils.urlEncode(name))).append("');");
+					js.append("Nabble.setCookie('password','").append(HtmlUtils.javascriptStringEncode(HtmlUtils.urlEncode(pwd))).append("');");
+					js.append("}");
+
+					Shared.javascriptRedirect(request,response, "/template/NamlServlet.jtp?macro=user_profile", js.toString());
+					return;
+				} catch(ModelException e) {
+					errorMsg = e.getMessage();
+				} finally {
+					db.endTransaction();
+				}
+			}
+		} else {
+			name = user.getName();
+		}
+		%>
+		<html>
+			<head>
+				<% Shared.title(request,response,"Edit Personal Information"); %>
+			</head>
+			<body>
+				<% Shared.minHeaderGlobal(request, response); %>
+				<% Shared.profileHeading(request,out,user,"Edit Personal Information"); %>
+				<% Shared.errorMessage(request,response,errorMsg, "Please re-enter the information and click on \"Update Information\"."); %>
+				<style>
+					div.field-title {
+						margin-top: 0;
+					}
+				</style>
+				<form method=post action="EditProfile.jtp">
+					<input type=hidden name="action" value="save">
+
+					<div class="field-box light-border-color">
+						<div class="second-font field-title">Email</div>
+						<div class="weak-color">
+							<%=user.getEmail()%>
+							&#187; <a href="ChangeEmail.jtp">Change Email</a>
+						</div>
+					</div>
+
+					<div class="field-box light-border-color" id="username-field" >
+						<div class="second-font field-title">Your User Name</div>
+						<div class="weak-color">
+							Your user name must be unique in <%=user.getSite().getRootNode().getSubjectHtml()%>.
+						</div>
+						<div><input name="name" size="25" maxlength="25" value="<%=HtmlUtils.htmlEncode(Jtp.hideNull(name))%>" /></div>
+					</div>
+
+					<div class="field-box light-border-color">
+						<div class="second-font field-title">Change Password</div>
+						<div class="weak-color">Nabble encrypts your password (<a href="<%=Help.password.url(request)%>">?</a>)</div>
+						<table style="margin: .4em 0" class="shaded-bg-color">
+							<tr valign="top">
+								<td class="form-label" style="padding-top:.6em">Password:&nbsp;</td>
+								<td><input type="password" name="password1" size="25" value="<%=Jtp.hideNull(password1)%>"/></td>
+							</tr>
+							<tr>
+								<td class="form-label">Confirm Password:&nbsp;</td>
+								<td><input type="password" name="password2" size="25" value="<%=Jtp.hideNull(password2)%>"/></td>
+							</tr>
+						</table>
+					</div>
+
+					<div class="field-box light-border-color" style="padding-top:0">
+						<input type=submit value="Update Personal Information" />
+						or <a href="/template/NamlServlet.jtp?macro=user_profile">Cancel</a>
+					</div>
+				</form>
+
+				<% Shared.footer(request,response); %>
+				<% Shared.analytics(request,response); %>
+			</body>
+		</html>
+		<%
+	}
+}
+%>