diff --git a/src/app.py b/src/app.py index 194b367..79a8aee 100644 --- a/src/app.py +++ b/src/app.py @@ -1,11 +1,13 @@ 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, login TEXT NOT NULL UNIQUE, password TEXT NOT NULL)") +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 @@ -14,6 +16,116 @@ app = FastAPI( ) -@app.get("/") +@app.get("/register", response_class=HTMLResponse) +async def register_form(): + return """ + +
Уже есть аккаунт? Войти
+ + + """ + +@app.post("/register") +async def register(login: str = Form(...), password: str = Form(...)): + try: + cursor.execute("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(""" + +Нет аккаунта? Зарегистрироваться
+ + + """ + +@app.post("/login") +async def login(login: str = Form(...), password: str = Form(...)): + cursor.execute("SELECT * FROM users WHERE login=? AND password=?", (login, password)) + user = cursor.fetchone() + if user: + response = RedirectResponse(url="/welcome", status_code=302) + response.set_cookie("login", login) + response.set_cookie("password", password) + return response + else: + return HTMLResponse(""" + +