Spaces:
Sleeping
Sleeping
deploy at 2024-08-25 08:30:53.354677
Browse files
main.py
CHANGED
|
@@ -121,13 +121,7 @@ login_redir = RedirectResponse("/login", status_code=303)
|
|
| 121 |
|
| 122 |
|
| 123 |
def user_auth_before(req, sess):
|
| 124 |
-
|
| 125 |
-
# to any handler which requests it, and can not be injected
|
| 126 |
-
# by the user using query params, cookies, etc, so it should
|
| 127 |
-
# be secure to use.
|
| 128 |
-
print(f"Session Data before route: {sess}")
|
| 129 |
-
auth = req.scope["auth"] = sess.get("auth", None)
|
| 130 |
-
|
| 131 |
|
| 132 |
|
| 133 |
spinner_css = Style("""
|
|
@@ -184,24 +178,15 @@ class DebugSessionMiddleware(SessionMiddleware):
|
|
| 184 |
# Generate a secure secret key
|
| 185 |
SECRET_KEY = secrets.token_urlsafe(32)
|
| 186 |
|
| 187 |
-
# Custom authentication backend
|
| 188 |
-
class SimpleAuthBackend(AuthenticationBackend):
|
| 189 |
-
async def authenticate(self, request):
|
| 190 |
-
if "auth" not in request.session:
|
| 191 |
-
return None
|
| 192 |
-
return AuthCredentials(["authenticated"]), SimpleUser("admin")
|
| 193 |
-
|
| 194 |
-
|
| 195 |
# Modify the middleware setup
|
| 196 |
middlewares = [
|
| 197 |
Middleware(
|
| 198 |
SessionMiddleware,
|
| 199 |
secret_key=SECRET_KEY,
|
| 200 |
max_age=3600,
|
| 201 |
-
same_site='
|
| 202 |
-
https_only=
|
| 203 |
),
|
| 204 |
-
Middleware(AuthenticationMiddleware, backend=SimpleAuthBackend()),
|
| 205 |
]
|
| 206 |
|
| 207 |
bware = Beforeware(
|
|
@@ -211,24 +196,15 @@ bware = Beforeware(
|
|
| 211 |
r"/static/.*",
|
| 212 |
r".*\.css",
|
| 213 |
r".*\.js",
|
| 214 |
-
"/",
|
| 215 |
-
"/login",
|
| 216 |
-
"/search",
|
| 217 |
-
"/document/.*",
|
| 218 |
-
"/expand/.*",
|
| 219 |
-
"/source",
|
| 220 |
-
"/about",
|
| 221 |
-
"/admin",
|
| 222 |
],
|
| 223 |
)
|
| 224 |
|
| 225 |
app, rt = fast_app(
|
| 226 |
-
|
| 227 |
live=DEV_MODE,
|
| 228 |
hdrs=headers,
|
| 229 |
middleware=middlewares,
|
| 230 |
key_fname=sess_key_path,
|
| 231 |
-
same_site="None",
|
| 232 |
)
|
| 233 |
|
| 234 |
# Add this function for debugging
|
|
@@ -472,10 +448,10 @@ async def login(request: Request):
|
|
| 472 |
# Set "set-cookie" in header
|
| 473 |
response.set_cookie(
|
| 474 |
"session",
|
| 475 |
-
request.session
|
| 476 |
max_age=3600,
|
| 477 |
httponly=False,
|
| 478 |
-
samesite='none', # Try '
|
| 479 |
secure=True, # Set to True if your site uses HTTPS
|
| 480 |
)
|
| 481 |
return response
|
|
@@ -685,8 +661,9 @@ def download_csv(request: Request):
|
|
| 685 |
|
| 686 |
@app.route("/admin")
|
| 687 |
async def admin(request: Request):
|
| 688 |
-
auth = request.
|
| 689 |
-
if auth
|
|
|
|
| 690 |
return RedirectResponse("/login", status_code=303)
|
| 691 |
|
| 692 |
page = int(request.query_params.get("page", 1))
|
|
@@ -765,7 +742,7 @@ async def admin(request: Request):
|
|
| 765 |
|
| 766 |
return (
|
| 767 |
Title("Admin"),
|
| 768 |
-
get_navbar(
|
| 769 |
Main(
|
| 770 |
Div(
|
| 771 |
A(
|
|
|
|
| 121 |
|
| 122 |
|
| 123 |
def user_auth_before(req, sess):
|
| 124 |
+
auth = req.scope["auth"] = sess.get("auth", False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
|
| 126 |
|
| 127 |
spinner_css = Style("""
|
|
|
|
| 178 |
# Generate a secure secret key
|
| 179 |
SECRET_KEY = secrets.token_urlsafe(32)
|
| 180 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 181 |
# Modify the middleware setup
|
| 182 |
middlewares = [
|
| 183 |
Middleware(
|
| 184 |
SessionMiddleware,
|
| 185 |
secret_key=SECRET_KEY,
|
| 186 |
max_age=3600,
|
| 187 |
+
same_site='lax', # Try 'Lax' if 'None' doesn't work
|
| 188 |
+
https_only=True, # Set to True if your site uses HTTPS
|
| 189 |
),
|
|
|
|
| 190 |
]
|
| 191 |
|
| 192 |
bware = Beforeware(
|
|
|
|
| 196 |
r"/static/.*",
|
| 197 |
r".*\.css",
|
| 198 |
r".*\.js",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 199 |
],
|
| 200 |
)
|
| 201 |
|
| 202 |
app, rt = fast_app(
|
| 203 |
+
before=bware,
|
| 204 |
live=DEV_MODE,
|
| 205 |
hdrs=headers,
|
| 206 |
middleware=middlewares,
|
| 207 |
key_fname=sess_key_path,
|
|
|
|
| 208 |
)
|
| 209 |
|
| 210 |
# Add this function for debugging
|
|
|
|
| 448 |
# Set "set-cookie" in header
|
| 449 |
response.set_cookie(
|
| 450 |
"session",
|
| 451 |
+
request.session,
|
| 452 |
max_age=3600,
|
| 453 |
httponly=False,
|
| 454 |
+
samesite='none', # Try 'lax' if 'none' doesn't work
|
| 455 |
secure=True, # Set to True if your site uses HTTPS
|
| 456 |
)
|
| 457 |
return response
|
|
|
|
| 661 |
|
| 662 |
@app.route("/admin")
|
| 663 |
async def admin(request: Request):
|
| 664 |
+
auth = request.session.get("auth", False)
|
| 665 |
+
if not auth:
|
| 666 |
+
print(f"Not authenticated: {auth}")
|
| 667 |
return RedirectResponse("/login", status_code=303)
|
| 668 |
|
| 669 |
page = int(request.query_params.get("page", 1))
|
|
|
|
| 742 |
|
| 743 |
return (
|
| 744 |
Title("Admin"),
|
| 745 |
+
get_navbar(auth),
|
| 746 |
Main(
|
| 747 |
Div(
|
| 748 |
A(
|