|
@@ -0,0 +1,46 @@
|
|
|
|
|
+import bcrypt
|
|
|
|
|
+import myloginpath
|
|
|
|
|
+import pymysql
|
|
|
|
|
+
|
|
|
|
|
+def test_login(username, password):
|
|
|
|
|
+ conf = myloginpath.parse('app_auth')
|
|
|
|
|
+ conn = pymysql.connect(
|
|
|
|
|
+ host=conf.get('host', '127.0.0.1'),
|
|
|
|
|
+ user=conf.get('user'),
|
|
|
|
|
+ password=conf.get('password'),
|
|
|
|
|
+ database='food_db',
|
|
|
|
|
+ cursorclass=pymysql.cursors.DictCursor
|
|
|
|
|
+ )
|
|
|
|
|
+ with conn.cursor() as cursor:
|
|
|
|
|
+ cursor.execute("SELECT password_hash FROM users WHERE username = %s LIMIT 1", (username,))
|
|
|
|
|
+ result = cursor.fetchone()
|
|
|
|
|
+ conn.close()
|
|
|
|
|
+ if result:
|
|
|
|
|
+ return bcrypt.checkpw(password.encode('utf-8'), result['password_hash'].encode('utf-8'))
|
|
|
|
|
+ return False
|
|
|
|
|
+
|
|
|
|
|
+# Try registering a user and testing it
|
|
|
|
|
+def register_and_test():
|
|
|
|
|
+ conf = myloginpath.parse('app_auth')
|
|
|
|
|
+ conn = pymysql.connect(
|
|
|
|
|
+ host=conf.get('host', '127.0.0.1'),
|
|
|
|
|
+ user=conf.get('user'),
|
|
|
|
|
+ password=conf.get('password'),
|
|
|
|
|
+ database='food_db',
|
|
|
|
|
+ cursorclass=pymysql.cursors.DictCursor
|
|
|
|
|
+ )
|
|
|
|
|
+ username = "test_bot"
|
|
|
|
|
+ password = "bot_password"
|
|
|
|
|
+ hashed = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()).decode('utf-8')
|
|
|
|
|
+ try:
|
|
|
|
|
+ with conn.cursor() as cursor:
|
|
|
|
|
+ cursor.execute("INSERT INTO users (username, password_hash, email) VALUES (%s, %s, %s)", (username, hashed, 'bot@bot.com'))
|
|
|
|
|
+ conn.commit()
|
|
|
|
|
+ except Exception as e:
|
|
|
|
|
+ print("Insert failed:", e)
|
|
|
|
|
+ conn.close()
|
|
|
|
|
+
|
|
|
|
|
+ print("Login successful?", test_login(username, password))
|
|
|
|
|
+
|
|
|
|
|
+if __name__ == "__main__":
|
|
|
|
|
+ register_and_test()
|