Skvělé, už jsem to rozběhal. Díky za pomoc. VL
#!/usr/bin/python2.4
import cherrypy class Login: def check(cls, fn): def _check(self, *args, **kwargs): if cherrypy.session.has_key('userid'): # User is logged in; allow access return fn(self, *args, **kwargs) else: # User isn't logged in yet. # See if the user just tried to log in try: submit = kwargs['login'] email = kwargs['loginEmail'] password = kwargs['loginPassword'] except KeyError: # No, this wasn't a login attempt. Send the user to # the login "page". return self.loginPage(cherrypy.url()) # Now look up the user id by the email and password userid = self.getUserId(email, password) if userid is None: # Bad login attempt return self.loginPage(cherrypy.url(), 'Invalid email address or password.') # User is now logged in, so retain the userid and show the content cherrypy.session['userid'] = userid return fn(self, *args, **kwargs) return _check check = classmethod(check) def getUserId(self, email, password): '''Simple function to look up a user id from email and password. Naturally, this would be stored in a database rather than hardcoded, and the password would be stored in a hashed format rather than in cleartext. Returns the userid on success, or None on failure. ''' accounts = {('[EMAIL PROTECTED]', 'foo'): 'vlada'} return accounts.get((email,password), None) def loginPage(self, targetPage, message=None): '''Return a login "pagelet" that replaces the regular content if the user is not logged in.''' result = [] result.append('<h1>Sitename Login</h1>') if message is not None: result.append('<p>%s</p>' % message) result.append('<form action=%s method=post>' % targetPage) result.append('<p>Email Address: <input type=text name="loginEmail"></p>') result.append('<p>Password: <input type=password name="loginPassword"></p>') result.append('<p><input type="submit" name="login" value="Log In"></p>') result.append('</form>') return '\n'.join(result) def logOut(self): '''Log Out.''' del cherrypy.session['userid'] return 'You are no more logged in' + self.index() logOut.exposed = True class Page(Login): def index(self): return '''<h1>SiteName</h1> <h2>Home Page</h2> <p><a href="public">Public Page</a></p> <p><a href="private">Private Page</a> <i>(registered users only)</i></p> ''' index.exposed = True def public(self): return '''<h1>SiteName</h1> <h2>Public Page</h2> <p><a href="/">Go back home</a></p>''' public.exposed = True def private(self, *args, **kwargs): return '''<h1>SiteName</h1> <h2>Private Page</h2> <p><a href="logOut">Log Out</a></p> <p><a href="/">Go back home</a></p>''' private = Login.check(private) private.exposed = True root = Page() cherrypy.tree.mount(root, '/') if __name__ == "__main__": import os.path cherrypy.config.update(os.path.join(os.path.dirname(__file__), 'check-1.conf')) cherrypy.server.quickstart() cherrypy.engine.start()
check-1.conf
Description: Binary data
_______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python