Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

Changeset 1324

Show
Ignore:
Timestamp:
09/02/06 18:05:33
Author:
fumanchu
Message:

More SessionAuth? cleanups. Replaced 'login' with 'username' whenever appropriate ('login' should be used as the verb only ('log in'), not as a synonym for 'username'). Also made symmetric do_* and on_* methods. The new on_check method replaces the load_user_by_username method--this facilitates a user-supplied fix for #224 (store the user details in the session) by passing the same loaduserbyusername callback to tools.session_auth.on_login instead of tools.session_auth.on_check.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cherrypy/lib/cptools.py

    r1323 r1324  
    148148    session_key = "username" 
    149149     
    150     def check_login_and_password(self, login, password): 
     150    def check_username_and_password(self, username, password): 
    151151        pass 
    152152     
     
    155155        pass 
    156156     
    157     def load_user_by_username(self, username): 
    158         pass 
    159      
    160     def on_login(self, login): 
    161         pass 
    162      
    163     def on_logout(self, login): 
    164         pass 
    165      
    166     def login_screen(self, from_page='..', login='', error_msg=''): 
     157    def on_login(self, username): 
     158        pass 
     159     
     160    def on_logout(self, username): 
     161        pass 
     162     
     163    def on_check(self, username): 
     164        pass 
     165     
     166    def login_screen(self, from_page='..', username='', error_msg=''): 
    167167        return """<html><body> 
    168168Message: %(error_msg)s 
    169169<form method="post" action="do_login"> 
    170     Login: <input type="text" name="login" value="%(login)s" size="10" /><br /> 
     170    Login: <input type="text" name="username" value="%(username)s" size="10" /><br /> 
    171171    Password: <input type="password" name="password" size="10" /><br /> 
    172172    <input type="hidden" name="from_page" value="%(from_page)s" /><br /> 
    173173    <input type="submit" /> 
    174174</form> 
    175 </body></html>""" % {'from_page': from_page, 'login': login
     175</body></html>""" % {'from_page': from_page, 'username': username
    176176                     'error_msg': error_msg} 
    177177     
    178     def do_login(self, login, password, from_page='..'): 
     178    def do_login(self, username, password, from_page='..'): 
    179179        """Login. May raise redirect, or return True if request handled.""" 
    180         error_msg = self.check_login_and_password(login, password) 
     180        error_msg = self.check_username_and_password(username, password) 
    181181        if error_msg: 
    182             body = self.login_screen(from_page, login, error_msg) 
     182            body = self.login_screen(from_page, username, error_msg) 
    183183            cherrypy.response.body = body 
    184184            return True 
    185185        else: 
    186             cherrypy.session[self.session_key] = login 
    187             self.on_login(login
     186            cherrypy.session[self.session_key] = username 
     187            self.on_login(username
    188188            raise cherrypy.HTTPRedirect(from_page or "/") 
    189189     
     
    191191        """Logout. May raise redirect, or return True if request handled.""" 
    192192        sess = cherrypy.session 
    193         login = sess.get(self.session_key) 
     193        username = sess.get(self.session_key) 
    194194        sess[self.session_key] = None 
    195         if login
    196             self.on_logout(login
     195        if username
     196            self.on_logout(username
    197197        raise cherrypy.HTTPRedirect(from_page) 
    198198     
    199     def check_user(self): 
     199    def do_check(self): 
    200200        """Assert username. May raise redirect, or return True if request handled.""" 
    201201        sess = cherrypy.session 
     
    204204        username = sess.get(self.session_key) 
    205205        if not username: 
    206             username = self.anonymous() 
     206            sess[self.session_key] = username = self.anonymous() 
    207207        if not username: 
    208208            cherrypy.response.body = self.login_screen(request.browser_url) 
    209209            return True 
    210210         
    211         # Everything is OK: user is logged in 
    212         if not request.user_data: 
    213             request.user_data = self.load_user_by_username(username) 
     211        self.on_check(username) 
    214212     
    215213    def run(self): 
    216214        request = cherrypy.request 
    217         request.user_data = None 
    218          
    219215        path = request.path 
    220216        if path.endswith('login_screen'): 
     
    225221            return self.do_logout(**request.params) 
    226222        else: 
    227             return self.check_user() 
     223            return self.do_check() 
    228224 
    229225 
  • trunk/cherrypy/test/test_sessionauthenticate.py

    r1322 r1324  
    66def setup_server(): 
    77     
    8     def check(login, password): 
    9         # Dummy check_login_and_password function 
    10         if login != 'login' or password != 'password': 
     8    def check(username, password): 
     9        # Dummy check_username_and_password function 
     10        if username != 'login' or password != 'password': 
    1111            return u'Wrong login/password' 
    1212     
     
    1515        _cp_config = {'tools.sessions.on': True, 
    1616                      'tools.session_auth.on': True, 
    17                       'tools.session_auth.check_login_and_password': check, 
     17                      'tools.session_auth.check_username_and_password': check, 
    1818                      } 
    1919         
     
    3737         
    3838        # setup credentials 
    39         login_body = 'login=login&password=password&from_page=/' 
     39        login_body = 'username=login&password=password&from_page=/' 
    4040         
    4141        # attempt a login 

Hosted by WebFaction

Log in as guest/cpguest to create tickets