async def user_create(request): if request.app.config.REGISTRATION == "closed": return response.json({'zrada': 'registration closed'}) invite = request.json.pop("invite", None) if request.app.config.REGISTRATION == "invite": if not invite or invite != request.app.config.INVITE_CODE: return response.json({'zrada': 'need valid invite'}) username = request.json["username"] password = request.json["password"] if username and password: is_uniq = await User.is_unique(doc=dict(username=username)) if is_uniq in (True, None): await User.insert_one( dict(name=username, password=generate_password_hash(password), email=request.json.get("email"), profile=request.json.get("profile"), details=request.json.get("details"), uri=f"{request.app.base_url}/{username}")) return response.json({'peremoga': 'yep'}, status=201) else: return response.json({'zrada': 'username n/a'})
async def create(cls, user_data, base_url): user_data["name"] = user_data.pop("username") user_data["password"] = generate_password_hash(user_data["password"]) user_data["uri"] = f"{base_url}/{user_data['name']}" await cls.insert_one(user_data) user = await cls.find_one({"name": user_data['name']}) return user
def test_check_hash(self): pw_hash = self.eve_bcrypt.generate_password_hash('secret') # check a correct password self.assertTrue(self.eve_bcrypt.check_password_hash(pw_hash, 'secret')) # check an incorrect password self.assertFalse( self.eve_bcrypt.check_password_hash(pw_hash, 'hunter2')) # check unicode pw_hash = self.eve_bcrypt.generate_password_hash('\u2603') self.assertTrue(self.eve_bcrypt.check_password_hash(pw_hash, '\u2603')) # check helpers pw_hash = generate_password_hash('hunter2') self.assertTrue(check_password_hash(pw_hash, 'hunter2'))
async def post(self, request): new_user_email = request.json.get('email') new_user_password = request.json.get('password') new_user_first_name = request.json.get('first_name') new_user_last_name = request.json.get('last_name') user_validator = NewUserValidator(first_name=new_user_first_name, last_name=new_user_last_name, email=new_user_email, password=new_user_password) if not await user_validator.is_valid(): return json({ 'status': 'failed validation', 'errors': user_validator.errors }) await User.create(first_name=new_user_first_name, last_name=new_user_last_name, email=new_user_email, password=generate_password_hash(new_user_password)) return json({'status': 'created'}, status=201)
def test_unicode_hash(self): password = '******' h = generate_password_hash(password).decode('utf-8') self.assertTrue(check_password_hash(h, password))