From 94c80aec57bad42f1e5cc2cd8216d56114b5ac5e Mon Sep 17 00:00:00 2001 From: Taha Yassine Kraiem Date: Thu, 24 Feb 2022 22:20:16 +0100 Subject: [PATCH 1/2] feat(api): added JWT auth logs on failure --- api/auth/auth_jwt.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/api/auth/auth_jwt.py b/api/auth/auth_jwt.py index bf6c1901b..1ac8d5d79 100644 --- a/api/auth/auth_jwt.py +++ b/api/auth/auth_jwt.py @@ -23,9 +23,26 @@ class JWTAuth(HTTPBearer): or jwt_payload.get("iat") is None or jwt_payload.get("aud") is None \ or not users.auth_exists(user_id=jwt_payload["userId"], tenant_id=jwt_payload["tenantId"], jwt_iat=jwt_payload["iat"], jwt_aud=jwt_payload["aud"]): + print("JWTAuth: Token issue") + if jwt_payload is not None: + print(jwt_payload) + print(f"JWTAuth: user_id={jwt_payload.get('userId')} tenant_id={jwt_payload.get('tenantId')}") + if jwt_payload is None: + print("JWTAuth: jwt_payload is None") + print(credentials.scheme + " " + credentials.credentials) + if jwt_payload is not None and jwt_payload.get("iat") is None: + print("JWTAuth: iat is None") + if jwt_payload is not None and jwt_payload.get("aud") is None: + print("JWTAuth: aud is None") + if jwt_payload is not None and \ + not users.auth_exists(user_id=jwt_payload["userId"], tenant_id=jwt_payload["tenantId"], + jwt_iat=jwt_payload["iat"], jwt_aud=jwt_payload["aud"]): + print("JWTAuth: not users.auth_exists") + raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Invalid token or expired token.") user = users.get(user_id=jwt_payload["userId"], tenant_id=jwt_payload["tenantId"]) if user is None: + print("JWTAuth: User not found.") raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="User not found.") jwt_payload["authorizer_identity"] = "jwt" print(jwt_payload) @@ -36,4 +53,5 @@ class JWTAuth(HTTPBearer): return request.state.currentContext else: + print("JWTAuth: Invalid authorization code.") raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Invalid authorization code.") From 31137dd0012754a93d80ecaf09d0c3531349454a Mon Sep 17 00:00:00 2001 From: Shekar Siri Date: Thu, 24 Feb 2022 23:07:27 +0100 Subject: [PATCH 2/2] fix(ui) - errors api call --- .../components/Alerts/Notifications/Notifications.js | 5 ++++- .../app/components/shared/ErrorsBadge/ErrorsBadge.js | 10 +++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/frontend/app/components/Alerts/Notifications/Notifications.js b/frontend/app/components/Alerts/Notifications/Notifications.js index 72aa8db8d..deb14b640 100644 --- a/frontend/app/components/Alerts/Notifications/Notifications.js +++ b/frontend/app/components/Alerts/Notifications/Notifications.js @@ -18,7 +18,10 @@ class Notifications extends React.Component { constructor(props) { super(props); - props.fetchList(); + setTimeout(() => { + props.fetchList(); + }, 1000); + setInterval(() => { props.fetchList(); }, AUTOREFRESH_INTERVAL); diff --git a/frontend/app/components/shared/ErrorsBadge/ErrorsBadge.js b/frontend/app/components/shared/ErrorsBadge/ErrorsBadge.js index 073d252d8..74700eaf5 100644 --- a/frontend/app/components/shared/ErrorsBadge/ErrorsBadge.js +++ b/frontend/app/components/shared/ErrorsBadge/ErrorsBadge.js @@ -9,16 +9,19 @@ import { const AUTOREFRESH_INTERVAL = 5 * 60 * 1000; const weekRange = getDateRangeFromValue(DATE_RANGE_VALUES.LAST_7_DAYS); +let intervalId = null -function ErrorsBadge({ errorsStats = {}, fetchNewErrorsCount }) { +function ErrorsBadge({ errorsStats = {}, fetchNewErrorsCount, projects }) { useEffect(() => { + if (projects.size === 0 || !!intervalId) return; + const params = { startTimestamp: weekRange.start.unix() * 1000, endTimestamp: weekRange.end.unix() * 1000 }; fetchNewErrorsCount(params) - setInterval(() => { + intervalId = setInterval(() => { fetchNewErrorsCount(params); }, AUTOREFRESH_INTERVAL); - }, []) + }, [projects]) return errorsStats.unresolvedAndUnviewed > 0 ? (
{
}
@@ -27,4 +30,5 @@ function ErrorsBadge({ errorsStats = {}, fetchNewErrorsCount }) { export default connect(state => ({ errorsStats: state.getIn([ 'errors', 'stats' ]), + projects: state.getIn([ 'site', 'list' ]), }), { fetchNewErrorsCount })(ErrorsBadge)