fix: Add get_current_user_optional for public endpoints
Some checks failed
Deploy Fediversion / deploy (push) Failing after 1s

This commit is contained in:
fullsizemalt 2025-12-28 17:06:44 -08:00
parent fae5349f9c
commit 0bdb7ca8f6

View file

@ -59,3 +59,26 @@ async def get_current_superuser(current_user: User = Depends(get_current_user)):
detail="The user doesn't have enough privileges" detail="The user doesn't have enough privileges"
) )
return current_user return current_user
# Optional OAuth scheme that doesn't require auth
oauth2_scheme_optional = OAuth2PasswordBearer(tokenUrl="auth/token", auto_error=False)
async def get_current_user_optional(
token: Optional[str] = Depends(oauth2_scheme_optional),
session: Session = Depends(get_session)
) -> Optional[User]:
"""Get current user if authenticated, otherwise return None (for public endpoints)"""
if not token:
return None
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
email: str = payload.get("sub")
if email is None:
return None
except JWTError:
return None
user = session.exec(select(User).where(User.email == email)).first()
return user