view src/nabble/view/web/catalog/SetPin.java @ 19:18cf4872fd7f

remove anonymous posting
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 29 May 2020 22:58:25 -0600
parents 7ecd1a4ef557
children
line wrap: on
line source

package nabble.view.web.catalog;

import fschmidt.util.servlet.AuthorizingServlet;
import nabble.model.ModelHome;
import nabble.model.Node;
import nabble.model.User;
import nabble.view.lib.Jtp;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


public class SetPin extends HttpServlet implements AuthorizingServlet {

	public String getAuthorizationKey(HttpServletRequest request) throws ServletException {
		return Jtp.getReadAuthorizationKey( Jtp.getSiteNotNull(request).getNode(Jtp.getLong(request,"node")) );
	}

	public boolean authorize(String key,HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
		return Jtp.authorizeForRead(key,request,response);
	}

	protected void service(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException
	{
		User visitor = Jtp.getUser(request);

		Node node = Jtp.getSiteNotNull(request).getNode(Jtp.getLong(request, "node"));
		if (!Jtp.canBeRemovedBy(node,visitor)) {
			Jtp.login("Only administrators can proceed in this area.", request, response);
			return;
		} else if (node.getParent() == null) {
			// Parent was removed (e.g., user clicked on the back button and
			// tried to pin/unpin a node on a dead parent)
			response.sendError(HttpServletResponse.SC_GONE, "The parent of this node has been deleted. You cannot pin/unpin a node under a dead parent.");
			return;
		}
		String value = request.getParameter("value");
		boolean pin = "pin".equals(value);
		if (pin)
			Jtp.addPinnedChild(node.getParent(), node);
		else {
			Jtp.unpinChild(node.getParent(), node);
		}

		boolean isScript = "y".equals(request.getParameter("script"));
		if (isScript) {
			response.setHeader("Content-Type","application/x-javascript");
		} else {
			String what = node.getKind() == Node.Kind.APP? "forums" : "threads";
			Jtp.sendRedirect(request,response,"/catalog/ChangePinOrder.jtp?forum=" + node.getParent().getId() + "&what=" + what);
		}
	}
}