Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.adminSite.prefs.addOrEditAdministrator
on addOrEditAdministrator () { <<Changes <<9/30/03; 12:35:15 PM by JES <<Store passwords in the admin membership group as binary values. <<6/27/02; 12:06:52 AM by JES <<Created. local (pta = html.getPageTableAddress ()); local (htmltext = ""); on add (s) { htmltext = htmltext + ("\r\n" + s);}; on stringPref (name, prompt, type="text", size=50, maxlength=100, default="") { return ("<tr><td align=\"left\">" + prompt + ":</td><td valign=\"top\" width=\"70%\"><input type=\"" + type + "\" name=\"" + name + "\" size=\"" + size + "\" maxlength=\"" + maxlength + "\" value=\"" + default + "\"></td></tr>")}; on checkPref (name, prompt, flChecked=false) { local (checkedtext = ""); if flChecked { checkedText = " checked"}; return ("<tr><td colspan=\"2\"><input type=\"checkbox\" name=\"" + name + "\" value=\"xxx\"" + checkedtext + " /> " + prompt + "</td></tr>")}; local (name = "", email = "", password="", flWebEdit = false); local (errorMessage = "", flError = false); if pta^.method == "POST" { local (adrargs = @pta^.postArgs); if defined (adrargs^.addAdministrator) or defined (adrargs^.editAdministrator) { name = adrargs^.name; email = adrargs^.email; flWebEdit = defined (adrargs^.enableWebEdit); password = adrargs^.password; local (repeatPassword = adrargs^.repeatPassword); local (adrmember); if sizeOf (password) < 4 { errorMessage = "Can't create admin user, \"" + name + "\" because the password is not at least four characters long."; flError = true}; if not flError { //compare passwords if password != repeatPassword { errorMessage = "Can't create admin user, \"" + name + "\" because the password and repeat password don't match."; flError = true}}; if not flError { //get adrmember, check to see if it already exists adrmember = mainResponder.members.getMemberTable ("admin", email); if not defined (adrargs^.editAdministrator) { if defined (adrmember^) { errorMessage = "Can't create admin user, \"" + name + "\" because there is already an admin user with same email address."; flError = true}}}; if not flError { //create member, possibly create WebEdit member if not defined (adrmember^) { new (tableType, adrmember)}; adrmember^.password = binary (password); new (tableType, @adrmember^.personalInfo); adrmember^.personalInfo.name = name; if flWebEdit { //create the webedit user people.newService ("Custody"); people.newService ("WebEdit"); people.newUser (name, password, email); people.attachServiceToUser (name, "Custody"); people.attachServiceToUser (name, "WebEdit")}; if defined (user.people.users.[name]) { user.people.users.[name].password = binary (password); if not flWebEdit { if people.serviceIsAttachedToUser ("Custody", name) { user.people.users.[name].services.Custody.enabled = false}; if people.serviceIsAttachedToUser ("WebEdit", name) { user.people.users.[name].services.WebEdit.enabled = false}}}}}; bundle { //redirect after post local (args = pta^.searchArgTable); try {delete (@args.adminUser)}; mainResponder.redirect ("http://" + pta^.host + pta^.uri + "?" + webserver.encodeArgs (@args)); return ("")}} else { if defined (pta^.searchArgTable.adminUser) { email = pta^.searchArgTable.adminUser; local (adrmember = mainResponder.members.getMemberTable ("admin", email)); password = string (adrmember^.password); try {name = adrmember^.personalInfo.name}}; if name != "" { if defined (user.people.users.[name]) { flWebEdit = people.serviceIsAttachedToUser ("WebEdit", name)}}}; add ("<p><b>Add an administrator</b></p>"); if flError { //add the error message, if any add ("<tr><td colspan=\"2\"><i>" + errorMessage + "</i></td></tr>")}; bundle { //add the new admin user fields add (stringPref ("name", "Name", default:name)); add (stringPref ("email", "Email", default:email)); add (stringPref ("password", "Password", "password", 12, default:password)); add (stringPref ("repeatPassword", "Repeat", "password", 12, default:password)); add (checkPref ("enableWebEdit", "Check this box to grant WebEdit access to this administrator.", flWebEdit))}; bundle { //Submit button if defined (pta^.searchArgTable.adminUser) { //edit user add ("<tr><td colspan=\"2\"><input type=\"submit\" name=\"editAdministrator\" value=\"Submit\" /></td></tr>")} else { //create new user add ("<tr><td colspan=\"2\"><input type=\"submit\" name=\"addAdministrator\" value=\"Add Administrator\" /></td></tr>")}}; return (htmltext)}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.