1 package org.argeo.people.e4.parts;
2
3 import org.argeo.connect.UserAdminService;
4 import org.argeo.connect.ui.ConnectEditor;
5 import org.argeo.connect.ui.util.LazyCTabControl;
6 import org.argeo.eclipse.ui.Selected;
7 import org.argeo.people.ui.PeopleMsg;
8 import org.eclipse.swt.SWT;
9 import org.eclipse.swt.events.SelectionEvent;
10 import org.eclipse.swt.layout.GridData;
11 import org.eclipse.swt.layout.GridLayout;
12 import org.eclipse.swt.widgets.Button;
13 import org.eclipse.swt.widgets.Composite;
14 import org.eclipse.swt.widgets.Label;
15 import org.eclipse.swt.widgets.Text;
16 import org.osgi.service.useradmin.User;
17
18 public class PersonSecurityCTab extends LazyCTabControl {
19 private static final long serialVersionUID = 4873664608113834820L;
20
21 private final ConnectEditor editor;
22 private UserAdminService userAdminService;
23
24 private Text password1;
25 private Text password2;
26
27 private String dn;
28
29 public PersonSecurityCTab(Composite parent, int style, ConnectEditor editor, UserAdminService userAdminService,
30 String dn) {
31 super(parent, style);
32 this.editor = editor;
33 this.userAdminService = userAdminService;
34 this.dn = dn;
35 }
36
37 @Override
38 public void createPartControl(Composite parent) {
39 parent.setLayout(new GridLayout(3, false));
40
41 password1 = new Text(parent, SWT.PASSWORD | SWT.BORDER);
42 password2 = new Text(parent, SWT.PASSWORD | SWT.BORDER);
43 Button lbl = new Button(parent, SWT.PUSH);
44 lbl.setText(PeopleMsg.resetPassword.lead());
45 Label messageLbl = new Label(parent, SWT.NONE);
46 messageLbl.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 3, 1));
47 lbl.addSelectionListener(new Selected() {
48 private static final long serialVersionUID = -3679890149990208064L;
49
50 @Override
51 public void widgetSelected(SelectionEvent e) {
52 String msg = null;
53 if (password1.getText().equals(""))
54 msg = "Password cannot be empty";
55 else if (password1.getText().equals(password2.getText())) {
56 char[] newPassword = password1.getText().toCharArray();
57
58 User user = userAdminService.getUser(dn);
59 try {
60 userAdminService.getUserTransaction().begin();
61 user.getCredentials().put(null, newPassword);
62 userAdminService.getUserTransaction().commit();
63 } catch (Exception e1) {
64 try {
65 userAdminService.getUserTransaction().rollback();
66 } catch (Exception e2) {
67 e2.printStackTrace();
68 }
69 } finally {
70 password1.setText("");
71 password2.setText("");
72 }
73 } else {
74 msg = "Passwords are not equals";
75 }
76 if (msg != null)
77 messageLbl.setText(msg);
78 else
79 messageLbl.setText("Password changed");
80 }
81 });
82
83 parent.layout(true, true);
84 }
85
86 @Override
87 public void refreshPartControl() {
88
89
90 }
91
92 }