Python GUI: Авторизация, регистрация и БД

Исправление ошибки в базе данных

Перед началом работы необходимо исправить ошибку, связанную с базой данных. После выполнения команд SQL необходимо выполнить commit для сохранения изменений. Пропущенный ранее commit приводил к неработоспособности добавления пользователей. Приложение теперь будет включать регистрацию, авторизацию и личный кабинет, поэтому переименуем его в itbrogerApp.

Реализация системы авторизации

Код функции pageAdd (регистрация), отвечающий за создание элементов интерфейса регистрации, помещаем в переменную PanelRegister. Это позволит легко переключаться между страницами регистрации и авторизации. Создадим аналогичную переменную PanelHouse для страницы авторизации. Изменим кнопку ButtonRec на ButtonHouse и переименуем функцию обработки нажатия кнопки с register на AuthUser. Кнопка ButtonHouse изначально будет неактивна; её активность будет зависеть от ввода данных пользователем.

Функция авторизации AuthUser

Функция AuthUser выполняет следующие действия:

  1. Подключается к базе данных.
  2. Создаёт курсор.
  3. Выполняет запрос SELECT к таблице users, выбирая пользователей с совпадающими логином и паролем.
  4. Использует cursor.fetchone() для получения одного результата (ожидается только один пользователь с заданными логином и паролем).
  5. Если пользователь найден (fetchone() возвращает не None), очищаются поля ввода, отображается сообщение об успешной авторизации, и данные пользователя выводятся в консоль (в дальнейшем это будет заменено на переход в личный кабинет).
  6. Если пользователь не найден (fetchone() возвращает None), отображается всплывающее сообщение об ошибке с помощью page.snackbar.

Добавление навигации

Для добавления навигации перед функцией pageAdd добавим следующий код:

page.navigation_bar = NavigationBar(destinations=[
    NavigationDestination(icon=..., title="Регистрация"),
    NavigationDestination(icon=..., title="Авторизация"),
    # ...будущая вкладка "Личный кабинет"
])

page.navigation_bar.on_change = navigate

Функция navigate обрабатывает событие изменения выбранного элемента навигации. Изначально она выводит в терминал индекс выбранного элемента. В дальнейшем, в зависимости от индекса, будет выполняться отображение соответствующей страницы (PanelRegister или PanelHouse). Функция navigate также выполняет очистку страницы с помощью page.clean() перед отображением новой страницы, чтобы избежать накопления элементов интерфейса.

В результате мы получили работающую систему регистрации и авторизации пользователей с использованием базы данных, а также добавили удобную навигацию между страницами регистрации, авторизации и (в будущем) личного кабинета. Теперь приложение позволяет регистрировать новых пользователей, авторизовываться и переключаться между страницами с помощью нижней навигационной панели.

Что будем искать? Например,программа