import sqlite3 from fastapi import FastAPI from fastapi import Request, Form from fastapi.responses import HTMLResponse, RedirectResponse DB_PATH = "./data/database.db" conn = sqlite3.connect(DB_PATH) cursor = conn.cursor() cursor.execute( "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, login TEXT NOT NULL UNIQUE, password TEXT NOT NULL)" ) app = FastAPI( docs_url=None, # Disable Swagger UI redoc_url=None, # Disable ReDoc openapi_url=None, # Disable OpenAPI JSON schema ) STYLES = """ """ @app.get("/register", response_class=HTMLResponse) async def register_form(): return f"""
Уже есть аккаунт? Войти
""" @app.post("/register") async def register(login: str = Form(...), password: str = Form(...)): try: cursor.execute( f"INSERT INTO users (login, password) VALUES ('{login}', '{password}')" ) conn.commit() response = RedirectResponse(url="/welcome", status_code=302) response.set_cookie("login", login) response.set_cookie("password", password) return response except sqlite3.IntegrityError: return HTMLResponse( f"""Нет аккаунта? Зарегистрироваться
""" @app.post("/login") async def login(login: str = Form(...), password: str = Form(...)): cursor.execute( f"SELECT * FROM users WHERE login='{login}' AND password='{password}'" ) user = cursor.fetchall() if user: response = RedirectResponse(url="/welcome", status_code=302) response.set_cookie("login", login) response.set_cookie("password", password) return response else: return HTMLResponse( f"""