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