""":organization: Logilab:copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses"""fromcubicweb.webimportRedirectfromcubicweb.web.applicationimportCubicWebPublisher# proof of concept : monkey patch publish method so that if we are in an# anonymous session and __fblogin is found is req.form, the user with the# given login is created if necessary and then a session is opened for that# user# NOTE: this require "cookie" authentication modedefauto_login_publish(self,path,req):if(req.cnxisNoneorreq.cnx.anonymous_connection)andreq.form.get('__fblogin'):login=password=req.form.pop('__fblogin')self.repo.register_user(login,password)req.form['__login']=loginreq.form['__password']=passwordifreq.cnx:req.cnx.close()req.cnx=Nonetry:self.session_handler.set_session(req)exceptRedirect:passassertreq.user.login==loginreturnorig_publish(self,path,req)orig_publish=CubicWebPublisher.main_publishCubicWebPublisher.main_publish=auto_login_publish