示例#1
0
    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)
示例#2
0
    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)
示例#3
0
 def __init__(self):
     LunarcPage.__init__(self)
     Configurable.__init__(self)
示例#4
0
	def htBodyArgs(self):
		return LunarcPage.htBodyArgs(self) + ' onload="document.loginform.password.focus();"' % locals()
示例#5
0
	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)