/* * 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; /** *
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.
*/ public class RecuperarPassword extends AbstractPageBean { //Automatically managed component initialization. WARNING: * This method is automatically generated, so any user-specified code inserted * here is subject to being replaced.
*/ 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; } //Construct a new Page bean instance.
*/ public RecuperarPassword() { } /** *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.
* *Note that, if the current request is a postback, the property * values of the components do not represent any * values submitted with this request. Instead, they represent the * property values that were saved for this view when it was rendered.
*/ 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 //Callback method that is called after the component tree has been * restored, but before any event processing takes place. This method * will only 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.
*/ @Override public void preprocess() { } /** *Callback method that is called just before rendering takes place. * This method will only 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.
*/ public void prerender() { txtMsg.setText(getSessionBean1().getMsg()); getSessionBean1().setMsg(""); } /** *Callback method that is called after rendering is completed for
* this request, if init() was called (regardless of whether
* or not this was the page that was actually rendered). Customize this
* method to release resources acquired in the init(),
* preprocess(), or prerender() methods (or
* acquired during execution of an event handler).
Return a reference to the scoped data bean.
*/ protected RequestBean1 getRequestBean1() { return (RequestBean1)getBean("RequestBean1"); } /** *Return a reference to the scoped data bean.
*/ protected SessionBean1 getSessionBean1() { return (SessionBean1)getBean("SessionBean1"); } /** *Return a reference to the scoped data bean.
*/ 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ão coincidem com os registos !"); } } catch(Exception ex) { getSessionBean1().setMsg("Utilizador invá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+=""; html+="Password: " + password + "
"; 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á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; // } }