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)
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