all repos — caroster @ 512757d6ae90dfc3ddae08bb34ddb889ee3ec54f

[Octree] Group carpool to your event https://caroster.io

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;