teszt állományok áthelyezése és szelektálása
This commit is contained in:
70
tests/archive/patch_auth_login.py.old
Normal file
70
tests/archive/patch_auth_login.py.old
Normal file
@@ -0,0 +1,70 @@
|
||||
import re
|
||||
|
||||
with open("/opt/docker/dev/service_finder/backend/app/api/v1/endpoints/auth.py", "r") as f:
|
||||
content = f.read()
|
||||
|
||||
# Add Response to imports if not there
|
||||
if "from fastapi import APIRouter, Depends, HTTPException, status, Request, Form, Response" not in content:
|
||||
content = content.replace(
|
||||
"from fastapi import APIRouter, Depends, HTTPException, status, Request, Form",
|
||||
"from fastapi import APIRouter, Depends, HTTPException, status, Request, Form, Response"
|
||||
)
|
||||
|
||||
new_login = """
|
||||
@router.post("/login", response_model=Token)
|
||||
async def login(
|
||||
response: Response,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
form_data: OAuth2PasswordRequestForm = Depends(),
|
||||
remember_me: bool = Form(False)
|
||||
):
|
||||
\"\"\"
|
||||
Bejelentkezés remember_me opcióval.
|
||||
|
||||
A remember_me paramétert explicit Form mezőként kell elküldeni, mivel az
|
||||
OAuth2PasswordRequestForm nem támogatja alapból.
|
||||
\"\"\"
|
||||
user = await AuthService.authenticate(db, form_data.username, form_data.password)
|
||||
if not user:
|
||||
raise HTTPException(status_code=401, detail="Hibás adatok.")
|
||||
|
||||
ranks = await settings.get_db_setting(db, "rbac_rank_matrix", default=DEFAULT_RANK_MAP)
|
||||
role_name = user.role.value if hasattr(user.role, 'value') else str(user.role)
|
||||
role_key = role_name.upper() # A DEFAULT_RANK_MAP nagybetűs kulcsokat vár
|
||||
|
||||
token_data = {
|
||||
"sub": str(user.id),
|
||||
"role": role_name,
|
||||
"rank": ranks.get(role_key, 10),
|
||||
"scope_level": user.scope_level or "individual",
|
||||
"scope_id": str(user.scope_id) if user.scope_id else str(user.id)
|
||||
}
|
||||
|
||||
access, refresh = create_tokens(data=token_data, remember_me=remember_me)
|
||||
|
||||
# Kinyerjük a beállításokból, hogy meddig él a refresh token (itt is, vagy a create_tokens is ezt csinálja)
|
||||
# A SSoT szerint auth_remember_me_days = 30
|
||||
if remember_me:
|
||||
max_age_days = await config.get_setting(db, "auth_remember_me_days", default=30)
|
||||
else:
|
||||
max_age_days = await config.get_setting(db, "auth_refresh_default_days", default=1)
|
||||
|
||||
max_age_sec = int(max_age_days) * 24 * 60 * 60
|
||||
|
||||
response.set_cookie(
|
||||
key="refresh_token",
|
||||
value=refresh,
|
||||
httponly=True,
|
||||
secure=True, # Use Secure
|
||||
samesite="lax",
|
||||
max_age=max_age_sec
|
||||
)
|
||||
|
||||
return {"access_token": access, "refresh_token": refresh, "token_type": "bearer", "is_active": user.is_active}
|
||||
"""
|
||||
|
||||
pattern = r'@router\.post\("/login", response_model=Token\)\nasync def login\(.*?\):\n(?:.*?(?=@router\.post|class VerifyEmailRequest))'
|
||||
content = re.sub(pattern, new_login.strip() + "\n\n", content, flags=re.DOTALL)
|
||||
|
||||
with open("/opt/docker/dev/service_finder/backend/app/api/v1/endpoints/auth.py", "w") as f:
|
||||
f.write(content)
|
||||
Reference in New Issue
Block a user