]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/dialogs/ChangePasswordDialog.java
90d7320b004f7b9e54902f3e496f434b783e3488
[lgpl/argeo-commons.git] / security / plugins / org.argeo.security.ui / src / main / java / org / argeo / security / ui / dialogs / ChangePasswordDialog.java
1 package org.argeo.security.ui.dialogs;
2
3 import org.argeo.ArgeoException;
4 import org.eclipse.jface.dialogs.IMessageProvider;
5 import org.eclipse.jface.dialogs.TitleAreaDialog;
6 import org.eclipse.swt.SWT;
7 import org.eclipse.swt.graphics.Point;
8 import org.eclipse.swt.layout.GridData;
9 import org.eclipse.swt.layout.GridLayout;
10 import org.eclipse.swt.widgets.Composite;
11 import org.eclipse.swt.widgets.Control;
12 import org.eclipse.swt.widgets.Label;
13 import org.eclipse.swt.widgets.Shell;
14 import org.eclipse.swt.widgets.Text;
15 import org.springframework.security.userdetails.UserDetailsManager;
16
17 /** Dialog to change the current user password */
18 public class ChangePasswordDialog extends TitleAreaDialog {
19 private Text currentPassword, newPassword1, newPassword2;
20 private UserDetailsManager userDetailsManager;
21
22 public ChangePasswordDialog(Shell parentShell,
23 UserDetailsManager securityService) {
24 super(parentShell);
25 this.userDetailsManager = securityService;
26 }
27
28 protected Point getInitialSize() {
29 return new Point(300, 250);
30 }
31
32 protected Control createDialogArea(Composite parent) {
33 Composite dialogarea = (Composite) super.createDialogArea(parent);
34 dialogarea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
35 Composite composite = new Composite(dialogarea, SWT.NONE);
36 composite.setLayout(new GridLayout(2, false));
37 composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
38 currentPassword = createLP(composite, "Current password");
39 newPassword1 = createLP(composite, "New password");
40 newPassword2 = createLP(composite, "Repeat new password");
41
42 setMessage("Change password", IMessageProvider.INFORMATION);
43 parent.pack();
44 return composite;
45 }
46
47 @Override
48 protected void okPressed() {
49 if (!newPassword1.getText().equals(newPassword2.getText()))
50 throw new ArgeoException("Passwords are different");
51 userDetailsManager.changePassword(currentPassword.getText(),
52 newPassword1.getText());
53 close();
54 }
55
56 /** Creates label and password. */
57 protected Text createLP(Composite parent, String label) {
58 new Label(parent, SWT.NONE).setText(label);
59 Text text = new Text(parent, SWT.SINGLE | SWT.LEAD | SWT.PASSWORD
60 | SWT.BORDER);
61 text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
62 return text;
63 }
64
65 protected void configureShell(Shell shell) {
66 super.configureShell(shell);
67 shell.setText("Change password");
68 }
69
70 }