Spaces:
Runtime error
Runtime error
Admin pages iterations
Browse files- app/main.py +28 -4
app/main.py
CHANGED
|
@@ -1,8 +1,9 @@
|
|
| 1 |
-
from fastapi import FastAPI, Request
|
| 2 |
from fastapi.middleware.cors import CORSMiddleware
|
| 3 |
from fastapi.staticfiles import StaticFiles
|
| 4 |
-
from fastapi.responses import FileResponse
|
| 5 |
-
|
|
|
|
| 6 |
|
| 7 |
app = FastAPI()
|
| 8 |
|
|
@@ -24,4 +25,27 @@ templates = Jinja2Templates(directory="app/admin/templates")
|
|
| 24 |
|
| 25 |
@app.get("/")
|
| 26 |
async def get_admin_login(request: Request):
|
| 27 |
-
return templates.TemplateResponse("admin_login.html", {"request": request})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from fastapi import FastAPI, Request, Form, File, UploadFile, Depends
|
| 2 |
from fastapi.middleware.cors import CORSMiddleware
|
| 3 |
from fastapi.staticfiles import StaticFiles
|
| 4 |
+
from fastapi.responses import FileResponse, HTMLResponse, RedirectResponse
|
| 5 |
+
from fastapi.templating import Jinja2Templates
|
| 6 |
+
from .admin import admin_functions as admin
|
| 7 |
|
| 8 |
app = FastAPI()
|
| 9 |
|
|
|
|
| 25 |
|
| 26 |
@app.get("/")
|
| 27 |
async def get_admin_login(request: Request):
|
| 28 |
+
return templates.TemplateResponse("admin_login.html", {"request": request})
|
| 29 |
+
|
| 30 |
+
# Admin Login Handler
|
| 31 |
+
@app.post("/admin/login", response_class=HTMLResponse)
|
| 32 |
+
async def handle_admin_login(request: Request, password: str = Form(...)):
|
| 33 |
+
# Assume get_admin_password_hash fetches the admin's password hash securely
|
| 34 |
+
stored_password_hash = "securely_stored_password_hash"
|
| 35 |
+
if admin.verify_admin_password(password, stored_password_hash):
|
| 36 |
+
# Redirect to user registration page upon successful login
|
| 37 |
+
return RedirectResponse(url="/admin/register_user", status_code=303)
|
| 38 |
+
else:
|
| 39 |
+
# Reload login page with error message
|
| 40 |
+
return templates.TemplateResponse("admin_login.html", {"request": request, "error": "Invalid password"})
|
| 41 |
+
|
| 42 |
+
# User Registration Handler
|
| 43 |
+
@app.post("/admin/register_user", response_class=HTMLResponse)
|
| 44 |
+
async def handle_user_registration(request: Request, email: str = Form(...), name: str = Form(...), role: str = Form(...), file: UploadFile = File(...)):
|
| 45 |
+
user_id = await admin.register_user(email, name, role, file)
|
| 46 |
+
if user_id:
|
| 47 |
+
# Redirect or display a success message
|
| 48 |
+
return templates.TemplateResponse("registration_success.html", {"request": request})
|
| 49 |
+
else:
|
| 50 |
+
# Reload registration page with error message
|
| 51 |
+
return templates.TemplateResponse("user_registration.html", {"request": request, "error": "Registration failed"})
|