mirror of
https://github.com/grafana/grafana.git
synced 2025-02-03 20:21:01 -06:00
67 lines
2.0 KiB
TypeScript
67 lines
2.0 KiB
TypeScript
import React from 'react';
|
|
import { Button, InfoBox, Portal, stylesFactory, useTheme2 } from '@grafana/ui';
|
|
import { getModalStyles } from '@grafana/ui/src/components/Modal/getModalStyles';
|
|
import { css, cx } from '@emotion/css';
|
|
import { GrafanaTheme2 } from '@grafana/data';
|
|
|
|
interface Props {
|
|
maxConcurrentSessions?: number;
|
|
}
|
|
|
|
export const TokenRevokedModal = (props: Props) => {
|
|
const theme = useTheme2();
|
|
|
|
const styles = getStyles(theme);
|
|
const modalStyles = getModalStyles(theme);
|
|
|
|
const showMaxConcurrentSessions = Boolean(props.maxConcurrentSessions);
|
|
|
|
const redirectToLogin = () => {
|
|
window.location.reload();
|
|
};
|
|
|
|
return (
|
|
<Portal>
|
|
<div className={modalStyles.modal}>
|
|
<InfoBox title="You have been automatically signed out" severity="warning" className={styles.infobox}>
|
|
<div className={styles.text}>
|
|
<p>
|
|
Your session token was automatically revoked because you have reached
|
|
<strong>
|
|
{` the maximum number of ${
|
|
showMaxConcurrentSessions ? props.maxConcurrentSessions : ''
|
|
} concurrent sessions `}
|
|
</strong>
|
|
for your account.
|
|
</p>
|
|
<p>
|
|
<strong>To resume your session, sign in again.</strong>
|
|
Contact your administrator or visit the license page to review your quota if you are repeatedly signed out
|
|
automatically.
|
|
</p>
|
|
</div>
|
|
<Button size="md" variant="primary" onClick={redirectToLogin}>
|
|
Sign in
|
|
</Button>
|
|
</InfoBox>
|
|
</div>
|
|
<div className={cx(modalStyles.modalBackdrop, styles.backdrop)} />
|
|
</Portal>
|
|
);
|
|
};
|
|
|
|
const getStyles = stylesFactory((theme: GrafanaTheme2) => {
|
|
return {
|
|
infobox: css`
|
|
margin-bottom: 0;
|
|
`,
|
|
text: css`
|
|
margin: ${theme.spacing(1, 0, 2)};
|
|
`,
|
|
backdrop: css`
|
|
background-color: ${theme.colors.background.canvas};
|
|
opacity: 0.8;
|
|
`,
|
|
};
|
|
});
|