From cbaa1b8270662f274629b9f4e7756d479ee0368a Mon Sep 17 00:00:00 2001 From: JP1998 Date: Wed, 12 Dec 2018 20:47:09 +0100 Subject: [PATCH] Fix issue with order of mounting of components Since the credentials were checked in the componentDidMount of the App but the tournamen was loaded in the componentDidMount of the EditTournament component, which was done first. Thus the auth headers were cleared, and the user was logged out. --- pages/_app.js | 7 ++---- pages/_error.js | 8 +++++++ pages/create.js | 38 ++++++++++++++++++++++----------- pages/faq.js | 35 ++++++++++++++++++++---------- pages/imprint.js | 35 ++++++++++++++++++++---------- pages/index.js | 9 ++++++++ pages/list.js | 30 +++++++++++++++++++------- pages/login.js | 37 +++++++++++++++++++++----------- pages/privacy.js | 35 ++++++++++++++++++++---------- pages/register.js | 39 ++++++++++++++++++++++------------ pages/tournament-edit.js | 2 ++ pages/tournament-fullscreen.js | 8 +++++++ pages/tournament.js | 8 +++++++ 13 files changed, 208 insertions(+), 83 deletions(-) diff --git a/pages/_app.js b/pages/_app.js index 3bf91cd..39529b0 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -2,18 +2,15 @@ import App, {Container} from 'next/app'; import React from 'react'; import { Provider } from 'react-redux'; import withReduxStore from '../js/redux/reduxStoreBinder'; -import { verifyCredentials } from '../js/api'; +import Notifications from 'react-notify-toast'; class TurniereApp extends App { - componentDidMount() { - verifyCredentials(); - } - render () { const {Component, pageProps, reduxStore} = this.props; return ( + diff --git a/pages/_error.js b/pages/_error.js index 0a1bf26..0383518 100644 --- a/pages/_error.js +++ b/pages/_error.js @@ -1,11 +1,19 @@ import { ErrorPageComponent } from '../js/components/ErrorComponents.js'; +import { + verifyCredentials +} from '../js/api'; + export default class Error extends React.Component { static getInitialProps({ res, err }) { const statusCode = res ? res.statusCode : err ? err.statusCode : 400; return { statusCode }; } + componentDidMount() { + verifyCredentials(); + } + render() { return ( diff --git a/pages/create.js b/pages/create.js index d2ee8db..b1606f4 100644 --- a/pages/create.js +++ b/pages/create.js @@ -16,20 +16,34 @@ import { Label } from 'reactstrap'; +import { + verifyCredentials +} from '../js/api'; + import EditableStringList from '../js/EditableStringList'; -export default () => ( -
- - Turnier erstellen: turnie.re - - -
- -
-
-
-); +export default class CreatePage extends React.Component { + + componentDidMount() { + verifyCredentials(); + } + + render() { + return ( +
+ + Turnier erstellen: turnie.re + + +
+ +
+
+
+ ); + } +} + function CreateTournamentCard() { return ( diff --git a/pages/faq.js b/pages/faq.js index 57e3bdb..d747e7d 100644 --- a/pages/faq.js +++ b/pages/faq.js @@ -5,6 +5,10 @@ import 'bootstrap/dist/css/bootstrap.min.css'; import { BigImage, Footer, TurniereNavigation } from '../js/CommonComponents.js'; import '../static/everypage.css'; +import { + verifyCredentials +} from '../js/api'; + function Main() { return (
@@ -216,14 +220,23 @@ function TournamentFaq() { ); } -export default () => ( -
- - FAQ: turnie.re - - - -
-
-
-); +export default class FaqPage extends React.Component { + + componentDidMount() { + verifyCredentials(); + } + + render() { + return ( +
+ + FAQ: turnie.re + + + +
+
+
+ ); + } +} diff --git a/pages/imprint.js b/pages/imprint.js index feec607..34fb942 100644 --- a/pages/imprint.js +++ b/pages/imprint.js @@ -5,6 +5,10 @@ import 'bootstrap/dist/css/bootstrap.min.css'; import {BigImage, Footer, TurniereNavigation} from '../js/CommonComponents.js'; import '../static/everypage.css'; +import { + verifyCredentials +} from '../js/api'; + function Main() { return (
@@ -69,14 +73,23 @@ function ImprintText(){ } -export default () => ( -
- - Impressum: turnie.re - - - -
-
-
-); +export default class ImprintPage extends React.Component { + + componentDidMount() { + verifyCredentials(); + } + + render() { + return ( +
+ + Impressum: turnie.re + + + +
+
+
+ ); + } +} diff --git a/pages/index.js b/pages/index.js index 7d043df..8dfc2ea 100644 --- a/pages/index.js +++ b/pages/index.js @@ -12,6 +12,10 @@ import '../static/css/index.css'; import { connect } from 'react-redux'; +import { + verifyCredentials +} from '../js/api'; + function Main() { return (
@@ -165,6 +169,11 @@ function PromotedLinkCreateTournament() { class Index extends React.Component { + + componentDidMount() { + verifyCredentials(); + } + render () { return (
diff --git a/pages/list.js b/pages/list.js index 8dfe530..07dbc80 100644 --- a/pages/list.js +++ b/pages/list.js @@ -1,10 +1,24 @@ import Head from 'next/head'; +import React from 'react'; -export default () => ( -
- - Turnie.re - Turnierliste - -

Turnierliste

-
-); +import { + verifyCredentials +} from '../js/api'; + +export default class ListPage extends React.Component { + + componentDidMount() { + verifyCredentials(); + } + + render() { + return ( +
+ + Turnie.re - Turnierliste + +

Turnierliste

+
+ ); + } +} diff --git a/pages/login.js b/pages/login.js index 6acc489..1a58e49 100644 --- a/pages/login.js +++ b/pages/login.js @@ -6,18 +6,31 @@ import { Button, Card, CardBody, Container, Form, FormGroup, Input, Label } from import { login } from '../js/api'; import { connect } from 'react-redux'; -export default () => ( -
- - Login: turnie.re - - -
- -
-
-
-); +import { + verifyCredentials +} from '../js/api'; + +export default class LoginPage extends React.Component { + + componentDidMount() { + verifyCredentials(); + } + + render() { + return ( +
+ + Login: turnie.re + + +
+ +
+
+
+ ); + } +} function Login() { return ( diff --git a/pages/privacy.js b/pages/privacy.js index 9f0c2b9..e4263eb 100644 --- a/pages/privacy.js +++ b/pages/privacy.js @@ -5,6 +5,10 @@ import 'bootstrap/dist/css/bootstrap.min.css'; import { BigImage, Footer, TurniereNavigation } from '../js/CommonComponents.js'; import '../static/everypage.css'; +import { + verifyCredentials +} from '../js/api'; + function Main() { return (
@@ -488,14 +492,23 @@ function PrivacyText(){ } -export default () => ( -
- - Datenschutzerklärung: turnie.re - - - -
-
-
-); +export default class PrivacyPage extends React.Component { + + componentDidMount() { + verifyCredentials(); + } + + render() { + return ( +
+ + Datenschutzerklärung: turnie.re + + + +
+
+
+ ); + } +} diff --git a/pages/register.js b/pages/register.js index cf0365f..096d6c1 100644 --- a/pages/register.js +++ b/pages/register.js @@ -6,19 +6,32 @@ import { Button, Card, CardBody, Container, Form, FormGroup, FormText, Input, La import { register } from '../js/api'; import { connect } from 'react-redux'; -export default () => ( -
- - Registrieren: turnie.re - - -
- - -
-
-
-); +import { + verifyCredentials +} from '../js/api'; + +export default class RegisterPage extends React.Component { + + componentDidMount() { + verifyCredentials(); + } + + render() { + return ( +
+ + Registrieren: turnie.re + + +
+ + +
+
+
+ ); + } +} function Register() { return ( diff --git a/pages/tournament-edit.js b/pages/tournament-edit.js index d1a85d6..f778dea 100644 --- a/pages/tournament-edit.js +++ b/pages/tournament-edit.js @@ -18,6 +18,7 @@ import { } from 'reactstrap'; import { + verifyCredentials, updateTeamName } from '../js/api'; @@ -39,6 +40,7 @@ class EditTournamentPage extends React.Component { } componentDidMount() { + verifyCredentials(); requestTournament(this.props.query.code, () => { this.setState({ validCode: true }); this._edittournamentcontent.notifyOfContentUpdate(); diff --git a/pages/tournament-fullscreen.js b/pages/tournament-fullscreen.js index 09cde55..21fddff 100644 --- a/pages/tournament-fullscreen.js +++ b/pages/tournament-fullscreen.js @@ -1,11 +1,19 @@ import Head from 'next/head'; import React from 'react'; +import { + verifyCredentials +} from '../js/api'; + class FullscreenTournamentPage extends React.Component { static async getInitialProps({query}) { return {query}; } + + componentDidMount() { + verifyCredentials(); + } render() { return ( diff --git a/pages/tournament.js b/pages/tournament.js index bba1bf2..bb01189 100644 --- a/pages/tournament.js +++ b/pages/tournament.js @@ -2,12 +2,20 @@ import Head from 'next/head'; import React from 'react'; import '../style.css'; +import { + verifyCredentials +} from '../js/api'; + class TournamentPage extends React.Component { static async getInitialProps({query}) { return {query}; } + componentDidMount() { + verifyCredentials(); + } + render() { return (