1 package org
.argeo
.cms
.swt
.dialogs
;
3 import java
.security
.PrivilegedAction
;
4 import java
.util
.Arrays
;
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
;
18 /** Dialog to change a password. */
19 public class ChangePasswordDialog
extends CmsMessageDialog
{
20 private final static CmsLog log
= CmsLog
.getLog(ChangePasswordDialog
.class);
22 private CmsUserManager cmsUserManager
;
23 private CmsView cmsView
;
25 private PrivilegedAction
<Integer
> doIt
;
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
);
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());
46 if (Arrays
.equals(newPassword
.getTextChars(), confirmPassword
.getTextChars())) {
48 cmsUserManager
.changeOwnPassword(previousPassword
.getTextChars(), newPassword
.getTextChars());
50 } catch (Exception e1
) {
51 log
.error("Could not change password", e1
);
53 CmsMessageDialog
.openError(CmsMsg
.invalidPassword
.lead());
58 CmsMessageDialog
.openError(CmsMsg
.repeatNewPassword
.lead());
64 return previousPassword
;
68 protected void okPressed() {
69 Integer returnCode
= cmsView
.doAs(doIt
);
70 if (returnCode
.equals(OK
)) {
72 CmsMessageDialog
.openInformation(CmsMsg
.passwordChanged
.lead());
76 private static Label
addFormLabel(Composite parent
, String label
) {
77 Label lbl
= new Label(parent
, SWT
.WRAP
);
79 // CmsUiUtils.style(lbl, SuiteStyle.simpleLabel);