all repos — caroster @ 62dba9246686f50004e12bc33dd33073fd58ba45

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

🐛 Redirect unauthenticated user #143
Tim Izzo tim@octree.ch
Fri, 18 Jun 2021 16:59:52 +0200
commit

62dba9246686f50004e12bc33dd33073fd58ba45

parent

9ce866648000343d9681be1a31185970c359b52d

M backend/.strapi-updater.jsonbackend/.strapi-updater.json

@@ -1,4 +1,4 @@

{ "latest": "3.6.3", - "lastUpdateCheck": 1623936937336 + "lastUpdateCheck": 1624027676054 }
M frontend/containers/GenericMenu/index.jsfrontend/containers/GenericMenu/index.js

@@ -13,7 +13,7 @@ import useAuthStore from '../../stores/useAuthStore';

import useProfile from '../../hooks/useProfile'; import useSettings from '../../hooks/useSettings'; -const GenericMenu = ({title, actions = [], goBack = false}) => { +const GenericMenu = ({title, actions = [], goBack = null}) => { const {t} = useTranslation(); const router = useRouter(); const [anchorEl, setAnchorEl] = useState(null);
D frontend/layouts/Default.js

@@ -1,29 +0,0 @@

-import React from 'react'; -import {Helmet} from 'react-helmet'; -import GenericMenu from '../containers/GenericMenu'; -import useGTM from '../hooks/useGTM'; - -const DefaultLayout = ({ - children, - className, - menuTitle = 'Caroster', - menuActions, - pageTitle = undefined, - displayMenu = true, - goBack = false, -}) => { - useGTM(); - return ( - <> - <Helmet> - <title>{pageTitle || menuTitle}</title> - </Helmet> - {displayMenu && (menuTitle || menuActions) && ( - <GenericMenu title={menuTitle} actions={menuActions} goBack={goBack} /> - )} - <div className={className}>{children}</div> - </> - ); -}; - -export default DefaultLayout;
A frontend/layouts/Default.tsx

@@ -0,0 +1,42 @@

+import {ReactNode} from 'react'; +import {Helmet} from 'react-helmet'; +import GenericMenu from '../containers/GenericMenu'; +import useGTM from '../hooks/useGTM'; + +interface Props { + children: ReactNode; + className?: string; + menuTitle?: string; + menuActions?: any; + pageTitle?: string; + displayMenu?: boolean; + goBack?: () => void; +} + +const DefaultLayout = (props: Props) => { + const { + children, + className, + menuTitle = 'Caroster', + menuActions, + pageTitle = undefined, + displayMenu = true, + goBack = () => {}, + } = props; + + useGTM(); + + return ( + <> + <Helmet> + <title>{pageTitle || menuTitle}</title> + </Helmet> + {displayMenu && (menuTitle || menuActions) && ( + <GenericMenu title={menuTitle} actions={menuActions} goBack={goBack} /> + )} + <div className={className}>{children}</div> + </> + ); +}; + +export default DefaultLayout;
M frontend/next.config.jsfrontend/next.config.js

@@ -9,6 +9,9 @@ destination: `${STRAPI_URL}/graphql`,

}, ]; }, + eslint: { + ignoreDuringBuilds: true, + }, typescript: { ignoreBuildErrors: true, },
M frontend/package.jsonfrontend/package.json

@@ -14,6 +14,12 @@ "@apollo/client": "^3.3.7",

"@material-ui/core": "^4.11.3", "@types/node": "^14.14.20", "@types/react": "^17.0.0", + "babel-eslint": "^10.1.0", + "eslint": "^7.28.0", + "eslint-config-google": "^0.14.0", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-react": "^7.24.0", + "eslint-plugin-react-hooks": "^4.2.0", "deepmerge": "^4.2.2", "graphql": "^15.5.0", "i18next": "^20.3.1",

@@ -31,12 +37,6 @@ "devDependencies": {

"@graphql-codegen/cli": "1.20.1", "@graphql-codegen/typescript": "1.20.2", "@graphql-codegen/typescript-operations": "1.17.14", - "@graphql-codegen/typescript-react-apollo": "2.2.1", - "babel-eslint": "^10.1.0", - "eslint": "^7.28.0", - "eslint-config-google": "^0.14.0", - "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-react": "^7.24.0", - "eslint-plugin-react-hooks": "^4.2.0" + "@graphql-codegen/typescript-react-apollo": "2.2.1" } }
M frontend/pages/dashboard.tsxfrontend/pages/dashboard.tsx

@@ -1,4 +1,4 @@

-import {useMemo} from 'react'; +import {useMemo, useEffect} from 'react'; import LayoutDefault from '../layouts/Default'; import moment from 'moment'; import {useRouter} from 'next/router';

@@ -18,6 +18,10 @@ const router = useRouter();

const {t} = useTranslation(); const classes = useStyles(); const {events = []} = profile || {}; + + useEffect(() => { + if (!isAuth) router.push('/'); + }, [isAuth]); const pastEvents = useMemo( () =>
M frontend/pages/profile.tsxfrontend/pages/profile.tsx

@@ -1,3 +1,4 @@

+import {useEffect} from 'react'; import Layout from '../layouts/Centered'; import {useTranslation} from 'react-i18next'; import {useRouter} from 'next/router';

@@ -10,9 +11,14 @@

const ProfilePage = () => { const router = useRouter(); const {t} = useTranslation(); + const isAuth = useAuthStore(s => !!s.token); const logout = useAuthStore(s => s.logout); const {profile} = useProfile(); const [updateProfile] = useUpdateMeMutation(); + + useEffect(() => { + if (!isAuth) router.push('/'); + }, [isAuth]); const onUpdateProfile = (userUpdate: EditUserInput) => updateProfile({variables: {userUpdate}});

@@ -37,7 +43,7 @@ <Layout menuTitle={t('profile.title')} menuActions={menuActions} goBack>

<Profile profile={profile} updateProfile={onUpdateProfile} - logout={() => logout()} + logout={logout} /> </Layout> );
M frontend/stores/useAuthStore.tsxfrontend/stores/useAuthStore.tsx

@@ -29,7 +29,7 @@ logout: () => {

set({token: null, user: null}); localStorage.removeItem('token'); localStorage.removeItem('user'); - window.location.href = '/login'; + window.location.href = '/auth/login'; }, }));
M frontend/yarn.lockfrontend/yarn.lock

@@ -1014,20 +1014,20 @@ version "2.0.1"

resolved "https://npm-8ee.hidora.com/@microsoft%2ffetch-event-source/-/fetch-event-source-2.0.1.tgz#9ceecc94b49fbaa15666e38ae8587f64acce007d" integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA== -"@next/env@10.2.3": - version "10.2.3" - resolved "https://npm-8ee.hidora.com/@next%2fenv/-/env-10.2.3.tgz#ede3bbe68cec9939c37168ea2077f9adbc68334e" - integrity sha512-uBOjRBjsWC4C8X3DfmWWP6ekwLnf2JCCwQX9KVnJtJkqfDsv1yQPakdOEwvJzXQc3JC/v5KKffYPVmV2wHXCgQ== +"@next/env@11.0.0": + version "11.0.0" + resolved "https://npm-8ee.hidora.com/@next%2fenv/-/env-11.0.0.tgz#bdd306a45e88ba3e4e7a36aa91806f6486bb61d0" + integrity sha512-VKpmDvTYeCpEQjREg3J4pCmVs/QjEzoLmkM8shGFK6e9AmFd0G9QXOL8HGA8qKhy/XmNb7dHeMqrcMiBua4OgA== -"@next/polyfill-module@10.2.3": - version "10.2.3" - resolved "https://npm-8ee.hidora.com/@next%2fpolyfill-module/-/polyfill-module-10.2.3.tgz#5a29f50c3ce3a56b8268d3b8331c691d8039467a" - integrity sha512-OkeY4cLhzfYbXxM4fd+6V4s5pTPuyfKSlavItfNRA6PpS7t1/R6YjO7S7rB8tu1pbTGuDHGIdE1ioDv15bAbDQ== +"@next/polyfill-module@11.0.0": + version "11.0.0" + resolved "https://npm-8ee.hidora.com/@next%2fpolyfill-module/-/polyfill-module-11.0.0.tgz#cb2f46b323bbe7f8a337ccd80fb82314d4039403" + integrity sha512-gydtFzRqsT549U8+sY8382I/f4HFcelD8gdUGnAofQJa/jEU1jkxmjCHC8tmEiyeMLidl7iDZgchfSCpmMzzUg== -"@next/react-dev-overlay@10.2.3": - version "10.2.3" - resolved "https://npm-8ee.hidora.com/@next%2freact-dev-overlay/-/react-dev-overlay-10.2.3.tgz#95313d10a8848f6c7b9e31ae3bd2a3627d136841" - integrity sha512-E6g2jws4YW94l0lMMopBVKIZK2mEHfSBvM0d9dmzKG9L/A/kEq6LZCB4SiwGJbNsAdlk2y3USDa0oNbpA+m5Kw== +"@next/react-dev-overlay@11.0.0": + version "11.0.0" + resolved "https://npm-8ee.hidora.com/@next%2freact-dev-overlay/-/react-dev-overlay-11.0.0.tgz#6befb4d00d952551db1b3909023074eb5778ac5d" + integrity sha512-q+Wp+eStEMThe77zxdeJ/nbuODkHR6P+/dfUqYXZSqbLf6x5c5xwLBauwwVbkCYFZpAlDuL8Jk8QSAH1OsqC2w== dependencies: "@babel/code-frame" "7.12.11" anser "1.4.9"

@@ -1041,10 +1041,10 @@ source-map "0.8.0-beta.0"

stacktrace-parser "0.1.10" strip-ansi "6.0.0" -"@next/react-refresh-utils@10.2.3": - version "10.2.3" - resolved "https://npm-8ee.hidora.com/@next%2freact-refresh-utils/-/react-refresh-utils-10.2.3.tgz#2f3e42fe6680798f276e3621345c2886b231348b" - integrity sha512-qtBF56vPC6d6a8p7LYd0iRjW89fhY80kAIzmj+VonvIGjK/nymBjcFUhbKiMFqlhsarCksnhwX+Zmn95Dw9qvA== +"@next/react-refresh-utils@11.0.0": + version "11.0.0" + resolved "https://npm-8ee.hidora.com/@next%2freact-refresh-utils/-/react-refresh-utils-11.0.0.tgz#cb671723c50b904eaa44b4b45c0845476ecd8825" + integrity sha512-hi5eY+KBn4QGtUv7VL2OptdM33fI2hxhd7+omOFmAK+S0hDWhg1uqHqqGJk0W1IfqlWEzzL10WvTJDPRAtDugQ== "@nodelib/fs.scandir@2.1.5": version "2.1.5"

@@ -1066,18 +1066,6 @@ integrity sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==

dependencies: "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" - -"@opentelemetry/api@0.14.0": - version "0.14.0" - resolved "https://npm-8ee.hidora.com/@opentelemetry%2fapi/-/api-0.14.0.tgz#4e17d8d2f1da72b19374efa7b6526aa001267cae" - integrity sha512-L7RMuZr5LzMmZiQSQDy9O1jo0q+DaLy6XpYJfIGfYSfoJA5qzYwUP3sP1uMIQ549DvxAgM3ng85EaPTM/hUHwQ== - dependencies: - "@opentelemetry/context-base" "^0.14.0" - -"@opentelemetry/context-base@^0.14.0": - version "0.14.0" - resolved "https://npm-8ee.hidora.com/@opentelemetry%2fcontext-base/-/context-base-0.14.0.tgz#c67fc20a4d891447ca1a855d7d70fa79a3533001" - integrity sha512-sDOAZcYwynHFTbLo6n8kIbLiVF3a3BLkrmehJUyEbT9F+Smbi47kLGS2gG2g0fjBLR/Lr1InPD7kXL7FaTqEkw== "@samverschueren/stream-to-observable@^0.3.0": version "0.3.1"

@@ -3151,6 +3139,13 @@ version "5.1.8"

resolved "https://npm-8ee.hidora.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +image-size@1.0.0: + version "1.0.0" + resolved "https://npm-8ee.hidora.com/image-size/-/image-size-1.0.0.tgz#58b31fe4743b1cec0a0ac26f5c914d3c5b2f0750" + integrity sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw== + dependencies: + queue "6.0.2" + immutable@~3.7.6: version "3.7.6" resolved "https://npm-8ee.hidora.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b"

@@ -4082,18 +4077,17 @@ version "1.4.0"

resolved "https://npm-8ee.hidora.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -next@^10.2.0: - version "10.2.3" - resolved "https://npm-8ee.hidora.com/next/-/next-10.2.3.tgz#5aa058a63626338cea91c198fda8f2715c058394" - integrity sha512-dkM1mIfnORtGyzw/Yme8RdqNxlCMZyi4Lqj56F01/yHbe1ZtOaJ0cyqqRB4RGiPhjGGh0319f8ddjDyO1605Ow== +next@^11.0.0: + version "11.0.0" + resolved "https://npm-8ee.hidora.com/next/-/next-11.0.0.tgz#866b833f192f5a94ddb3267d5cc0f4b0ce405ac7" + integrity sha512-1OA0ccCTwVtdLats/1v7ReiBVx+Akya0UVhHo9IBr8ZkpDI3/SGNcaruJBp5agy8ROF97VDKkZamoUXxRB9NUA== dependencies: "@babel/runtime" "7.12.5" "@hapi/accept" "5.0.2" - "@next/env" "10.2.3" - "@next/polyfill-module" "10.2.3" - "@next/react-dev-overlay" "10.2.3" - "@next/react-refresh-utils" "10.2.3" - "@opentelemetry/api" "0.14.0" + "@next/env" "11.0.0" + "@next/polyfill-module" "11.0.0" + "@next/react-dev-overlay" "11.0.0" + "@next/react-refresh-utils" "11.0.0" assert "2.0.0" ast-types "0.13.2" browserify-zlib "0.2.0"

@@ -4111,6 +4105,7 @@ etag "1.8.1"

find-cache-dir "3.3.1" get-orientation "1.1.2" https-browserify "1.0.0" + image-size "1.0.0" jest-worker "27.0.0-next.5" native-url "0.3.4" node-fetch "2.6.1"

@@ -4125,7 +4120,7 @@ process "0.11.10"

prop-types "15.7.2" querystring-es3 "0.2.1" raw-body "2.4.1" - react-is "16.13.1" + react-is "17.0.2" react-refresh "0.8.3" stream-browserify "3.0.0" stream-http "3.1.1"

@@ -4640,6 +4635,13 @@ version "1.2.3"

resolved "https://npm-8ee.hidora.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +queue@6.0.2: + version "6.0.2" + resolved "https://npm-8ee.hidora.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" resolved "https://npm-8ee.hidora.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"

@@ -4707,15 +4709,15 @@ dependencies:

"@babel/runtime" "^7.14.5" html-parse-stringify "^3.0.1" -react-is@16.13.1, react-is@^16.7.0, react-is@^16.8.1: - version "16.13.1" - resolved "https://npm-8ee.hidora.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -"react-is@^16.8.0 || ^17.0.0": +react-is@17.0.2, "react-is@^16.8.0 || ^17.0.0": version "17.0.2" resolved "https://npm-8ee.hidora.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^16.7.0, react-is@^16.8.1: + version "16.13.1" + resolved "https://npm-8ee.hidora.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-refresh@0.8.3: version "0.8.3"