def SingleSignOnSMF(request, **kw):
	""" If the user is authenticated to SMF (1.1.1)
	    then automatically create/use the same named user in Moin
	"""

	import PHPUnserialize;
	import Cookie;

	user_obj = kw.get('user_obj')
        try:
		cookie = Cookie.SimpleCookie(request.saved_cookie)
        except Cookie.CookieError:
		# ignore invalid cookies
		cookie = None
        if cookie and cookie.has_key(request.cfg.sso_smf_cookiename):
		import urllib
		cookievalue = cookie[request.cfg.sso_smf_cookiename].value
		cookievalue = urllib.unquote(cookievalue) # cookie value is urlencoded, decode it
		us = PHPUnserialize.PHPUnserialize()
		values = us.unserialize(cookievalue)
		#request.log("Got id %s from smf" % values[0])
		
		import MySQLdb
		connection = MySQLdb.connect(host=request.cfg.sso_smf_host,
			user=request.cfg.sso_smf_user,
			passwd=request.cfg.sso_smf_passwd,
			db=request.cfg.sso_smf_db)
		cursor = connection.cursor()
		cursor.execute("SELECT memberName, realName, emailAddress " +
			       "FROM smf_members WHERE ID_MEMBER = " + values[0])
		data = cursor.fetchall()
		#request.log("data: %s|%s|%s" % (data[0][0], data[0][1], data[0][2]))
		from MoinMoin.user import User
		user = User(request, name=data[0][1], auth_username=data[0][0])
		changed = False
		if data[0][1] != user.aliasname:
			user.aliasname = data[0][1]
			changed = True
		if data[0][2] != user.email:
			user.email = data[0][2]
			changed = True

		if user:
			user.create_or_update(changed)
		if user and user.valid:
			return user, True # True to get other methods called, too
	return user_obj, True # continue with next method in auth list
