]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.swt/src/org/argeo/cms/swt/dialogs/ChangePasswordDialog.java
Move Jetty factory to the servlet bundle
[lgpl/argeo-commons.git] / org.argeo.cms.swt / src / org / argeo / cms / swt / dialogs / ChangePasswordDialog.java
1 package org.argeo.cms.swt.dialogs;
2
3 import java.security.PrivilegedAction;
4 import java.util.Arrays;
5
6 import org.argeo.api.cms.CmsView;
7 import org.argeo.api.cms.CmsLog;
8 import org.argeo.cms.CmsMsg;
9 import org.argeo.cms.CmsUserManager;
10 import org.argeo.cms.swt.CmsSwtUtils;
11 import org.eclipse.swt.SWT;
12 import org.eclipse.swt.widgets.Composite;
13 import org.eclipse.swt.widgets.Control;
14 import org.eclipse.swt.widgets.Label;
15 import org.eclipse.swt.widgets.Shell;
16 import org.eclipse.swt.widgets.Text;
17
18 /** Dialog to change a password. */
19 public class ChangePasswordDialog extends CmsMessageDialog {
20 private final static CmsLog log = CmsLog.getLog(ChangePasswordDialog.class);
21
22 private CmsUserManager cmsUserManager;
23 private CmsView cmsView;
24
25 private PrivilegedAction<Integer> doIt;
26
27 public ChangePasswordDialog(Shell parentShell, String message, int kind, CmsUserManager cmsUserManager) {
28 super(parentShell, message, kind);
29 this.cmsUserManager = cmsUserManager;
30 cmsView = CmsSwtUtils.getCmsView(parentShell);
31 }
32
33 @Override
34 protected Control createInputArea(Composite userSection) {
35 addFormLabel(userSection, CmsMsg.currentPassword.lead());
36 Text previousPassword = new Text(userSection, SWT.BORDER | SWT.PASSWORD);
37 previousPassword.setLayoutData(CmsSwtUtils.fillWidth());
38 addFormLabel(userSection, CmsMsg.newPassword.lead());
39 Text newPassword = new Text(userSection, SWT.BORDER | SWT.PASSWORD);
40 newPassword.setLayoutData(CmsSwtUtils.fillWidth());
41 addFormLabel(userSection, CmsMsg.repeatNewPassword.lead());
42 Text confirmPassword = new Text(userSection, SWT.BORDER | SWT.PASSWORD);
43 confirmPassword.setLayoutData(CmsSwtUtils.fillWidth());
44
45 doIt = () -> {
46 if (Arrays.equals(newPassword.getTextChars(), confirmPassword.getTextChars())) {
47 try {
48 cmsUserManager.changeOwnPassword(previousPassword.getTextChars(), newPassword.getTextChars());
49 return OK;
50 } catch (Exception e1) {
51 log.error("Could not change password", e1);
52 cancel();
53 CmsMessageDialog.openError(CmsMsg.invalidPassword.lead());
54 return CANCEL;
55 }
56 } else {
57 cancel();
58 CmsMessageDialog.openError(CmsMsg.repeatNewPassword.lead());
59 return CANCEL;
60 }
61 };
62
63 pack();
64 return previousPassword;
65 }
66
67 @Override
68 protected void okPressed() {
69 Integer returnCode = cmsView.doAs(doIt);
70 if (returnCode.equals(OK)) {
71 super.okPressed();
72 CmsMessageDialog.openInformation(CmsMsg.passwordChanged.lead());
73 }
74 }
75
76 private static Label addFormLabel(Composite parent, String label) {
77 Label lbl = new Label(parent, SWT.WRAP);
78 lbl.setText(label);
79 // CmsUiUtils.style(lbl, SuiteStyle.simpleLabel);
80 return lbl;
81 }
82
83 }