source: my-react-app/src/components/AppContent.js@ db39d9e

main
Last change on this file since db39d9e was db39d9e, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Authorization layer

  • Property mode set to 100644
File size: 2.0 KB
Line 
1import * as React from "react";
2import WelcomeContent from "./WelcomeContent";
3import AuthContent from "./AuthContent";
4import LoginForm from "./LoginForm";
5import { request, setAuthToken } from "../axios_helper";
6import Buttons from './Buttons'
7
8export default class AppContent extends React.Component {
9 constructor(props) {
10 super(props);
11 this.state = {
12 componentToShow: "welcome"
13 };
14 };
15
16 login = () => {
17 this.setState({componentToShow: "login"})
18 }
19
20 logout = () => {
21 this.setState({componentToShow: "welcome"})
22 }
23
24 onLogin = (e, email, password) => {
25 e.preventDefault();
26 request(
27 "POST",
28 "/api/login",
29 {email: email, password: password}
30 ).then((response) => {
31 this.setState({componentToShow: "restaurants"})
32 setAuthToken(response.data.token);
33 }).catch((error) => {
34 this.setState({componentToShow: "welcome"})
35 });
36 };
37
38 onRegister = (e, firstName, lastName, email, password) => {
39 e.preventDefault();
40 request(
41 "POST",
42 "/api/register",
43 {
44 firstName: firstName,
45 lastName: lastName,
46 email: email,
47 password: password
48 }
49 ).then((response) => {
50 this.setState({componentToShow: "restaurants"})
51 setAuthToken(response.data.token);
52 }).catch((error) => {
53 this.setState({componentToShow: "welcome"})
54 });
55 };
56
57 render() {
58 return (
59 <div>
60 <Buttons login={this.login} logout={this.logout}></Buttons>
61 {this.state.componentToShow === "welcome" && <WelcomeContent/>}
62 {this.state.componentToShow === "restaurants" && <AuthContent/>}
63 {this.state.componentToShow === "login" && <LoginForm onLogin={this.onLogin} onRegister={this.onRegister}/>}
64 </div>
65 )
66 }
67}
Note: See TracBrowser for help on using the repository browser.