Example #1
0
    def post(self):
        post_dict = flat_dict_to_nested_dict(self.request.POST)
        # confirm that required fields are provided.
        # We pop the password, because we don't want to send it to
        # ``get_person()``
        password = post_dict.pop('password')
        email = post_dict.get('email')

        if not email or not password or not utils.validate_email(email):
            message = u'Please provide a valid email and a password.'
            self.request.add_message(message, level='error')
            self.redirect(Config.get('aeauth').login_url)

        user = self.request.user
        # if we have a user update based on the dict and pass
        if user is not None:
            user.set_password(password)
#            user.add_email(email)
            user.put()
        # otherwise create a new one.
        else:
            user_model = self.request.get_user_model()
            user = user_model.get_or_create_by_email(email)
            # if we have a user check the password
            if user is not None:
                if not user.check_password(password):
                    message = u'The password that you\'ve provided ' \
                              u'does not match our records. ' \
                              u'Please try again.'
                    self.request.add_message(message, level='error')
                    self.redirect(Config.get('aeauth').login_url)
            # no User with that email create a new User
            else:
                user = user_model.create(email=email, password_raw=password)

        redirect_url = self.request.get_redirect_url() or\
                           Config.get('aeauth').success_url
        self.redirect(redirect_url)
Example #2
0
 def handle_request(cls, request):
     post_dict = flat_dict_to_nested_dict(request.POST)
     # confirm that required fields are provided.
     # We pop the password, because we don't want to send it to
     # ``get_person()``
     password = post_dict.pop('password')
     email = post_dict.get('email')
     if not email or not password:
         raise Exception(u'Please provide a valid email '
                               u'and a password.')
     obj = cls.get_key(cls.provider, email).get()
     if obj is None:
         obj = cls()
         obj.set_password(password)
     else:
         if not obj._check_password(password):
             raise Exception(u'The password that you\'ve provided '
                                   u'doesn\'t match our records. '
                                   u'Please try again.')
     obj.person_raw = post_dict
     obj.set_person()
     obj.set_key()
     obj.put()
     return None, obj