Merge remote-tracking branch 'origin/dev' into api_tablewidgets
This commit is contained in:
commit
35ccc18cbe
7 changed files with 44 additions and 14 deletions
|
|
@ -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.")
|
||||
|
|
|
|||
|
|
@ -18,7 +18,10 @@ class Notifications extends React.Component {
|
|||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
props.fetchList();
|
||||
setTimeout(() => {
|
||||
props.fetchList();
|
||||
}, 1000);
|
||||
|
||||
setInterval(() => {
|
||||
props.fetchList();
|
||||
}, AUTOREFRESH_INTERVAL);
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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 } />
|
||||
</>
|
||||
)}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ function LiveSessionList(props: Props) {
|
|||
))}
|
||||
|
||||
<LoadMoreButton
|
||||
className="mt-3"
|
||||
className="my-6"
|
||||
displayedCount={displayedCount}
|
||||
totalCount={sessions.size}
|
||||
onClick={addPage}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue