def respond(self, trans): """ If the user is already logged in, then process this request normally. Otherwise, do nothing. All of the login logic has already happened in awake(). """ if self.getLoggedInUser(): LunarcPage.respond(self, trans)
def awake(self, trans): # Awaken our superclass LunarcPage.awake(self, trans) if self.setting("RequireLogin"): # Handle four cases: logout, login attempt, already logged in, and not already logged in. session = trans.session() request = trans.request() app = trans.application() # Get login id and immediately clear it from the session loginid = session.value("loginid", None) print loginid if loginid: session.delValue("loginid") # Are they logging out? if request.hasField("logout"): print "logout" # They are logging out. Clear all session variables and take them to the # Login page with a "logged out" message. session.values().clear() request.setField("extra", "You have been logged out.") request.setField("action", string.split(request.urlPath(), "/")[-1]) app.forward(trans, "LoginPage") elif request.hasField("login") and request.hasField("name") and request.hasField("password"): print "login" # They are logging in. Clear session session.values().clear() # Get request fields name = request.field("name") password = request.field("password") # f = request.field("proxy") # proxy = f.file.read() # print "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++" # print "+++", request.field('name'), request.field('password'), "+++" # print "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++" # Check if they can successfully log in. The loginid must match what was previously # sent. if request.field("loginid", "nologin") == loginid and self.loginUser(name, password): print "succesful login" # Successful login. # Clear out the login parameters request.delField("name") request.delField("password") else: print "failed login" # Failed login attempt; have them try again. request.setField("extra", "Login failed. Please try again.") print "goto login page" app.forward(trans, "LoginPage") # They aren't logging in; are they already logged in? elif not self.getLoggedInUser(): print "goto login page" # They need to log in. session.values().clear() # Send them to the login page app.forward(trans, "LoginPage") else: # No login is required session = self.session() request = self.request() # Are they logging out? if request.hasField("logout"): # They are logging out. Clear all session variables. session.values().clear() # write the page LunarcPage.writeHTML(self)
def __init__(self): LunarcPage.__init__(self) Configurable.__init__(self)
def htBodyArgs(self): return LunarcPage.htBodyArgs(self) + ' onload="document.loginform.password.focus();"' % locals()
def writeHead(self): if self.request().hasField("URL"): slowURL = self.request().field("URL") self.writeln("""<META HTTP-EQUIV="REFRESH" CONTENT="0;URL=%s">""" % slowURL) LunarcPage.writeHead(self)