001
014
015 package com.liferay.portal.action;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.kernel.servlet.SessionErrors;
020 import com.liferay.portal.kernel.util.Constants;
021 import com.liferay.portal.kernel.util.ParamUtil;
022 import com.liferay.portal.kernel.util.Validator;
023 import com.liferay.portal.model.User;
024 import com.liferay.portal.security.auth.AuthTokenUtil;
025 import com.liferay.portal.service.ServiceContext;
026 import com.liferay.portal.service.ServiceContextFactory;
027 import com.liferay.portal.service.UserLocalServiceUtil;
028 import com.liferay.portal.struts.ActionConstants;
029 import com.liferay.portal.theme.ThemeDisplay;
030 import com.liferay.portal.util.PortalUtil;
031 import com.liferay.portal.util.PortletKeys;
032 import com.liferay.portal.util.WebKeys;
033 import com.liferay.portlet.PortletURLImpl;
034
035 import javax.portlet.PortletRequest;
036 import javax.portlet.PortletURL;
037
038 import javax.servlet.http.HttpServletRequest;
039 import javax.servlet.http.HttpServletResponse;
040
041 import org.apache.struts.action.Action;
042 import org.apache.struts.action.ActionForm;
043 import org.apache.struts.action.ActionForward;
044 import org.apache.struts.action.ActionMapping;
045
046
049 public class VerifyEmailAddressAction extends Action {
050
051 @Override
052 public ActionForward execute(
053 ActionMapping mapping, ActionForm form, HttpServletRequest request,
054 HttpServletResponse response)
055 throws Exception {
056
057 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
058 WebKeys.THEME_DISPLAY);
059
060 String cmd = ParamUtil.getString(request, Constants.CMD);
061
062 if (Validator.isNull(cmd)) {
063 return mapping.findForward("portal.verify_email_address");
064 }
065
066 if (themeDisplay.isSignedIn() && cmd.equals(Constants.SEND)) {
067 sendEmailAddressVerification(request, response, themeDisplay);
068
069 return mapping.findForward("portal.verify_email_address");
070 }
071
072 try {
073 verifyEmailAddress(request, response, themeDisplay);
074
075 if (!themeDisplay.isSignedIn()) {
076 PortletURL portletURL = new PortletURLImpl(
077 request, PortletKeys.LOGIN, themeDisplay.getPlid(),
078 PortletRequest.RENDER_PHASE);
079
080 response.sendRedirect(portletURL.toString());
081
082 return null;
083 }
084 else {
085 return mapping.findForward(ActionConstants.COMMON_REFERER);
086 }
087 }
088 catch (Exception e) {
089 if (e instanceof PortalException ||
090 e instanceof SystemException) {
091
092 SessionErrors.add(request, e.getClass().getName());
093
094 return mapping.findForward("portal.verify_email_address");
095 }
096 else {
097 PortalUtil.sendError(e, request, response);
098
099 return null;
100 }
101 }
102 }
103
104 protected void sendEmailAddressVerification(
105 HttpServletRequest request, HttpServletResponse response,
106 ThemeDisplay themeDisplay)
107 throws Exception {
108
109 User user = themeDisplay.getUser();
110
111 ServiceContext serviceContext = ServiceContextFactory.getInstance(
112 request);
113
114 UserLocalServiceUtil.sendEmailAddressVerification(
115 user, user.getEmailAddress(), serviceContext);
116 }
117
118 protected void verifyEmailAddress(
119 HttpServletRequest request, HttpServletResponse response,
120 ThemeDisplay themeDisplay)
121 throws Exception {
122
123 AuthTokenUtil.check(request);
124
125 String ticketKey = ParamUtil.getString(request, "ticketKey");
126
127 UserLocalServiceUtil.verifyEmailAddress(ticketKey);
128 }
129
130 }