/
developer_atatanoff
/
simple_auth_fastapi
Обзор
Документация
Войти
/
developer_atatanoff
/
simple_auth_fastapi
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
manage.py
125 строк
4 KB
Alex Tata
Добавил алембик и менедж
03 авг 2026, 19:33
03 авг 2026, 19:33
6413f20
Код
Авторство
О чём код?
#!/usr/bin/env python3 import sys from pathlib import Path PROJECT_ROOT = Path(__file__).resolve().parent sys.path.insert(0, str(PROJECT_ROOT)) from passlib.context import CryptContext from sqlalchemy.orm import Session from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from auth.models import Users from config.settings import settings sync_engine = create_engine( settings.DB_SYNC, echo=False, pool_size=20, max_overflow=40, pool_pre_ping=True, ) SessionLocal = sessionmaker( bind=sync_engine, expire_on_commit=False, autoflush=False, ) pwd_context = CryptContext(schemes=["argon2"], deprecated="auto") def get_user_by_username(db: Session, username: str) -> Users | None: return db.query(Users).filter(Users.username == username).first() def create_user(db: Session, username: str, is_superuser: bool, password: str) -> Users: existing = get_user_by_username(db, username) if existing is not None: raise ValueError(f"User '{username}' already exists") user = Users( username=username, email=None, password=pwd_context.hash(password), is_superuser=is_superuser, ) db.add(user) db.commit() db.refresh(user) return user def cmd_create_superuser(username: str, password: str) -> None: with SessionLocal() as db: create_user(db, username, True, password) print(f"Superuser '{username}' created.") print(f"Generated password: {password}") def cmd_create_user(username: str, password: str) -> None: with SessionLocal() as db: create_user(db, username, False, password) print(f"User '{username}' created.") print(f"Generated password: {password}") def cmd_change_password(username: str, password: str) -> None: with SessionLocal() as db: user = get_user_by_username(db, username) if user is None: raise ValueError(f"User '{username}' not found") user.password = pwd_context.hash(password) db.commit() print(f"Password for '{username}' changed.") print(f"Generated password: {password}") def cmd_set_password(username: str, password: str) -> None: with SessionLocal() as db: user = get_user_by_username(db, username) if user is None: raise ValueError(f"User '{username}' not found") user.password = pwd_context.hash(password) db.commit() print(f"Password for '{username}' has been set.") def print_usage() -> None: print( "Usage:\n" " python manage.py create superuser <username> <password>\n" " python manage.py create user <username> <password>\n" " python manage.py change password <username> <password>\n" " python manage.py set password <username> <password>" ) def main() -> None: args = sys.argv[1:] try: if len(args) == 4 and args[0] == "create" and args[1] == "superuser": cmd_create_superuser(args[2], args[3]) elif len(args) == 4 and args[0] == "create" and args[1] == "user": cmd_create_user(args[2], args[3]) elif len(args) == 4 and args[0] == "change" and args[1] == "password": cmd_change_password(args[2], args[3]) elif len(args) == 4 and args[0] == "set" and args[1] == "password": cmd_set_password(args[2], args[3]) else: print_usage() sys.exit(1) except ValueError as exc: print(f"Error: {exc}") sys.exit(1) except Exception as exc: print(f"Error: {exc}") sys.exit(1) if __name__ == "__main__": main()