1 package org.musicontroller.gui.admin;
2
3 import java.util.List;
4
5 import org.apache.hivemind.util.PropertyUtils;
6 import org.apache.tapestry.IPage;
7 import org.apache.tapestry.IRequestCycle;
8 import org.apache.tapestry.form.IPropertySelectionModel;
9 import org.apache.tapestry.html.BasePage;
10 import org.apache.tapestry.valid.ValidationDelegate;
11 import org.musicontroller.security.IUser;
12 import org.musicontroller.security.Role;
13 import org.musicontroller.service.UserService;
14
15
16
17
18
19
20 public abstract class Adduser extends BasePage {
21
22 public abstract UserService getUserService();
23
24 public abstract String getFeedback();
25 public abstract void setFeedback(String message);
26
27 public abstract IUser getUser();
28 public abstract void setUser(IUser user);
29
30 public abstract String getPass1();
31 public abstract void setPass1(String pass1);
32 public abstract String getPass2();
33 public abstract void setPass2(String pass2);
34
35 public IPage applyForAccount(IRequestCycle cycle) {
36 ValidationDelegate delegate = (ValidationDelegate) getBeans().getBean("addUserDelegate");
37 if (delegate.getHasErrors()) {
38 return null;
39 }
40 if (getUser().getId()==-1L) {
41 return saveNewUser(cycle);
42 } else {
43 return editUser(cycle);
44 }
45 }
46
47 private IPage saveNewUser(IRequestCycle cycle) {
48 IPage resultpage = null;
49
50 String loginname = getUser().getLoginname();
51 String pass1 = getPass1();
52
53 setFeedback("");
54
55 getUser().setUnencryptedPassword(pass1);
56 try {
57 getUserService().addUser(getUser());
58 resultpage = cycle.getPage("admin/Usermanagement");
59 PropertyUtils.write(resultpage, "feedback", "User with loginname '"+loginname+"' was created successfully.");
60 } catch (Exception e) {
61 setFeedback(e.getMessage());
62 }
63 return resultpage;
64 }
65
66 private IPage editUser(IRequestCycle cycle) {
67 IPage resultpage = null;
68
69 IUser originalUser = getUserService().getUserById(getUser().getId());
70 setFeedback("");
71
72 String name = getUser().getName();
73 String loginname = getUser().getLoginname();
74 String pass1 = getPass1();
75 String pass2 = getPass2();
76
77 if (pass1 != null) {
78 if (!pass1.equals(pass2)) {
79 setFeedback("The entered passwords don't match.");
80 } else {
81 originalUser.setUnencryptedPassword(pass1);
82 }
83 }
84 originalUser.setUnencryptedPassword(pass1);
85 originalUser.setName(name);
86 originalUser.setLoginname(loginname);
87 originalUser.setExpiryDate(getUser().getExpiryDate());
88
89 originalUser.setRolesList(getUser().getRolesList());
90
91 try {
92 getUserService().saveUser(originalUser);
93 resultpage = cycle.getPage("admin/Usermanagement");
94 PropertyUtils.write(resultpage, "feedback", "User with loginname '"+loginname+"' was updated successfully.");
95 } catch (Exception e) {
96 setFeedback(e.getMessage());
97 }
98 return resultpage;
99 }
100
101 public IPropertySelectionModel getRolesmodel() {
102 List<Role> allRoles = getUserService().listRoles();
103 return new RoleSelectionModel(allRoles);
104 }
105
106
107
108 }
109