/
Roman88
/
contact_manager
Обзор
Документация
Войти
/
Roman88
/
contact_manager
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/controllers/auth_controller.py
100 строк
3 KB
Roman88
16-05
16 май 2026, 10:00
16 май 2026, 10:00
d98539b
Код
Авторство
О чём код?
from src.models.user import User from src.connection.connect import connect_db, close_db def register_user(login, password, confirm_password): """ Регистрация нового пользователя Возвращает: (success, message, user_id) """ # Подключаемся к БД connect_db() try: # 1. Проверка совпадения паролей if password != confirm_password: return False, "Пароли не совпадают", None # 2. Проверка длины пароля if len(password) < 6: return False, "Пароль должен содержать минимум 6 символов", None # 3. Проверка уникальности логина existing_user = User.get_or_none(User.login == login) if existing_user: return False, "Пользователь с таким логином уже существует", None # 4. Создание нового пользователя user = User() user.login = login user.set_password(password) user.save() return True, "Пользователь успешно зарегистрирован", user.id except Exception as e: return False, f"Ошибка регистрации: {str(e)}", None finally: close_db() def login_user(login, password): """ Аутентификация пользователя Возвращает: (success, message, user_id) """ # Подключаемся к БД connect_db() try: # 1. Поиск пользователя по логину user = User.get_or_none(User.login == login) if not user: return False, "Пользователь не найден", None # 2. Проверка пароля if user.check_password(password): return True, "Вход выполнен успешно", user.id else: return False, "Неверный пароль", None except Exception as e: return False, f"Ошибка входа: {str(e)}", None finally: close_db() def change_password(user_id, old_password, new_password): """ Смена пароля авторизованного пользователя Возвращает: (success, message) """ # Подключаемся к БД connect_db() try: # 1. Поиск пользователя по ID user = User.get_or_none(User.id == user_id) if not user: return False, "Пользователь не найден" # 2. Проверка старого пароля if not user.check_password(old_password): return False, "Неверный старый пароль" # 3. Проверка нового пароля if len(new_password) < 6: return False, "Новый пароль должен содержать минимум 6 символов" # 4. Установка нового пароля user.set_password(new_password) user.save() return True, "Пароль успешно изменен" except Exception as e: return False, f"Ошибка смены пароля: {str(e)}" finally: close_db()