Fix startup and Gemini provider handling
This commit is contained in:
+20
-28
@@ -45,7 +45,7 @@ def require_admin(request: Request):
|
||||
|
||||
@router.get("/login", response_class=HTMLResponse)
|
||||
async def login_get(request: Request):
|
||||
return templates.TemplateResponse(request=request, name="login.html", context={"error": None})
|
||||
return templates.TemplateResponse("login.html", {"request": request, "error": None})
|
||||
|
||||
@router.post("/login", response_class=HTMLResponse)
|
||||
async def login_post(request: Request, username: str = Form(...), password: str = Form(...)):
|
||||
@@ -54,9 +54,8 @@ async def login_post(request: Request, username: str = Form(...), password: str
|
||||
|
||||
if is_login_blocked(username, ip):
|
||||
return templates.TemplateResponse(
|
||||
request=request,
|
||||
name="login.html",
|
||||
context={"error": "تم حجب محاولات تسجيل الدخول مؤقتاً. حاول بعد 15 دقيقة."},
|
||||
"login.html",
|
||||
{"request": request, "error": "تم حجب محاولات تسجيل الدخول مؤقتاً. حاول بعد 15 دقيقة."},
|
||||
status_code=429,
|
||||
)
|
||||
|
||||
@@ -64,9 +63,8 @@ async def login_post(request: Request, username: str = Form(...), password: str
|
||||
if not user or not verify_password(user["password_hash"], password):
|
||||
record_login_attempt(username, ip, success=False)
|
||||
return templates.TemplateResponse(
|
||||
request=request,
|
||||
name="login.html",
|
||||
context={"error": "Invalid username or password"},
|
||||
"login.html",
|
||||
{"request": request, "error": "Invalid username or password"},
|
||||
status_code=401,
|
||||
)
|
||||
|
||||
@@ -109,9 +107,8 @@ async def logout(request: Request):
|
||||
async def users_list(request: Request, current=Depends(require_admin)):
|
||||
users = get_all_users()
|
||||
return templates.TemplateResponse(
|
||||
request=request,
|
||||
name="users.html",
|
||||
context={"users": users, "current_user": current},
|
||||
"users.html",
|
||||
{"request": request, "users": users, "current_user": current},
|
||||
)
|
||||
|
||||
@router.post("/users/create")
|
||||
@@ -128,16 +125,14 @@ async def add_user(
|
||||
if len(password) < 8:
|
||||
users = get_all_users()
|
||||
return templates.TemplateResponse(
|
||||
request=request,
|
||||
name="users.html",
|
||||
context={"users": users, "current_user": current, "error": "Password must be at least 8 characters."},
|
||||
"users.html",
|
||||
{"request": request, "users": users, "current_user": current, "error": "Password must be at least 8 characters."},
|
||||
)
|
||||
if get_user_by_username(username):
|
||||
users = get_all_users()
|
||||
return templates.TemplateResponse(
|
||||
request=request,
|
||||
name="users.html",
|
||||
context={"users": users, "current_user": current, "error": f"User '{username}' already exists."},
|
||||
"users.html",
|
||||
{"request": request, "users": users, "current_user": current, "error": f"User '{username}' already exists."},
|
||||
)
|
||||
create_user(username, password, role=role)
|
||||
return RedirectResponse(url="/auth/users", status_code=status.HTTP_303_SEE_OTHER)
|
||||
@@ -147,9 +142,8 @@ async def remove_user(request: Request, user_id: int, current=Depends(require_ad
|
||||
if user_id == current["user_id"]:
|
||||
users = get_all_users()
|
||||
return templates.TemplateResponse(
|
||||
request=request,
|
||||
name="users.html",
|
||||
context={"users": users, "current_user": current, "error": "لا يمكنك حذف حسابك الخاص."},
|
||||
"users.html",
|
||||
{"request": request, "users": users, "current_user": current, "error": "لا يمكنك حذف حسابك الخاص."},
|
||||
status_code=400,
|
||||
)
|
||||
# Prevent removing the last admin
|
||||
@@ -157,9 +151,8 @@ async def remove_user(request: Request, user_id: int, current=Depends(require_ad
|
||||
if target and target["role"] == "admin" and count_admins() <= 1:
|
||||
users = get_all_users()
|
||||
return templates.TemplateResponse(
|
||||
request=request,
|
||||
name="users.html",
|
||||
context={"users": users, "current_user": current, "error": "لا يمكن حذف آخر مسؤول في النظام."},
|
||||
"users.html",
|
||||
{"request": request, "users": users, "current_user": current, "error": "لا يمكن حذف آخر مسؤول في النظام."},
|
||||
status_code=400,
|
||||
)
|
||||
delete_user(user_id)
|
||||
@@ -180,9 +173,8 @@ async def change_role(
|
||||
if target and target["role"] == "admin" and role != "admin" and count_admins() <= 1:
|
||||
users = get_all_users()
|
||||
return templates.TemplateResponse(
|
||||
request=request,
|
||||
name="users.html",
|
||||
context={"users": users, "current_user": current, "error": "لا يمكن تخفيض رتبة آخر مسؤول."},
|
||||
"users.html",
|
||||
{"request": request, "users": users, "current_user": current, "error": "لا يمكن تخفيض رتبة آخر مسؤول."},
|
||||
status_code=400,
|
||||
)
|
||||
set_user_role(user_id, role)
|
||||
@@ -196,9 +188,9 @@ async def backup_db(request: Request, current=Depends(require_admin)):
|
||||
except Exception as e:
|
||||
msg = f"Backup failed: {str(e)}"
|
||||
return templates.TemplateResponse(
|
||||
request=request,
|
||||
name="users.html",
|
||||
context={
|
||||
"users.html",
|
||||
{
|
||||
"request": request,
|
||||
"users": get_all_users(),
|
||||
"current_user": current,
|
||||
"backup_msg": msg,
|
||||
|
||||
Reference in New Issue
Block a user