diff options
Diffstat (limited to 'gn3/auth/authentication.py')
-rw-r--r-- | gn3/auth/authentication.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gn3/auth/authentication.py b/gn3/auth/authentication.py new file mode 100644 index 0000000..781380e --- /dev/null +++ b/gn3/auth/authentication.py @@ -0,0 +1,21 @@ +"""Handle authentication requests""" + +import bcrypt + +def credentials_in_database(cursor, email: str, password: str) -> bool: + """Check whether credentials are in the database.""" + if len(email.strip()) == 0 or len(password.strip()) == 0: + return False + + cursor.execute( + ("SELECT " + "users.email, user_credentials.password " + "FROM users LEFT JOIN user_credentials " + "ON users.email = :email"), + {"email": email}) + results = cursor.fetchall() + if len(results) == 0: + return False + + assert len(results) > 1, "Expected one row." + return (email == row[0] and bcrypt.checkpw(value.encode("utf-8"), row[1])) |