Загрузка данных


from tkinter import *
from tkinter import messagebox

from database import Database


def login():
    db = Database()

    user = db.auth(login_entry.get(), password_entry.get())

    if user:
        messagebox.showinfo(
            "Успех",
            f"Здравствуйте, {user.login}\nРоль: {user.role}"
        )

        root.destroy()

        main_window = Tk()
        main_window.title("Главное окно")
        main_window.geometry("400x300")

        Label(
            main_window,
            text=f"Пользователь: {user.login}"
        ).pack(pady=20)

        main_window.mainloop()

    else:
        messagebox.showerror(
            "Ошибка",
            "Неверный логин или пароль"
        )


def create_window():
    global root
    global login_entry
    global password_entry

    root = Tk()
    root.title("Авторизация - ООО Обувь")
    root.geometry("300x250")

    Label(root, text="Логин:").pack(pady=5)

    login_entry = Entry(root)
    login_entry.pack()

    Label(root, text="Пароль:").pack(pady=5)

    password_entry = Entry(root, show="*")
    password_entry.pack()

    Button(
        root,
        text="Войти",
        command=login
    ).pack(pady=10)

    Button(
        root,
        text="Войти как гость"
    ).pack()

    root.mainloop()

import main_app

main_app.create_window()


from dataclasses import dataclass

@dataclass
class User:
    id: int
    login: str
    role: str


import pyodbc
from models import User


class Database:
    def __init__(self):
        self.connection_string = (
            "DRIVER={ODBC Driver 18 for SQL Server};"
            "SERVER=REDBOX\\SQLEXPRESS;"
            "DATABASE=Demoexam;"
            "Trusted_Connection=yes;"
            "TrustServerCertificate=yes;"
        )

    def connect(self):
        return pyodbc.connect(self.connection_string)

    def auth(self, login, password):
        conn = self.connect()
        cursor = conn.cursor()

        cursor.execute(
            "SELECT id, login, role "
            "FROM Users "
            "WHERE login=? AND password=?",
            login,
            password
        )

        row = cursor.fetchone()

        if row:
            return User(row.id, row.login, row.role)

        return None