package edu.harvard.iq.dataverse.confirmemail;
import edu.harvard.iq.dataverse.DataverseSession;
import edu.harvard.iq.dataverse.actionlogging.ActionLogServiceBean;
import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser;
import edu.harvard.iq.dataverse.util.BundleUtil;
import edu.harvard.iq.dataverse.util.JsfHelper;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
/**
*
* @author bsilverstein
*/
@ViewScoped
@Named("ConfirmEmailPage")
public class ConfirmEmailPage implements java.io.Serializable {
private static final Logger logger = Logger.getLogger(ConfirmEmailPage.class.getCanonicalName());
@EJB
ConfirmEmailServiceBean confirmEmailService;
@Inject
DataverseSession session;
@EJB
ActionLogServiceBean actionLogSvc;
/**
* The unique string used to look up a user and continue the email
* confirmation.
*/
String token;
/**
* The user looked up by the token who will be confirming their email.
*/
AuthenticatedUser user;
/**
* The link that is emailed to the user to confirm the email that contains a
* token.
*/
String confirmEmailUrl;
ConfirmEmailData confirmEmailData;
public String init() {
if (token != null) {
ConfirmEmailExecResponse confirmEmailExecResponse = confirmEmailService.processToken(token);
confirmEmailData = confirmEmailExecResponse.getConfirmEmailData();
if (confirmEmailData != null) {
user = confirmEmailData.getAuthenticatedUser();
session.setUser(user);
JsfHelper.addSuccessMessage(BundleUtil.getStringFromBundle("confirmEmail.details.success"));
return "/dataverse.xhtml?faces-redirect=true";
}
}
JsfHelper.addErrorMessage(BundleUtil.getStringFromBundle("confirmEmail.details.failure"));
/**
* @todo It would be nice to send a 404 response but if we enable this
* then the user sees the contents of 404.xhtml rather than the contents
* of JsfHelper.addErrorMessage above!
*/
// try {
// FacesContext.getCurrentInstance().getExternalContext().responseSendError(HttpServletResponse.SC_NOT_FOUND, null);
// } catch (IOException ex) {
// }
return null;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public AuthenticatedUser getUser() {
return user;
}
public String getConfirmEmailUrl() {
return confirmEmailUrl;
}
public ConfirmEmailData getConfirmEmailData() {
return confirmEmailData;
}
public void setConfirmEmailData(ConfirmEmailData confirmEmailData) {
this.confirmEmailData = confirmEmailData;
}
public boolean isInvalidToken() {
if (confirmEmailData == null) {
return true;
} else {
return false;
}
}
public String getRedirectToAccountInfoTab() {
return "/dataverseuser.xhtml?selectTab=accountInfo&faces-redirect=true";
}
}