Monday, April 04, 2011 at 1:07 AM.
radio2Suite.securityChallenge
on securityChallenge (adradruser) { <<Changes <<3/7/11; 8:31:51 AM by DW <<Switch to cookie-based user authentication. <<bundle //old code <<local (pta = html.getpagetableaddress (), adrdata = radio2suite.init ()) <<if webserver.util.parseAuth (pta) //get username and password <<local (adruser = @adrdata^.users.[pta^.username]) <<if not defined (adruser^) <<scripterror ("Can't access the site because there is no user named \"" + pta^.username + ".\"") <<if not adruser^.prefs.enabled //3/5/11 by DW <<scripterror ("Can't access the site because it is being worked on at this time.") <<if string (pta^.password) == string (adruser^.prefs.security.password) <<adradruser^ = adruser <<radio2suite.inituser (adruser) //2/21/11 by DW <<return (true) <<bundle //send challenge <<local (pagebody = "A valid username and password are required to access this page.") <<pta^.responseBody = webserver.util.buildErrorPage ("401 Unauthorized", pagebody) <<pta^.responseHeaders.["WWW-Authenticate"] = "Basic realm=\"" + radio2Info.name + "\"" <<pta^.code = 401 <<return (false) <<3/5/11; 11:35:36 AM by DW <<Don't pass if the user's account is not enabled. <<2/21/11; 6:42:15 PM by DW <<Call initUser before returning, this is the bottleneck -- makes sure there are no uninitiaized elements of the user table. <<1/7/11; 10:18:47 AM by DW <<Rewrite to return adruser, instead of having it passed as a parameter. <<on securityChallenge (adruser) <<Changes <<1/7/11; 10:18:47 AM by DW <<Rewrite to not take adruser as a parameter. <<2/25/05; 6:37:03 PM by DW <<Created. <<local (pta = html.getpagetableaddress ()) <<if adruser^.prefs.security.enabled <<if webserver.util.parseAuth (pta) //get username and password <<if string.lower (pta^.username) == string.lower (nameof (adruser^)) <<if string (pta^.password) == string (adruser^.prefs.security.password) <<return (true) <<bundle //send challenge <<local (pagebody = "A valid username and password are required to access this page.") <<pta^.responseBody = webserver.util.buildErrorPage ("401 Unauthorized", pagebody) <<pta^.responseHeaders.["WWW-Authenticate"] = "Basic realm=\"Admin\"" <<pta^.code = 401 <<return (false) <<else <<return (true) <<2/25/05; 6:37:03 PM by DW <<Created. local (adrdata = radio2suite.init (), username); if opmlEditor.member.checkCookie ("signin", @username) { adradruser^ = @adrdata^.users.[username]; return (true)} else { return (false)}}; bundle { //test code securityChallenge ()}
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.