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 LoginGoogle from '../../containers/LoginGoogle';
9import LanguagesIcon from '../../containers/Languages/Icon';
10import {getSession} from 'next-auth/react';
11import pageUtils from '../../lib/pageUtils';
12
13interface PageProps {
14 error?: string;
15}
16
17const Login = (props: PageProps) => {
18 const {t} = useTranslation();
19
20 return (
21 <Layout menuTitle={t('signin.title')} displayMenu={false}>
22 <Card>
23 <CardMedia component={Logo} />
24 <SignInForm error={props?.error} />
25 <Divider />
26 <LoginGoogle />
27 </Card>
28 <LanguagesIcon />
29 </Layout>
30 );
31};
32
33export const getServerSideProps = async (context: any) => {
34 const session = await getSession(context);
35
36 if (session)
37 return {
38 redirect: {
39 destination: '/',
40 permanent: false,
41 },
42 };
43 else
44 return pageUtils.getServerSideProps(async ctx => {
45 const error = ctx.query?.error || null;
46 return {props: {error}};
47 })(context);
48};
49
50export default Login;