frontend/pages/auth/login.tsx (view raw)
1import CardMedia from '@material-ui/core/CardMedia';
2import Divider from '@material-ui/core/Divider';
3import Card from '@material-ui/core/Card';
4import {useTranslation} from 'react-i18next';
5import Layout from '../../layouts/Centered';
6import Logo from '../../components/Logo';
7import SignInForm from '../../containers/SignInForm';
8import LanguagesIcon from '../../containers/Languages/Icon';
9import {getSession} from 'next-auth/react';
10import pageUtils from '../../lib/pageUtils';
11
12interface PageProps {
13 error?: string;
14}
15
16const Login = (props: PageProps) => {
17 const {t} = useTranslation();
18
19 return (
20 <Layout menuTitle={t('signin.title')} displayMenu={false}>
21 <Card>
22 <CardMedia component={Logo} />
23 <SignInForm error={props?.error} />
24 </Card>
25 <LanguagesIcon />
26 </Layout>
27 );
28};
29
30export const getServerSideProps = async (context: any) => {
31 const session = await getSession(context);
32
33 if (session)
34 return {
35 redirect: {
36 destination: '/',
37 permanent: false,
38 },
39 };
40 else
41 return pageUtils.getServerSideProps(async ctx => {
42 const error = ctx.query?.error || null;
43 return {props: {error}};
44 })(context);
45};
46
47export default Login;