/[H9]/trunk/tntnet/dynamic/adm_user_edit.ecpp
ViewVC logotype

Contents of /trunk/tntnet/dynamic/adm_user_edit.ecpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 101 - (show annotations) (download)
Thu Nov 29 13:59:21 2007 UTC (16 years, 5 months ago) by torben
File size: 4987 byte(s)
Finished administration module (?)

1 <%pre>
2 #include <tntdb/connect.h>
3 #include <tntdb/connection.h>
4 #include <tntdb/result.h>
5 #include <tntdb/row.h>
6
7 #include <sstream>
8
9 #include "common.h"
10 </%pre>
11
12 <%config>
13 dburl;
14 </%config>
15
16 <%session scope="global">
17 std::string userName;
18 bool isAdmin;
19 </%session>
20
21 <%args>
22 int id;
23 </%args>
24
25 <{
26 if (userName.size() == 0)
27 {
28 reply.setHeader("Location", "index");
29 return HTTP_MOVED_TEMPORARILY;
30 }
31 if (!isAdmin)
32 {
33 reply.setHeader("Location", "index");
34 return HTTP_MOVED_TEMPORARILY;
35 }
36 }>
37
38
39 <&header title="User Administration">
40 </&header>
41
42
43 <{
44
45 if (id == -1)
46 reply.out() << "<h2>New User</h2>\n";
47 else
48 reply.out() << "<h2>Modify User</h2>\n";
49
50 reply.out() << "<a href='adm_user_list'>";
51 reply.sout() << "<< back to user list";
52 reply.out() << "</a><br>";
53
54 tntdb::Connection conn = tntdb::connect(dburl);
55
56
57 std::string submit = qparam.param("submit");
58 if (submit == "1")
59 {
60 std::string form_username = trim(qparam.param("username"));
61 std::string form_realname = trim(qparam.param("realname"));
62 bool form_enabled = qparam.param("enabled") == "on";
63 bool form_useradmin= qparam.param("useradmin") == "on";
64 std::string form_password = trim(qparam.param("password"));
65
66
67 if (id == -1)
68 {
69 tntdb::Statement st = conn.prepare("INSERT INTO users (username,realname,password,enabled,useradmin) values (:v1, :v2, :v3, :v4, :v5)");
70 st.setString("v1", form_username).setString("v2", form_realname).setString("v3",form_password);
71 st.setBool("v4", form_enabled).setBool("v5", form_useradmin);
72 st.execute();
73
74
75 reply.setHeader("Location", "adm_user_list");
76 return HTTP_MOVED_TEMPORARILY;
77 }
78 else
79 {
80 tntdb::Statement st = conn.prepare("UPDATE users SET username=:v1, realname=:v2, enabled=:v3, useradmin=:v4 WHERE id=:v5");
81 st.setString("v1", form_username).setString("v2", form_realname).setBool("v3", form_enabled).setBool("v4", form_useradmin).setInt("v5", id);
82 st.execute();
83
84 if (form_password.size() > 0)
85 {
86 st = conn.prepare("UPDATE users SET password=:v1 WHERE id=:v2");
87 st.setString("v1", form_password).setInt("v2", id);
88 st.execute();
89 }
90
91 reply.out() << "<i>User updated</i><br>\n";
92 }
93
94 }
95
96
97 std::string username;
98 std::string realname;
99 bool enabled = true;
100 bool useradmin = false;
101
102 bool showForm = true;
103
104 if (id != -1)
105 {
106 std::stringstream query;
107 query << "SELECT username,realname,enabled,useradmin FROM users WHERE id = " << id;
108 tntdb::Result res = conn.select(query.str());
109
110 if (res.size() > 0)
111 {
112 username = res[0].getString(0);
113 realname = res[0].getString(1);
114 enabled = res[0].getBool(2);
115 useradmin = res[0].getBool(3);
116 }
117
118 else
119 {
120 reply.out() << "<p><i>Invalid user ID !</i></p>\n";
121 showForm = false;
122 }
123 }
124
125 if (showForm)
126 {
127 }>
128
129 <script type="text/javascript" language="JavaScript" src="/md5.js"></script>
130 <script type="text/javascript">
131 function trim(stringToTrim)
132 {
133 return stringToTrim.replace(/^\s+|\s+$/g,"");
134 }
135
136 function validateForm()
137 {
138 document.userform.username.value = trim(document.userform.username.value);
139 document.userform.password.value = trim(document.userform.password.value);
140
141 if (document.userform.username.value == "")
142 {
143 alert('Username may not be blank');
144 document.userform.username.focus();
145 return false;
146 }
147
148 if (document.userform.id.value == "-1" && document.userform.password.value == "")
149 {
150 alert('You must enter a password when creating a new user');
151 document.userform.password.focus();
152 return false;
153 }
154
155 if (document.userform.password.value != "" && document.userform.password.value != document.userform.password2.value)
156 {
157 alert('You must enter the exact same password twice');
158 document.userform.password.focus();
159 return false;
160 }
161
162 if (document.userform.password.value != "")
163 {
164 document.userform.password.value = hex_md5(document.userform.password.value);
165 document.userform.password2.value = "";
166 }
167
168 return true;
169 }
170
171 </script>
172
173 <form method="post" action="adm_user_edit" name="userform" onsubmit="return validateForm();">
174 <table border="0">
175 <tr>
176 <td>Username: </td>
177 <td><input type="text" name="username" size="40" value="<$ username $>"></td>
178 </tr>
179 <tr>
180 <td>Realname: </td>
181 <td><input type="text" name="realname" size="40" value="<$ realname $>"></td>
182 </tr>
183 </tr>
184 <td>Enabled:</td>
185 <td><input type="checkbox" name="enabled" <$ enabled ? "checked" : "" $>></td>
186 </tr>
187 <tr>
188 <td>Useradmin:</td>
189 <td><input type="checkbox" name="useradmin" <$ useradmin ? "checked" : ""$>></td>
190 </tr>
191 <tr>
192 <td>Password:</td>
193 <td><input type="password" name="password" size="40"></td>
194 </tr>
195 <tr>
196 <td>Re-type password:</td>
197 <td><input type="password" name="password2" size="40"></td>
198 </tr>
199 <tr>
200 <td>&nbsp;</td>
201 <td><input type="submit"><input type="reset"></td>
202 </tr>
203 </table>
204 <input type="hidden" name="id" value="<$ id $>">
205 <input type="hidden" name="submit" value="1">
206 </form>
207
208 <br>
209 <form method="post" action="adm_user_delete">
210 <input type="hidden" name="id" value="<$ id $>">
211 <input type="submit" value="Delete">
212 </form>
213
214 <{
215 }
216
217
218 }>
219
220 <&footer>
221 </&footer>

  ViewVC Help
Powered by ViewVC 1.1.20