You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

552 lines
16 KiB

/*
* RecuperarPassword.java
*
* Created on September 19, 2007, 9:57 AM
* Copyright lluis
*/
package analiseacidentestrabalho;
import beans.Utilizador;
import com.evolute.utils.error.ErrorLogger;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.rave.web.ui.component.Body;
import com.sun.rave.web.ui.component.Button;
import com.sun.rave.web.ui.component.Form;
import com.sun.rave.web.ui.component.Head;
import com.sun.rave.web.ui.component.Html;
import com.sun.rave.web.ui.component.Link;
import com.sun.rave.web.ui.component.Page;
import com.sun.rave.web.ui.component.PanelGroup;
import com.sun.rave.web.ui.component.StaticText;
import com.sun.rave.web.ui.component.TextField;
import db.providers.UtilizadoresDataProvider;
import global.Global;
import java.util.Date;
import java.util.Properties;
import javax.faces.FacesException;
import javax.faces.component.html.HtmlPanelGrid;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import utils.Utils;
/**
* <p>Page bean that corresponds to a similarly named JSP page. This
* class contains component definitions (and initialization code) for
* all components that you have defined on this page, as well as
* lifecycle methods and event handlers where you may add behavior
* to respond to incoming events.</p>
*/
public class RecuperarPassword extends AbstractPageBean {
// <editor-fold defaultstate="collapsed" desc="Managed Component Definition">
private int __placeholder;
/**
* <p>Automatically managed component initialization. <strong>WARNING:</strong>
* This method is automatically generated, so any user-specified code inserted
* here is subject to being replaced.</p>
*/
private void _init() throws Exception {
}
private Page page1 = new Page();
public Page getPage1() {
return page1;
}
public void setPage1(Page p) {
this.page1 = p;
}
private Html html1 = new Html();
public Html getHtml1() {
return html1;
}
public void setHtml1(Html h) {
this.html1 = h;
}
private Head head1 = new Head();
public Head getHead1() {
return head1;
}
public void setHead1(Head h) {
this.head1 = h;
}
private Link link1 = new Link();
public Link getLink1() {
return link1;
}
public void setLink1(Link l) {
this.link1 = l;
}
private Body body1 = new Body();
public Body getBody1() {
return body1;
}
public void setBody1(Body b) {
this.body1 = b;
}
private Form form1 = new Form();
public Form getForm1() {
return form1;
}
public void setForm1(Form f) {
this.form1 = f;
}
private HtmlPanelGrid gridPanel1 = new HtmlPanelGrid();
public HtmlPanelGrid getGridPanel1() {
return gridPanel1;
}
public void setGridPanel1(HtmlPanelGrid hpg) {
this.gridPanel1 = hpg;
}
private HtmlPanelGrid gridPanel2 = new HtmlPanelGrid();
public HtmlPanelGrid getGridPanel2() {
return gridPanel2;
}
public void setGridPanel2(HtmlPanelGrid hpg) {
this.gridPanel2 = hpg;
}
private HtmlPanelGrid gridPanel3 = new HtmlPanelGrid();
public HtmlPanelGrid getGridPanel3() {
return gridPanel3;
}
public void setGridPanel3(HtmlPanelGrid hpg) {
this.gridPanel3 = hpg;
}
private StaticText txtMsg = new StaticText();
public StaticText getTxtMsg() {
return txtMsg;
}
public void setTxtMsg(StaticText st) {
this.txtMsg = st;
}
private StaticText staticText3 = new StaticText();
public StaticText getStaticText3() {
return staticText3;
}
public void setStaticText3(StaticText st) {
this.staticText3 = st;
}
private HtmlPanelGrid gridPanel4 = new HtmlPanelGrid();
public HtmlPanelGrid getGridPanel4() {
return gridPanel4;
}
public void setGridPanel4(HtmlPanelGrid hpg) {
this.gridPanel4 = hpg;
}
private StaticText staticText1 = new StaticText();
public StaticText getStaticText1() {
return staticText1;
}
public void setStaticText1(StaticText st) {
this.staticText1 = st;
}
private TextField txtUtilizador = new TextField();
public TextField getTxtUtilizador() {
return txtUtilizador;
}
public void setTxtUtilizador(TextField tf) {
this.txtUtilizador = tf;
}
private StaticText staticText2 = new StaticText();
public StaticText getStaticText2() {
return staticText2;
}
public void setStaticText2(StaticText st) {
this.staticText2 = st;
}
private TextField txtEmail = new TextField();
public TextField getTxtEmail() {
return txtEmail;
}
public void setTxtEmail(TextField tf) {
this.txtEmail = tf;
}
private HtmlPanelGrid gridPanel5 = new HtmlPanelGrid();
public HtmlPanelGrid getGridPanel5() {
return gridPanel5;
}
public void setGridPanel5(HtmlPanelGrid hpg) {
this.gridPanel5 = hpg;
}
private PanelGroup groupPanel1 = new PanelGroup();
public PanelGroup getGroupPanel1() {
return groupPanel1;
}
public void setGroupPanel1(PanelGroup pg) {
this.groupPanel1 = pg;
}
private Button butCancelar = new Button();
public Button getButCancelar() {
return butCancelar;
}
public void setButCancelar(Button b) {
this.butCancelar = b;
}
private Button butOk = new Button();
public Button getButOk() {
return butOk;
}
public void setButOk(Button b) {
this.butOk = b;
}
// </editor-fold>
/**
* <p>Construct a new Page bean instance.</p>
*/
public RecuperarPassword() {
}
/**
* <p>Callback method that is called whenever a page is navigated to,
* either directly via a URL, or indirectly via page navigation.
* Customize this method to acquire resources that will be needed
* for event handlers and lifecycle methods, whether or not this
* page is performing post back processing.</p>
*
* <p>Note that, if the current request is a postback, the property
* values of the components do <strong>not</strong> represent any
* values submitted with this request. Instead, they represent the
* property values that were saved for this view when it was rendered.</p>
*/
public void init() {
// Perform initializations inherited from our superclass
super.init();
// Perform application initialization that must complete
// *before* managed components are initialized
// TODO - add your own initialiation code here
// <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
// Initialize automatically managed components
// *Note* - this logic should NOT be modified
try {
_init();
} catch (Exception e) {
log("RecuperarPassword Initialization Failure", e);
throw e instanceof FacesException ? (FacesException) e: new FacesException(e);
}
// </editor-fold>
// Perform application initialization that must complete
// *after* managed components are initialized
// TODO - add your own initialization code here
// if (!getSessionBean1().isLoggedIn()) {
// try {
// getExternalContext().redirect("Login.jsp");
// } catch(Exception e) {
// // . . . handle exception . . .
// }
// }
}
/**
* <p>Callback method that is called after the component tree has been
* restored, but before any event processing takes place. This method
* will <strong>only</strong> be called on a postback request that
* is processing a form submit. Customize this method to allocate
* resources that will be required in your event handlers.</p>
*/
@Override
public void preprocess()
{
}
/**
* <p>Callback method that is called just before rendering takes place.
* This method will <strong>only</strong> be called for the page that
* will actually be rendered (and not, for example, on a page that
* handled a postback and then navigated to a different page). Customize
* this method to allocate resources that will be required for rendering
* this page.</p>
*/
public void prerender() {
txtMsg.setText(getSessionBean1().getMsg());
getSessionBean1().setMsg("");
}
/**
* <p>Callback method that is called after rendering is completed for
* this request, if <code>init()</code> was called (regardless of whether
* or not this was the page that was actually rendered). Customize this
* method to release resources acquired in the <code>init()</code>,
* <code>preprocess()</code>, or <code>prerender()</code> methods (or
* acquired during execution of an event handler).</p>
*/
public void destroy() {
}
/**
* <p>Return a reference to the scoped data bean.</p>
*/
protected RequestBean1 getRequestBean1() {
return (RequestBean1)getBean("RequestBean1");
}
/**
* <p>Return a reference to the scoped data bean.</p>
*/
protected SessionBean1 getSessionBean1() {
return (SessionBean1)getBean("SessionBean1");
}
/**
* <p>Return a reference to the scoped data bean.</p>
*/
protected ApplicationBean1 getApplicationBean1() {
return (ApplicationBean1)getBean("ApplicationBean1");
}
public String butLogin_action() {
// TODO: Process the button click action. Return value is a navigation
// case name where null will return to the same page.
return null;
}
public String butCancelar_action() {
// TODO: Process the button click action. Return value is a navigation
// case name where null will return to the same page.
return "login";
}
public String butOk_action() {
// TODO: Process the button click action. Return value is a navigation
// case name where null will return to the same page.
if(fieldsValidationOk())
{
try
{
UtilizadoresDataProvider udp = UtilizadoresDataProvider.getInstance();
String utilizador = (String) txtUtilizador.getText();
Utilizador u = udp.getUtilizador(utilizador);
String email = (String) txtEmail.getText();
if(u.getEmail().equals(email))
{
//send mail :
try
{
sendEmail(u.getEmail(), u.getLogin(), u.getPassword(), Global.ENDERECO_ENVIO);
getSessionBean1().setMsg("A sua password foi enviada para o seu email");
return "login";
}
catch(Exception ex)
{
getSessionBean1().setMsg("Erro no envio da password !");
ErrorLogger.logException( ex );
}
}
else
{
getSessionBean1().setMsg("Os dados n&atilde;o coincidem com os registos !");
}
}
catch(Exception ex)
{
getSessionBean1().setMsg("Utilizador inv&aacute;lido !");
}
}
return null;
}
private final String SMTP_HOST = "smtp.siprp.pt";
private final int SMTP_PORT = 587;
// private final String mail_username = "servico@siprp.pt";
private final String mail_username = Global.ENDERECO_ENVIO;
private final String mail_password = "GR33%df5";
private void sendEmail(String emailTo, String login, String password, String admin_email) throws Exception
{
Properties props = new Properties();
//props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.host", SMTP_HOST );
props.put("mail.from", admin_email );
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.user", mail_username );
props.put("mail.smtp.password", mail_password );
Session session1 = Session.getInstance(props);
Message msg = new MimeMessage(session1);
// try
// {
msg.setFrom(new InternetAddress(admin_email));
InternetAddress[] address = {new InternetAddress(emailTo)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject("Envio da password");
msg.setSentDate(new Date());
Multipart multipart = new MimeMultipart();
BodyPart msgBodyPart = new MimeBodyPart();
String html;
html="<html><head> <meta content='text/html;charset=ISO-8859-1' http-equiv='Content-Type'></head>";
html+="<body bgcolor='#ffffff' text='#000000'>";
html+="<h3>Envio da password de " + login + " :</h3>";
html+="<p>Password: " + password + "</p>";
html+="<body></html>";
msgBodyPart.setContent(html, "text/html");
multipart.addBodyPart(msgBodyPart);
msg.setContent(multipart);
// Transport.send(msg);
Transport t;
t = session1.getTransport( "smtp" );
t.connect( SMTP_HOST, SMTP_PORT, mail_username, mail_password );
t.sendMessage( msg, msg.getAllRecipients() );
t.close();
System.out.println("Email Enviado !!!! " + emailTo + ", " + login);
// }
// catch (Exception ex)
// {
// System.out.println("MAIL ERROR : " + ex.getMessage());
// ErrorLogger.logException( ex );
// }
}
private boolean fieldsValidationOk()
{
if(txtUtilizador.getText() != null)
{
String utilizador = (String) txtUtilizador.getText();
if(utilizador.trim().length() == 0)
{
getSessionBean1().setMsg("Falta utilizador !");
return false;
}
}
else
{
getSessionBean1().setMsg("Falta utilizador !");
return false;
}
if(txtEmail.getText() != null)
{
String email = (String) txtEmail.getText();
if(email.trim().length() == 0)
{
getSessionBean1().setMsg("Falta email !");
return false;
}
else
{
if(! Utils.isValidEmail(email))
{
getSessionBean1().setMsg("Email inv&aacute;lido !");
return false;
}
}
}
else
{
getSessionBean1().setMsg("Falta email !");
return false;
}
return true;
}
// private boolean isValidEmail(String email){
// boolean res = true;
//
// int indexOfAtChar=email.indexOf("@");
//
// if(indexOfAtChar > 0)
// {
// int indexOfDotChar =
// email.indexOf(".",indexOfAtChar);
// if(indexOfDotChar > 0)
// {
// res = true;
// }
// else
// {
// res = false;
// }
// }
// else{
// res = false;
// }
// return res;
// }
}