fix: allow dev guest to switch to authenticated account
This commit is contained in:
@@ -189,7 +189,11 @@
|
|||||||
<span class="header-user-role">{{ user_info.role|upper }} {% if user_info.unit_name %} | {{ user_info.unit_name }}{% endif %}</span>
|
<span class="header-user-role">{{ user_info.role|upper }} {% if user_info.unit_name %} | {{ user_info.unit_name }}{% endif %}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
{% if user_info.role == 'dev_guest' %}
|
||||||
|
<a href="{{ url_for('login') }}" class="header-action-btn">🔐 Đăng nhập Admin/Analyzer</a>
|
||||||
|
{% else %}
|
||||||
<a href="{{ url_for('logout') }}" class="header-action-btn">🚪 Đăng xuất</a>
|
<a href="{{ url_for('logout') }}" class="header-action-btn">🚪 Đăng xuất</a>
|
||||||
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="header-guest">
|
<div class="header-guest">
|
||||||
👤 Khách
|
👤 Khách
|
||||||
|
|||||||
@@ -845,9 +845,9 @@ def get_current_user(credentials: HTTPBasicCredentials = Depends(security)) -> O
|
|||||||
|
|
||||||
@app.get("/login", response_class=HTMLResponse, name="login")
|
@app.get("/login", response_class=HTMLResponse, name="login")
|
||||||
async def login_page(request: Request, next: str = "/"):
|
async def login_page(request: Request, next: str = "/"):
|
||||||
"""Trang đăng nhập — nếu đã login rồi thì redirect ngay"""
|
"""Trang đăng nhập; dev_guest vẫn được phép chuyển sang tài khoản thật."""
|
||||||
# Nếu đã đăng nhập thì không cần vào trang login nữa
|
current_user = get_session_user(request)
|
||||||
if get_session_user(request):
|
if current_user and current_user.get("role") != "dev_guest":
|
||||||
return RedirectResponse(url=next, status_code=303)
|
return RedirectResponse(url=next, status_code=303)
|
||||||
return templates.TemplateResponse(
|
return templates.TemplateResponse(
|
||||||
"login.html",
|
"login.html",
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
ROOT = Path(__file__).resolve().parents[1]
|
||||||
|
APP = (ROOT / "app" / "web_app_fastapi.py").read_text(encoding="utf-8")
|
||||||
|
HEADER = (ROOT / "app" / "templates" / "header.html").read_text(encoding="utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
def test_dev_guest_is_allowed_to_open_login_page():
|
||||||
|
assert 'current_user.get("role") != "dev_guest"' in APP
|
||||||
|
|
||||||
|
|
||||||
|
def test_dev_guest_header_offers_real_login_instead_of_logout():
|
||||||
|
assert "user_info.role == 'dev_guest'" in HEADER
|
||||||
|
assert "url_for('login')" in HEADER
|
||||||
Reference in New Issue
Block a user