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.