def post(self): error = "" get_username = self.request.get("username") get_password = self.request.get("password") get_verify = self.request.get("verify") get_email = self.request.get("email") if get_email and not MAIL_RE.match(get_email): error = "Invalid e-mail" if get_password != get_verify: error = "Passwords do not match." if not PASS_RE.match(get_password): error = "Invalid password." if not USER_RE.match(get_username): error = "Invalid Username. Please try again." if db.GqlQuery("SELECT __key__ FROM Users WHERE username = :1", get_username).count() != 0: error = "User already exists. Please choose a different username" if error: self.render(username=get_username, password=get_password, verify=get_verify, email=get_email, error=error) else: hashed_result = SaltHasher(get_password) user_db = Users(username=get_username, password=hashed_result.get_result()[0], email=get_email, salt=hashed_result.get_result()[1]) user_db.put() user_id = str(user_db.key().id()) self.response.headers.add_header('Set-Cookie', 'user_id=%s|%s; Path=/' % (user_id, hashed_result.get_result()[0])) self.redirect("/unit6/blog/welcome")
def post(self): globals.init() current_url = self.request.url.split('/')[-1] if current_url == 'main': globals.main_page = True has_error = False user_input = self.request.get('username') password_input = self.request.get('password') verify_input = self.request.get('verify') email_input = self.request.get('email') valid_u = utils.valid_username(user_input) valid_p = utils.valid_password(password_input) valid_e = utils.valid_email(email_input) user_error = '' pass_error = '' email_error = '' verify_error = '' if not valid_u: user_error = 'Invalid username, please try again.' has_error = True if not valid_p: pass_error = 'Invalid password, please try again.' has_error = True if password_input != verify_input: verify_error = 'Passwords do not match, try again.' has_error = True if not valid_e and email_input != '': email_error = 'Invalid email, please try again.' has_error = True if has_error != False: if not globals.main_page: self.render("register.html",error_user = user_error ,error_pass = pass_error,error_verify = verify_error,error_email = email_error,username = user_input,email = email_input) else: self.render("register_main.html",error_user = user_error ,error_pass = pass_error,error_verify = verify_error,error_email = email_error,username = user_input,email = email_input) else: hash_pass = utils.make_pw_hash(user_input,password_input) user_input = str(user_input) user_taken = False email_taken = False data = db.GqlQuery("select * from Users order by user_name") for entry in data: user = entry.user_name email= entry.user_email if user == user_input: user_taken = True if email == email_input and email != '': email_taken = True if user_taken or email_taken: user_error = 'Sorry, the username you selected is already taken' email_error= 'Sorry, this email is already registered' if user_taken and email_taken: if not globals.main_page: self.render('register.html', error_user = user_error, error_email = email_error) else: self.render('register_main.html', error_user = user_error, error_email = email_error) if user_taken: if not globals.main_page: self.render('register.html', error_user = user_error, email = email_input) else: self.render('register_main.html', error_user = user_error, email = email_input) else: if not globals.main_page: self.render('register.html', error_email = email_error, username = user_input) else: self.render('register_main.html', error_email = email_error, username = user_input) else: new = Users(user_name = user_input, user_pass = hash_pass, user_email = email_input) new.put() self.response.headers.add_header('Set-Cookie', 'user_id=%s|%s; Path=/' % (new.key().id(),hash_pass)) if globals.main_page: self.redirect('/homework') else: self.redirect('/wiki/')