Exemplo n.º 1
0
    def POST(self):
        """
        """
        if self.env["cfg"].enableRegistration:
            givenEmail = self.env["members"]["email"] if self.env["members"].has_key("email") else ""
            username = self.env["members"]["username"] if self.env["members"].has_key("username") else ""
            passwordOnce = self.env["members"]["passwordOnce"] if self.env["members"].has_key("passwordOnce") else ""
            passwordTwice = self.env["members"]["passwordTwice"] if self.env["members"].has_key("passwordTwice") else ""

            foundEmail = um.findByEmail(givenEmail)
            foundName = um.findByUsername(username)

            if passwordOnce == passwordTwice and passwordOnce != "" and not (foundEmail or foundName):
                """
                Passwords match, password isn't null and no one
                Else has the same username or email. If this is all true then
                We can go ahead and make a new user and while we're at it
                lets log them in also.
                """
                newUser = um.userORM(username, passwordOnce)
                newUser.loginThis(self.env["cookie"])
                newUser.save()
                self.session.pushAlert(
                    "You can now log in with the \
                        information you gave us!",
                    "Congrats!",
                    "success",
                )
                self.head = ("303 SEE OTHER", [("location", "/your/flags")])

            else:
                """
                If none, or one of those isn't true then we have a problem...
                """
                view = authRegisterTmpl(searchList=[self.tmplSearchList])
                view.email = givenEmail
                view.username = username
                if foundName:
                    """
                    Someone with the same username, thats not allowed...
                    """
                    self.session.pushAlert(
                        "There is already a person in our \
                            system with that username, please choose another",
                        "Oh no!",
                        "error",
                    )

                    view.usernameError = True

                elif foundEmail:
                    """
                    Already someone with that email in the system...
                    """
                    self.session.pushAlert(
                        "There is already someone with that \
                            email in our system, are you sure you don't already\
                            have an account, or have already requested an invite?",
                        "Oh no!",
                        "error",
                    )
                    view.emailError = True

                elif passwordOnce != "" and passwordOnce != passwordTwice:
                    """
                    Password isn't null but doesn't match
                    """
                    view.passwordMatchError = True

            return view

        else:
            self._404()
    def POST(self):
        """
        """
        if self.env["cfg"].enableRequests:
            token = self.env["members"][0]
            givenEmail = self.env["members"]["email"] \
                    if self.env["members"].has_key("email") else ""
            username = self.env["members"]["username"] \
                    if self.env["members"].has_key("username") else ""
            passwordOnce  = self.env["members"]["passwordOnce"] \
                    if self.env["members"].has_key("passwordOnce") else ""
            passwordTwice  = self.env["members"]["passwordTwice"] \
                    if self.env["members"].has_key("passwordTwice") else ""

            email = su.requestDetoken(token)
            foundEmail = um.findByEmail(email)
            foundName = um.findByUsername(username)

            if email == givenEmail \
                    and passwordOnce == passwordTwice \
                    and passwordOnce != "" \
                    and not (foundEmail or foundName):
                #Passwords match, emails match, password isn't null and no one
                #Else has the same username or email. If this is all true then
                #We can go ahead and make a new user and while we're at it
                #lets log them in also. When this happends we delete the request
                #also so its not just sitting around in our system
                newUser = um.userORM(username, passwordOnce)
                newUser.loginThis(self.env["cookie"])
                newUser.save()
                req = rm.requestORM.find(email)
                req.delete()
                self.session.pushAlert("You can now log in with the \
                        information you gave us!", "Congrats!", "success")
                self.head = ("303 SEE OTHER", [("location", "/you/flags")])

            else:
                #If none, or one of those isn't true then we have a problem...
                view = requestsRegisterTmpl(searchList=[self.tmplSearchList])
                view.email = givenEmail
                view.token = token
                view.username = username
                if foundName:
                    #Someone with the same username, thats not allowed...
                    self.session.pushAlert("There is already a person in our \
                            system with that username, please choose another",
                            "Oh no!", "error")

                    view.usernameError = True

                elif foundEmail:
                    #Already someone with that email in the system...
                    self.session.pushAlert("There is already someone with that \
                            email in our system, are you sure you don't already\
                            have an account, or have already requested an invite?",
                            "Oh no!", "error")
                    view.emailError = True

                elif passwordOnce != "" and passwordOnce != passwordTwice:
                    #Password isn't null but doesn't match
                    view.passwordMatchError = True

                elif email != givenEmail:
                    #And finally, if the email they give doesn't match the invites
                    #email...
                    view.emailMatchError = True

            return view

        else:
            self._404()