Changeset 343
- Timestamp:
- 06/20/05 13:47:40
- Files:
-
- trunk/cherrypy/_cputil.py (modified) (2 diffs)
- trunk/cherrypy/docs/europython2005/index.html (modified) (1 diff)
- trunk/cherrypy/lib/csauthenticate.py (modified) (1 diff)
- trunk/cherrypy/lib/filter/sessionauthenticatefilter.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/cherrypy/_cputil.py
r338 r343 119 119 decodingfilter, encodingfilter, gzipfilter, logdebuginfofilter, \ 120 120 staticfilter, nsgmlsfilter, tidyfilter, \ 121 virtualhostfilter, xmlrpcfilter 121 virtualhostfilter, xmlrpcfilter, sessionauthenticatefilter 122 122 123 123 from cherrypy.lib.filter.sessionfilter import sessionfilter … … 139 139 decodingfilter.DecodingFilter(), 140 140 _sessionfilter, 141 sessionauthenticatefilter.SessionAuthenticateFilter(), 141 142 staticfilter.StaticFilter(), 142 143 _nsgmlsfilter, trunk/cherrypy/docs/europython2005/index.html
r324 r343 46 46 <h1>Introduction</h1> 47 47 <ul> 48 <li>Item 1</li> 49 <li>Item 2</li> 48 <li>OOP framework for doing web development</li> 49 <li>Runs everywhere python runs</li> 50 <li>Requires Python-2.3 or later</li> 51 <li>Version 2.1 (used in this tutorial) coming soon</li> 52 </ul> 53 </div> 54 55 <div class="slide"> 56 <h1>Hello, world</h1> 57 <ul> 58 <li>Exposing objects</li> 59 <li>Built-in HTTP server</li> 60 <li>"development" environment: autoreload, debug information, validation</li> 61 </ul> 62 </div> 63 64 <div class="slide"> 65 <h1>Hello, you</h1> 66 <ul> 67 <li>Passing parameters to methods</li> 50 68 </ul> 51 69 </div> trunk/cherrypy/lib/csauthenticate.py
r229 r343 31 31 32 32 from aspect import Aspect, STOP, CONTINUE 33 34 import warnings 35 warnings.warn("The CSAuthenticate module is deprecated. You can use the sessionauthenticate filter instead", 36 DeprecationWarning) 33 37 34 38 class CSAuthenticate(Aspect): trunk/cherrypy/lib/filter/sessionauthenticatefilter.py
r295 r343 29 29 from basefilter import BaseFilter 30 30 31 def loginScreen(fromPage, login = '', errorMsg = ''):31 def defaultLoginScreen(fromPage, login = '', errorMsg = ''): 32 32 return """ 33 33 <html><body> … … 42 42 """ % (errorMsg, login, fromPage) 43 43 44 def defaultCheckLoginAndPassword(login, password): 45 # Dummy checkLoginAndPassword function 46 if login != 'login' or password != 'password': 47 return u'Wrong login/password' 44 48 45 49 class SessionAuthenticateFilter(BaseFilter): … … 48 52 """ 49 53 50 def __init__(self, checkLoginAndPassword, loginScreen = loginScreen, 51 notLoggedIn = None, loadUserByUsername = None): 52 global cpg, httptools 53 # We have to dynamically import cpg because Python can't handle 54 # circular module imports :-( 54 def beforeMain(self): 55 global cpg 55 56 from cherrypy import cpg 56 from cherrypy.lib import httptools 57 self.checkLoginAndPassword = checkLoginAndPassword 58 self.loginScreen = loginScreen 59 self.notLoggedIn = notLoggedIn 60 self.loadUserByUsername = loadUserByUsername 57 if not cpg.config.get('sessionAuthenticateFilter.on', False): 58 return 59 checkLoginAndPassword = cpg.config.get('sessionAuthenticateFilter.checkLoginAndPassword', defaultCheckLoginAndPassword) 60 loginScreen = cpg.config.get('sessionAuthenticateFilter.loginScreen', defaultLoginScreen) 61 notLoggedIn = cpg.config.get('sessionAuthenticateFilter.notLoggedIn') 62 loadUserByUsername = cpg.config.get('sessionAuthenticateFilter.loadUserByUsername') 63 sessionName = cpg.config.get('sessionAuthenticateFilter.sessionName', 'sessionMap') 64 sessionKey = cpg.config.get('sessionAuthenticateFilter.sessionKey', 'username') 65 sessionMap = getattr(cpg.sessions, sessionName) 61 66 62 def beforeMain(self):63 67 if cpg.request.path.endswith('loginScreen'): 64 68 return 65 69 elif cpg.request.path.endswith('doLogout'): 66 cpg.request.sessionMap['username'] = None70 sessionMap[sessionKey] = None 67 71 cpg.threadData.user = None 68 72 fromPage = cpg.request.paramMap.get('fromPage') … … 74 78 login = cpg.request.paramMap['login'] 75 79 password = cpg.request.paramMap['password'] 76 errorMsg = self.checkLoginAndPassword(login, password)80 errorMsg = checkLoginAndPassword(login, password) 77 81 if errorMsg: 78 cpg.response.body = self.loginScreen(fromPage, login = login, errorMsg = errorMsg)82 cpg.response.body = loginScreen(fromPage, login = login, errorMsg = errorMsg) 79 83 else: 80 cpg.request.sessionMap['username'] = login84 sessionMap[sessionKey] = login 81 85 if not fromPage: 82 86 fromPage = '/' … … 85 89 86 90 # Check if user is logged in 87 if (not cpg.request.sessionMap.get('username')) and self.notLoggedIn: 88 self.notLoggedIn() 89 if not cpg.request.sessionMap.get('username'): 90 cpg.response.body = self.loginScreen(cpg.request.browserUrl) 91 if (not sessionMap.get(sessionKey)) and notLoggedIn: 92 # Call notLoggedIn so that applications where anynymous user 93 # is OK can handle it 94 notLoggedIn() 95 if not sessionMap.get(sessionKey): 96 cpg.response.body = loginScreen(cpg.request.browserUrl) 91 97 return 92 98 93 99 # Everything is OK: user is logged in 94 if self.loadUserByUsername:95 username = cpg.request.sessionMap['username']96 cpg.threadData.user = self.loadUserByUsername(username)100 if loadUserByUsername: 101 username = sessionMap[sessionKey] 102 cpg.threadData.user = loadUserByUsername(username) 97 103

