diff src/nabble/view/web/user/UserEditorNamespace.java @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/nabble/view/web/user/UserEditorNamespace.java	Thu Mar 21 19:15:52 2019 -0600
@@ -0,0 +1,103 @@
+package nabble.view.web.user;
+
+import nabble.model.Message;
+import nabble.model.ModelException;
+import nabble.model.User;
+import nabble.naml.compiler.Command;
+import nabble.naml.compiler.CommandSpec;
+import nabble.naml.compiler.IPrintWriter;
+import nabble.naml.compiler.Interpreter;
+import nabble.naml.compiler.Namespace;
+import nabble.naml.namespaces.TemplateException;
+import nabble.view.lib.Permissions;
+import nabble.view.web.template.ServletNamespace;
+
+
+@Namespace (
+	name = "user_editor",
+	global = true
+)
+public final class UserEditorNamespace {
+	private final User user;
+
+	public UserEditorNamespace(User user) {
+		this.user = user;
+	}
+
+	public static final CommandSpec save_user = CommandSpec.NO_OUTPUT;
+
+	@Command public void save_user(IPrintWriter out,Interpreter interp) {
+		user.update();
+	}
+
+	public static final CommandSpec add_to_group = new CommandSpec.Builder()
+		.dotParameter("group")
+		.build()
+	;
+
+	@Command public void add_to_group(IPrintWriter out,Interpreter interp)
+		throws TemplateException
+	{
+		String group = interp.getArgString("group");
+		Permissions.addToGroup(user, group);
+	}
+
+	public static final CommandSpec remove_from_group = new CommandSpec.Builder()
+		.dotParameter("group")
+		.build()
+	;
+
+	@Command public void remove_from_group(IPrintWriter out,Interpreter interp)
+		throws TemplateException
+	{
+		String group = interp.getArgString("group");
+		Permissions.removeFromGroup(user, group);
+	}
+
+	public static final CommandSpec set_signature = CommandSpec.NO_OUTPUT()
+		.parameters("signature","is_html")
+		.requiredInStack(ServletNamespace.class)
+		.build()
+	;
+
+	@Command public void set_signature(IPrintWriter out,Interpreter interp)
+		throws ModelException
+	{
+		String signature = interp.getArgString("signature");
+		boolean isHtml = interp.getArgAsBoolean("is_html", false);
+		Message.Format fmt = isHtml? Message.Format.HTML : Message.Format.TEXT;
+		ServletNamespace servletNs = interp.getFromStack(ServletNamespace.class);
+		user.setSignature(signature, fmt);
+	}
+
+	public static final CommandSpec set_name = CommandSpec.NO_OUTPUT()
+		.parameters("name")
+		.build()
+	;
+
+	@Command public void set_name(IPrintWriter out,Interpreter interp)
+		throws ModelException
+	{
+		String name = interp.getArgString("name");
+		user.setName(name);
+	}
+
+	public static final CommandSpec set_password = CommandSpec.NO_OUTPUT()
+		.parameters("password1", "password2")
+		.build()
+	;
+
+	@Command public void set_password(IPrintWriter out,Interpreter interp)
+		throws TemplateException
+	{
+		String password1 = interp.getArgString("password1");
+		String password2 = interp.getArgString("password2");
+		if (password1.trim().isEmpty() && password2.trim().isEmpty())
+			return; // skip change
+		if (password1.equals(password2)) {
+			user.setPassword(password1);
+		} else
+			throw ModelException.newInstance("passwords_dont_match");
+	}
+
+}