All Downloads are FREE. Search and download functionalities are using the official Maven repository.

base.jee.servlet.PasswordResetServlet Maven / Gradle / Ivy

/**
 * Creative commons Attribution-NonCommercial license.
 *
 * http://creativecommons.org/licenses/by-nc/2.5/au/deed.en_GB
 *
 * NO WARRANTY IS GIVEN OR IMPLIED, USE AT YOUR OWN RISK.
 */
package base.jee.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import base.StringQueryResult;
import org.stringtemplate.v4.ST;

import base.jee.Breadcrumb;
import base.jee.JeeBase;
import base.security.User;

/**
 */
public class PasswordResetServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	private JeeBase jee;

	public PasswordResetServlet(JeeBase jee) throws IOException {
		this.jee = jee;
		
		if(jee.getSettings().get("support_team.email", null) == null) {
			jee.getSettings().set("support_team.email", "[email protected]");
		}
		if(jee.getSettings().get("support_team.name", null) == null) {
			jee.getSettings().set("support_team.name", "Support Team");
		}
	}

	/**
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html; charset=UTF-8");
		response.setCharacterEncoding("UTF-8");

		String email = request.getParameter("email");
		String token = request.getParameter("token");
		String newPassword = request.getParameter("new_password");
		String newPassword2 = request.getParameter("new_password2");

		if(email == null) { email = ""; }
		if(token == null) { token = ""; }
		if(newPassword == null) { newPassword = ""; }
		if(newPassword2 == null) { newPassword2 = ""; }

		if(email.length() > 0) {
			ST page = jee.getPage(new User(""), "password_reset");
			page.remove("shortcuts"); // Don't need shortcuts on this page
			page.add("email", email);
			page.add("ldap_enabled", jee.getSettings().get("ldap.enabled", "true").equalsIgnoreCase("true"));
			page.add("breadcrumbs", new Breadcrumb("Reset your password", null));

			if(request.getParameter("fail") != null) {
				page.add("error", "error");
			}

			List t = jee.getAPI().requestPasswordResetEmail(jee.getTemplateManager(), email, BaseServlet.getIp(request));
			if(t == null || t.size() < 1) {
				page.add("error", "error");
			} else {
				page.add("info", "info");
			}

			response.getWriter().write(page.render());
		} else if(newPassword.length() > 0) {
			try {
				jee.getAPI().resetPasswordUsingToken(token, newPassword, newPassword2, BaseServlet.getIp(request));
				response.setHeader("Location", jee.getSettings().get("base.url", "") + "/signin?reset=reset");
				response.setStatus(302);
				return;

			} catch(IllegalArgumentException | IllegalStateException e) {
				ST page = jee.getPage(new User(""), "password_reset_complete");
				page.remove("shortcuts"); // Don't need shortcuts on this page
				page.add("error", e.getMessage());
				page.add("token", token);
				page.add("new_password", "");
				page.add("new_password2", "");
				page.add("ldap_enabled", jee.getSettings().get("ldap.enabled", "true").equalsIgnoreCase("true"));
				page.add("breadcrumbs", new Breadcrumb("Reset your password", null));
				response.getWriter().write(page.render());
			}

		} else if(token.length() > 0) {
			ST page = jee.getPage(new User(""), "password_reset_complete");
			page.remove("shortcuts"); // Don't need shortcuts on this page
			page.add("token", token);
			page.add("new_password", "");
			page.add("new_password2", "");
			page.add("ldap_enabled", jee.getSettings().get("ldap.enabled", "true").equalsIgnoreCase("true"));
			page.add("breadcrumbs", new Breadcrumb("Reset your password", null));
			response.getWriter().write(page.render());
		} else {
			ST page = jee.getPage(new User(""), "password_reset");
			page.remove("shortcuts"); // Don't need shortcuts on this page
			page.add("email", email);
			page.add("ldap_enabled", jee.getSettings().get("ldap.enabled", "true").equalsIgnoreCase("true"));
			page.add("breadcrumbs", new Breadcrumb("Reset your password", null));
			response.getWriter().write(page.render());
		}


	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy