{"record":{"id":"4c71e393d2d6b4f0","repo":"HKUDS/DeepTutor","slug":"incorrect-email-or-password","errorCode":null,"errorMessage":"Incorrect email or password","messagePattern":"Incorrect email or password","errorType":"http","errorClass":"HTTPException","httpStatus":401,"severity":"error","filePath":"deeptutor/api/routers/auth.py","lineNumber":447,"sourceCode":"        username=payload.username if payload else None,\n        role=payload.role if payload else None,\n        is_admin=payload.role == \"admin\" if payload else False,\n        avatar=avatar,\n    )\n\n\n@router.post(\"/login\")\nasync def login(body: LoginRequest, response: Response) -> dict:\n    \"\"\"Validate credentials and set a JWT cookie.\"\"\"\n    if not AUTH_ENABLED:\n        return {\"ok\": True, \"message\": \"Auth is disabled — no login required.\"}\n\n    if POCKETBASE_ENABLED:\n        # PocketBase mode: email = username field for backwards-compat with the\n        # existing LoginRequest schema; users can pass their email as \"username\".\n        pb_result = authenticate_pb(body.username, body.password)\n        if not pb_result:\n            raise HTTPException(\n                status_code=status.HTTP_401_UNAUTHORIZED,\n                detail=\"Incorrect email or password\",\n            )\n        payload, pb_token = pb_result\n        response.set_cookie(value=pb_token, max_age=_COOKIE_MAX_AGE, **_cookie_attrs())\n        logger.info(f\"User '{payload.username}' logged in via PocketBase (role={payload.role!r})\")\n        return {\n            \"ok\": True,\n            \"user_id\": payload.user_id,\n            \"username\": payload.username,\n            \"role\": payload.role,\n            \"is_admin\": payload.role == \"admin\",\n        }\n\n    # Standard JWT + bcrypt mode\n    result = authenticate(body.username, body.password)\n    if not result:\n        raise HTTPException(","sourceCodeStart":429,"sourceCodeEnd":465,"githubUrl":"https://github.com/HKUDS/DeepTutor/blob/3e82f130422a813cdd73c10b21a44e9325f5821a/deeptutor/api/routers/auth.py#L429-L465","documentation":"Error \"Incorrect email or password\" thrown in HKUDS/DeepTutor.","triggerScenarios":"Thrown at deeptutor/api/routers/auth.py:447 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3e82f130422a813cdd73c10b21a44e9325f5821a","analyzedAt":"2026-08-27T06:57:25.364Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}