Spaces:
Sleeping
Sleeping
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"})
|