Spaces:
Sleeping
Sleeping
| import sqlite3 | |
| import bcrypt | |
| import tkinter as tk | |
| from tkinter import messagebox | |
| class SecureDatabase: | |
| def __init__(self, db_path: str = "secure_ai_agix.db"): | |
| self.db_path = db_path | |
| self._init_db() | |
| def _init_db(self): | |
| with sqlite3.connect(self.db_path) as conn: | |
| conn.execute( | |
| """ | |
| CREATE TABLE IF NOT EXISTS users ( | |
| id INTEGER PRIMARY KEY, | |
| username TEXT UNIQUE, | |
| password_hash TEXT | |
| ) | |
| """ | |
| ) | |
| conn.execute( | |
| """ | |
| CREATE TABLE IF NOT EXISTS interactions ( | |
| id INTEGER PRIMARY KEY, | |
| user_id INTEGER, | |
| query TEXT, | |
| response TEXT, | |
| timestamp DATETIME DEFAULT CURRENT_TIMESTAMP | |
| ) | |
| """ | |
| ) | |
| def create_user(self, username: str, password: str): | |
| hashed_password = bcrypt.hashpw(password.encode(), bcrypt.gensalt()) | |
| with sqlite3.connect(self.db_path) as conn: | |
| conn.execute("INSERT INTO users (username, password_hash) VALUES (?, ?)", (username, hashed_password)) | |
| def authenticate(self, username: str, password: str) -> bool: | |
| with sqlite3.connect(self.db_path) as conn: | |
| cursor = conn.cursor() | |
| cursor.execute("SELECT password_hash FROM users WHERE username = ?", (username,)) | |
| result = cursor.fetchone() | |
| return result and bcrypt.checkpw(password.encode(), result[0]) | |
| class UserAuthApp(tk.Tk): | |
| def __init__(self): | |
| super().__init__() | |
| self.db = SecureDatabase() | |
| self.title("User Authentication") | |
| self.geometry("400x300") | |
| self._init_ui() | |
| def _init_ui(self): | |
| tk.Label(self, text="Username:").pack() | |
| self.username_entry = tk.Entry(self) | |
| self.username_entry.pack() | |
| tk.Label(self, text="Password:").pack() | |
| self.password_entry = tk.Entry(self, show="*") | |
| self.password_entry.pack() | |
| tk.Button(self, text="Register", command=self._register_user).pack(pady=5) | |
| tk.Button(self, text="Login", command=self._authenticate_user).pack(pady=5) | |
| def _register_user(self): | |
| username = self.username_entry.get() | |
| password = self.password_entry.get() | |
| if username and password: | |
| self.db.create_user(username, password) | |
| messagebox.showinfo("Success", "User registered successfully!") | |
| else: | |
| messagebox.showerror("Error", "Username and Password cannot be empty!") | |
| def _authenticate_user(self): | |
| username = self.username_entry.get() | |
| password = self.password_entry.get() | |
| if self.db.authenticate(username, password): | |
| messagebox.showinfo("Success", "Authentication successful!") | |
| else: | |
| messagebox.showerror("Error", "Invalid credentials!") | |
| if __name__ == "__main__": | |
| app = UserAuthApp() | |
| app.mainloop() |