Merge remote-tracking branch 'origin/dev' into api_tablewidgets

This commit is contained in:
Taha Yassine Kraiem 2022-02-25 15:00:22 +01:00
commit 35ccc18cbe
7 changed files with 44 additions and 14 deletions

View file

@ -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.")

View file

@ -18,7 +18,10 @@ class Notifications extends React.Component {
constructor(props) {
super(props);
props.fetchList();
setTimeout(() => {
props.fetchList();
}, 1000);
setInterval(() => {
props.fetchList();
}, AUTOREFRESH_INTERVAL);

View file

@ -1,5 +1,5 @@
import React, { useEffect, useState } from 'react';
import { SlideModal, Avatar, Icon } from 'UI';
import { SlideModal, Avatar, TextEllipsis, Icon } from 'UI';
import SessionList from '../SessionList';
import stl from './assistTabs.css'
@ -19,7 +19,11 @@ const AssistTabs = (props: Props) => {
<div className="flex items-center mr-3">
{/* <Icon name="user-alt" color="gray-darkest" /> */}
<Avatar iconSize="20" width="30px" height="30px" seed={ props.userNumericHash } />
<div className="ml-2 font-medium">{props.userId}'s</div>
<div className="ml-2 font-medium">
<TextEllipsis maxWidth={120} inverted popupProps={{ inverted: true, size: 'tiny' }}>
{props.userId}'s asdasd asdasdasdasd
</TextEllipsis>
</div>
</div>
<div
className={stl.btnLink}

View file

@ -139,7 +139,7 @@ export default class PlayerBlockHeader extends React.PureComponent {
{ _live && (
<>
<SessionMetaList className="" metaList={_metaList} />
<SessionMetaList className="" metaList={_metaList} maxLength={3} />
<div className={ stl.divider } />
</>
)}

View file

@ -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 ? (
<div>{<div className={stl.badge} /> }</div>
@ -27,4 +30,5 @@ function ErrorsBadge({ errorsStats = {}, fetchNewErrorsCount }) {
export default connect(state => ({
errorsStats: state.getIn([ 'errors', 'stats' ]),
projects: state.getIn([ 'site', 'list' ]),
}), { fetchNewErrorsCount })(ErrorsBadge)

View file

@ -161,7 +161,7 @@ function LiveSessionList(props: Props) {
))}
<LoadMoreButton
className="mt-3"
className="my-6"
displayedCount={displayedCount}
totalCount={sessions.size}
onClick={addPage}

View file

@ -6,19 +6,20 @@ import MetaMoreButton from '../MetaMoreButton';
interface Props {
className?: string,
metaList: []
metaList: [],
maxLength?: number,
}
const MAX_LENGTH = 4;
export default function SessionMetaList(props: Props) {
const { className = '', metaList } = props
const { className = '', metaList, maxLength = 4 } = props
return (
<div className={cn("text-sm flex items-start", className)}>
{metaList.slice(0, MAX_LENGTH).map(({ label, value }, index) => (
{metaList.slice(0, maxLength).map(({ label, value }, index) => (
<MetaItem key={index} label={label} value={''+value} className="mr-3" />
))}
{metaList.length > MAX_LENGTH && (
<MetaMoreButton list={metaList} maxLength={MAX_LENGTH} />
{metaList.length > maxLength && (
<MetaMoreButton list={metaList} maxLength={maxLength} />
)}
</div>
)