return 401 for login failures

This commit is contained in:
Blake Blackshear 2024-12-10 07:06:05 -06:00
parent 0b9c4c18dd
commit b8c6b3ba2c
3 changed files with 8 additions and 5 deletions

View File

@ -329,7 +329,7 @@ def login(request: Request, body: AppPostLoginBody):
try: try:
db_user: User = User.get_by_id(user) db_user: User = User.get_by_id(user)
except DoesNotExist: except DoesNotExist:
return JSONResponse(content={"message": "Login failed"}, status_code=400) return JSONResponse(content={"message": "Login failed"}, status_code=401)
password_hash = db_user.password_hash password_hash = db_user.password_hash
if verify_password(password, password_hash): if verify_password(password, password_hash):
@ -340,7 +340,7 @@ def login(request: Request, body: AppPostLoginBody):
response, JWT_COOKIE_NAME, encoded_jwt, expiration, JWT_COOKIE_SECURE response, JWT_COOKIE_NAME, encoded_jwt, expiration, JWT_COOKIE_SECURE
) )
return response return response
return JSONResponse(content={"message": "Login failed"}, status_code=400) return JSONResponse(content={"message": "Login failed"}, status_code=401)
@router.get("/users") @router.get("/users")

View File

@ -29,8 +29,11 @@ export function ApiProvider({ children, options }: ApiProviderType) {
error.response && error.response &&
[401, 302, 307].includes(error.response.status) [401, 302, 307].includes(error.response.status)
) { ) {
window.location.href = // redirect to the login page if not already there
error.response.headers.get("location") ?? "login"; const loginPage = error.response.headers.get("location") ?? "login";
if (window.location.href !== loginPage) {
window.location.href = loginPage;
}
} }
}, },
...options, ...options,

View File

@ -63,7 +63,7 @@ export function UserAuthForm({ className, ...props }: UserAuthFormProps) {
toast.error("Exceeded rate limit. Try again later.", { toast.error("Exceeded rate limit. Try again later.", {
position: "top-center", position: "top-center",
}); });
} else if (err.response?.status === 400) { } else if (err.response?.status === 401) {
toast.error("Login failed", { toast.error("Login failed", {
position: "top-center", position: "top-center",
}); });