goa/appobjects/gauthservice.py
changeset 0 b97547f5f1fa
child 671 4ae56cfd530d
equal deleted inserted replaced
-1:000000000000 0:b97547f5f1fa
       
     1 """authentication using google authentication service
       
     2 
       
     3 :organization: Logilab
       
     4 :copyright: 2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
       
     5 :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
       
     6 """
       
     7 __docformat__ = "restructuredtext en"
       
     8 
       
     9 from cubicweb.common.registerers import priority_registerer
       
    10 from cubicweb.web.views.basecomponents import UserLink
       
    11 from cubicweb.web.views.actions import LogoutAction
       
    12 
       
    13 from google.appengine.api import users
       
    14 
       
    15 
       
    16 class use_google_auth_registerer(priority_registerer):
       
    17     """register object if use-google-auth is true"""
       
    18     
       
    19     def do_it_yourself(self, registered):
       
    20         if not hasattr(self.config, 'has_resource'):
       
    21             return
       
    22         return super(use_google_auth_registerer, self).do_it_yourself(registered)
       
    23 
       
    24 
       
    25 class GAEUserLink(UserLink):
       
    26     __registerer__ = use_google_auth_registerer
       
    27 
       
    28     def anon_user_link(self):
       
    29         self.w(self.req._('anonymous'))
       
    30         self.w(u'&nbsp;[<a class="logout" href="%s">%s</a>]'
       
    31                % (users.create_login_url(self.req.url()), self.req._('login')))
       
    32 
       
    33 class GAELogoutAction(LogoutAction):
       
    34     __registerer__ = use_google_auth_registerer
       
    35 
       
    36     def url(self):
       
    37         return users.create_logout_url(self.req.build_url('logout') )