TypeError: expected string or bytes-like object error when checking the bcrypt hash in python
Authorization code
class Login(Screen):
def do_login(self, loginText, passwordText):
app = App.get_running_app()
app.username = loginText
app.password = passwordText
passwordText = passwordText.encode("utf8")
conn = sqlite3.connect("users.db")
cursor = conn.cursor()
cursor.execute("SELECT password FROM users WHERE login=?", (loginText,))
hashed_password = cursor.fetchone()
def checkPassword(password):
if bcrypt.checkpw(password, hashed_password):
return true
cursor.execute("SELECT * FROM users WHERE login=?", (loginText,))
rows = cursor.fetchall()
if((len(rows) > 0) and checkPassword(passwordText)):
self.manager.transition = SlideTransition(direction="left")
self.manager.current = 'connected'
else:
print("Неверный логин или пароль")
Registration code
class Register(Screen):
def disconnect(self):
self.manager.transition = SlideTransition(direction="right")
self.manager.current = 'login'
self.manager.get_screen('login').resetForm()
def do_register(self, loginText, passwordText):
passwordText = passwordText.encode('utf8')
if(len(loginText) < 5):
print('Имя пользователя должно содержать больше 4 символов')
else:
if(len(passwordText) < 6):
print('Пароль должен содержать больше 5 символов')
else:
conn = sqlite3.connect('users.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM users WHERE login=?", (loginText,))
rows = cursor.fetchall()
if(len(rows) == 0):
def hash_password(password):
salt = bcrypt.gensalt()
return bcrypt.hashpw(password, salt)
user = [loginText, hash_password(passwordText)]
try:
cursor.execute("INSERT INTO users VALUES (NULL, ?, ?)", user)
except sqlite3.DatabaseError as error:
print ("Ошибка: ", error)
else:
conn.commit()
conn.close()
self.manager.transition = SlideTransition(direction="right")
self.manager.current = 'login'
self.manager.get_screen('login').resetForm()
else:
print('Имя пользователя уже используется')
Registration is fine, but when logging in, it throws an error: TypeError: expected string or bytes-like object.
Sqlite database, hashed using bcrypt.
0