Add failed login & IP to log (#2365)

* Add failed login & IP to log

* Small change for human readability/intuitiveness
This commit is contained in:
Jacob Corn 2023-05-06 00:15:55 +02:00 committed by GitHub
parent a2e69b5565
commit 2e43b51882
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,12 +1,12 @@
from datetime import timedelta
from fastapi import APIRouter, Depends, Form, status
from fastapi import APIRouter, Depends, Form, Request, status
from fastapi.exceptions import HTTPException
from fastapi.security import OAuth2PasswordRequestForm
from pydantic import BaseModel
from sqlalchemy.orm.session import Session
from mealie.core import security
from mealie.core import root_logger, security
from mealie.core.dependencies import get_current_user
from mealie.core.security import authenticate_user
from mealie.core.security.security import UserLockedOut
@ -16,6 +16,7 @@ from mealie.schema.user import PrivateUser
public_router = APIRouter(tags=["Users: Authentication"])
user_router = UserAPIRouter(tags=["Users: Authentication"])
logger = root_logger.get_logger("auth")
class CustomOAuth2Form(OAuth2PasswordRequestForm):
@ -48,16 +49,18 @@ class MealieAuthToken(BaseModel):
@public_router.post("/token")
def get_token(data: CustomOAuth2Form = Depends(), session: Session = Depends(generate_session)):
def get_token(request: Request, data: CustomOAuth2Form = Depends(), session: Session = Depends(generate_session)):
email = data.username
password = data.password
try:
user = authenticate_user(session, email, password) # type: ignore
except UserLockedOut as e:
logger.error(f"User is locked out from {request.client.host}")
raise HTTPException(status_code=status.HTTP_423_LOCKED, detail="User is locked out") from e
if not user:
logger.error(f"Incorrect username or password from {request.client.host}")
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
)