Fix cookie auth for API endpoints and clean up navbar
This commit is contained in:
+4
-1
@@ -2,7 +2,7 @@ from datetime import datetime, timedelta, timezone
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
from jose import JWTError, jwt
|
from jose import JWTError, jwt
|
||||||
from passlib.context import CryptContext
|
from passlib.context import CryptContext
|
||||||
from fastapi import Depends, HTTPException, status
|
from fastapi import Depends, HTTPException, Request, status
|
||||||
from fastapi.security import OAuth2PasswordBearer
|
from fastapi.security import OAuth2PasswordBearer
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
from config import get_settings
|
from config import get_settings
|
||||||
@@ -50,9 +50,12 @@ def verify_token(token: str, token_type: str) -> Optional[dict]:
|
|||||||
|
|
||||||
|
|
||||||
def get_current_user(
|
def get_current_user(
|
||||||
|
request: Request,
|
||||||
token: Optional[str] = Depends(oauth2_scheme),
|
token: Optional[str] = Depends(oauth2_scheme),
|
||||||
db: Session = Depends(get_db),
|
db: Session = Depends(get_db),
|
||||||
) -> Optional[models.User]:
|
) -> Optional[models.User]:
|
||||||
|
if not token:
|
||||||
|
token = request.cookies.get("access_token")
|
||||||
if not token:
|
if not token:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_401_UNAUTHORIZED,
|
status_code=status.HTTP_401_UNAUTHORIZED,
|
||||||
|
|||||||
@@ -21,13 +21,15 @@
|
|||||||
<ul class="navbar-nav ms-auto align-items-center">
|
<ul class="navbar-nav ms-auto align-items-center">
|
||||||
{% if user.role == 'admin' %}
|
{% if user.role == 'admin' %}
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">Admin</a>
|
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">{{ user.username }}</a>
|
||||||
<ul class="dropdown-menu dropdown-menu-end">
|
<ul class="dropdown-menu dropdown-menu-end">
|
||||||
<li><a class="dropdown-item" href="/admin/users">Пользователи</a></li>
|
<li><a class="dropdown-item" href="/admin/users">Пользователи</a></li>
|
||||||
<li><a class="dropdown-item" href="/admin/settings">Настройки</a></li>
|
<li><a class="dropdown-item" href="/admin/settings">Настройки</a></li>
|
||||||
<li><a class="dropdown-item" href="/admin/audit">Аудит-лог</a></li>
|
<li><a class="dropdown-item" href="/admin/audit">Аудит-лог</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="nav-item"><span class="nav-link">{{ user.username }}</span></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li class="nav-item me-3">
|
<li class="nav-item me-3">
|
||||||
<a href="/notifications" class="nav-link position-relative">
|
<a href="/notifications" class="nav-link position-relative">
|
||||||
@@ -39,7 +41,6 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item"><span class="nav-link">{{ user.username }}</span></li>
|
|
||||||
<li class="nav-item"><a class="nav-link" href="/" id="logout-link">Выйти</a></li>
|
<li class="nav-item"><a class="nav-link" href="/" id="logout-link">Выйти</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user