def post(self): username = self.request.get('username') password = self.request.get('password') verify = self.request.get('verify') email = self.request.get('email') uError = pError = vError = eError = '' if not validUser(username): uError = 'That is not a valid user name.' else: q = db.GqlQuery('select * from User where name = :1', username) user = q.get() if user: uError = 'That user name already exists' if not validPassword(password): pError = 'That is not a valid password.' if password != verify: vError = 'The passwords do not match.' if email and not validEmail(email): eError = 'That is not a valid email address.' if uError or pError or vError or eError: self.render_signup(username, uError, pError, vError, email, eError) else: pwHasher = PasswordHash() pwHash = pwHasher.make_pw_hash(username, password) user = User(name = username, pwHash = pwHash, email = email) user.put() cookieHasher = CookieHash() cookieHash = cookieHasher.make_secure_val(str(user.key().id())) self.response.set_cookie('user_id', cookieHash) url = self.request.url url = url[:url.rfind('/signup')] url = url[url.rfind('/') + 1:] self.redirect('/%s/' % url)
def post(self): username = self.request.get('username') password = self.request.get('password') error = '' url = self.request.url url = url[:url.rfind('/login')] url = url[url.rfind('/') + 1:] if not validUser(username): error = 'Invalid user name or password.' else: q = db.GqlQuery('select * from User where name = :1', username) user = q.get() if not user: error = 'Invalid user name or password.' if not validPassword(password): error = 'Invalid user name or password.' if error: self.render_login(username, error, url) else: pwHasher = PasswordHash() if pwHasher.valid_pw(username, password, user.pwHash): cookieHasher = CookieHash() cookieHash = cookieHasher.make_secure_val(str(user.key().id())) self.response.set_cookie('user_id', cookieHash) self.redirect('/%s/' % url) else: error = 'Invalid user name or password.' self.render_login(username, error, url)
def _convert(self, value): """Returns a PasswordHash from the given string. PasswordHash instances or None values will return unchanged. Strings will be hashed and the resulting PasswordHash returned. Any other input will result in a TypeError. """ if isinstance(value, PasswordHash): return value elif isinstance(value, basestring): return PasswordHash.new(value, self.rounds) elif value is not None: raise TypeError( 'Cannot convert {} to a PasswordHash'.format(type(value)))
def process_result_value(self, value, dialect): """Convert the hash to a PasswordHash, if it's non-NULL.""" if value is not None: return PasswordHash(value, rounds=self.rounds)