@plone/volto
Version:
Volto
70 lines (67 loc) • 2.65 kB
JSX
import { FormattedMessage } from 'react-intl';
import { Link } from 'react-router-dom';
import { Container } from 'semantic-ui-react';
import { useSelector } from 'react-redux';
import { useLocation } from 'react-router-dom';
import { withServerErrorCode } from '@plone/volto/helpers/Utils/Utils';
import { getBaseUrl } from '@plone/volto/helpers/Url/Url';
import BodyClass from '@plone/volto/helpers/BodyClass/BodyClass';
const Unauthorized = () => {
const error_message = useSelector((state) => state.apierror?.message);
let location = useLocation();
return (
<Container className="view-wrapper">
<BodyClass className="view-unauthorized" />
<h1>
<FormattedMessage id="Unauthorized" defaultMessage="Unauthorized" />
</h1>
<h3>{error_message}</h3>
<p className="description">
<FormattedMessage
id="You are trying to access a protected resource, please {login} first."
defaultMessage="You are trying to access a protected resource, please {login} first."
values={{
login: (
<Link
to={{
pathname: `${getBaseUrl(location.pathname)}/login`,
state: {
// This is needed to cover the use case of being logged in in
// another backend (eg. in development), having a token for
// localhost and try to use it, the login route has to know that
// it's the same as it comes from a logout
isLogout: true,
},
}}
>
<FormattedMessage id="log in" defaultMessage="log in" />
</Link>
),
}}
/>
</p>
<p>
<FormattedMessage
id="If you are certain you have the correct web address but are encountering an error, please contact the {site_admin}."
defaultMessage="If you are certain you have the correct web address but are encountering an error, please contact the {site_admin}."
values={{
site_admin: (
<Link to="/contact-form">
<FormattedMessage
id="Site Administration"
defaultMessage="Site Administration"
/>
</Link>
),
}}
/>
</p>
<p>
<FormattedMessage id="Thank you." defaultMessage="Thank you." />
</p>
</Container>
);
};
const UnauthorizedWithCode = withServerErrorCode(401)(Unauthorized);
UnauthorizedWithCode.displayName = 'unauthorized';
export default UnauthorizedWithCode;