/******************************************************************************* * Copyright (c) 2013 hangum. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * * Contributors: * hangum - initial API and implementation ******************************************************************************/ package com.hangum.tadpole.login.core.dialog; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import com.hangum.tadpole.commons.google.analytics.AnalyticCaller; import com.hangum.tadpole.commons.libs.core.mails.SendEmails; import com.hangum.tadpole.commons.libs.core.mails.dto.EmailDTO; import com.hangum.tadpole.commons.libs.core.mails.template.TemporaryPasswordMailBodyTemplate; import com.hangum.tadpole.commons.libs.core.message.CommonMessages; import com.hangum.tadpole.commons.util.GlobalImageUtils; import com.hangum.tadpole.commons.util.Utils; import com.hangum.tadpole.engine.query.dao.system.UserDAO; import com.hangum.tadpole.engine.query.sql.TadpoleSystem_UserQuery; import com.hangum.tadpole.login.core.Messages; /** * find password * * @author hangum * */ public class FindPasswordDialog extends Dialog { private static final Logger logger = Logger.getLogger(FindPasswordDialog.class); private String strEmail; private Text textEmail; public FindPasswordDialog(Shell parentShell, String strEmail) { super(parentShell); this.strEmail = strEmail; } @Override public void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setText(Messages.get().ResetPassword); newShell.setImage(GlobalImageUtils.getTadpoleIcon()); } @Override protected Control createDialogArea(Composite parent) { getShell().setText(Messages.get().FindPasswordDialog_0); Composite container = (Composite) super.createDialogArea(parent); GridLayout gridLayout = (GridLayout) container.getLayout(); gridLayout.numColumns = 2; gridLayout.verticalSpacing = 5; gridLayout.horizontalSpacing = 5; gridLayout.marginHeight = 5; gridLayout.marginWidth = 5; Label lblEmail = new Label(container, SWT.NONE); lblEmail.setText(CommonMessages.get().Email); textEmail = new Text(container, SWT.BORDER); textEmail.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); textEmail.setText(strEmail); textEmail.setFocus(); // google analytic AnalyticCaller.track(this.getClass().getName()); return container; } private boolean checkValidation() { return !"".equals(textEmail.getText().trim()); //$NON-NLS-1$ //$NON-NLS-2$ } @Override protected void okPressed() { String strEmail = StringUtils.trimToEmpty(textEmail.getText()); if(logger.isInfoEnabled()) logger.info("Find password dialog" + strEmail); if (!checkValidation()) { MessageDialog.openWarning(getShell(), CommonMessages.get().Confirm, Messages.get().FindPasswordDialog_6); textEmail.setFocus(); return; } UserDAO userDao = new UserDAO(); userDao.setEmail(strEmail); String strTmpPassword = Utils.getUniqueDigit(12); userDao.setPasswd(strTmpPassword); try { TadpoleSystem_UserQuery.updateUserPasswordWithID(userDao); sendEmailAccessKey(strEmail, strTmpPassword); MessageDialog.openInformation(getShell(), CommonMessages.get().Confirm, Messages.get().SendMsg); } catch (Exception e) { logger.error("password initialize and send email ", e); MessageDialog.openError(getShell(),CommonMessages.get().Error, String.format(Messages.get().SendMsgErr, e.getMessage())); } super.okPressed(); } /** * Create contents of the button bar. * @param parent */ @Override protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, Messages.get().SendNewPassword, true); createButton(parent, IDialogConstants.CANCEL_ID, CommonMessages.get().Close, false); } /** * send password * * @param email * @param strConfirmKey */ private void sendEmailAccessKey(String email, String strConfirmKey) throws Exception { // manager 에게 메일을 보낸다. EmailDTO emailDao = new EmailDTO(); emailDao.setSubject(Messages.get().TemporayPassword); //$NON-NLS-1$ // // 그룹, 사용자, 권한. // TemporaryPasswordMailBodyTemplate mailContent = new TemporaryPasswordMailBodyTemplate(); String strContent = mailContent.getContent(email, strConfirmKey); emailDao.setContent(strContent); emailDao.setTo(email); SendEmails.getInstance().sendMail(emailDao); } }