Wednesday, April 06, 2011 at 12:01 AM.
system.verbs.builtins.opmlEditor.member.checkCookie
on checkCookie (urlRedirect, adrusername, flredirect=true) { <<Changes <<4/3/11; 4:25:32 PM by DW <<Call opmleditor.init. If the request is coming from the local machine, and we can't validate the user via cookies, the user is automatically "admin" -- if the pref is set true. <<3/7/11; 7:11:23 PM by DW <<Don't look for the specific cookie if there are no cookies at all. <<3/7/11; 8:36:59 AM by DW <<Return true if the user has the cookie and a valid username and password, else redirect to the indicated address. <<The cookie looks like this: "username%3Ddave%26password%3Dbloing" <<Added optional flredirect param. Our menu code wants to display an abbreviated menu if the user is not a member, so it doesn't want the redirect. local (pta = html.getpagetableaddress (), now = clock.now ()); local (adrgroup = opmlEditor.member.initGroup ()); opmlEditor.init (); if defined (pta^.requestHeaders.cookies) { local (adrcookie = @pta^.requestHeaders.cookies.[adrgroup^.cookiename]); if defined (adrcookie^) { local (args); new (tabletype, @args); webserver.parseargs (string.urldecode (adrcookie^), @args); if defined (args.username) and defined (args.password) { if opmlEditor.member.validate (args.username, args.password) { adrusername^ = args.username; return (true)}}}}; bundle { //allow access for local user, as admin, 4/3/11 by DW if user.opmlEditor.prefs.flLocalMemberIsAdmin { if opmlEditor.isSameMachine (pta^.client) { local (username = "admin"); local (adrmember = opmlEditor.member.initMember (username, flcreate:true)); adrmember^.stats.ctLocalAccessess++; adrmember^.stats.whenLastLocalAccess = now; adrusername^ = username; return (true)}}}; if flredirect { webserver.redirect (pta, urlRedirect)}; return (false)}; bundle { //test code html.setpagetableaddress (@scratchpad.radio2params); checkcookie ("http://scripting.com/")}
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.