View Javadoc
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  					// userAdminWrapper.beginTransactionIfNeeded();
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  		// TODO Auto-generated method stub
89  
90  	}
91  
92  }