Changeset 5a9c93b for my-react-app


Ignore:
Timestamp:
03/05/24 14:15:44 (15 months ago)
Author:
Aleksandar Panovski <apano77@…>
Branches:
main
Children:
db39d9e
Parents:
a2c6c2b
Message:

Authorization layer

Location:
my-react-app/src
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • my-react-app/src/axios_helper.js

    ra2c6c2b r5a9c93b  
    44axios.defaults.headers.post["Content-Type"] = 'application/json'
    55
     6export const getAuthToken = () => {
     7    return window.localStorage.getItem("auth_token");
     8}
     9
     10export const setAuthToken = (token) => {
     11    window.localStorage.setItem("auth_token", token);
     12}
     13
    614export const request = (method, url, data) => {
     15    let headers = {};
     16    if(getAuthToken() !== null && getAuthToken() !== "null") {
     17        headers = {"Authorization" : `Bearer ${getAuthToken()}`};
     18    }
     19
    720    return axios({
    821        method: method,
  • my-react-app/src/components/AppContent.js

    ra2c6c2b r5a9c93b  
    22import WelcomeContent from "./WelcomeContent";
    33import AuthContent from "./AuthContent";
     4import LoginForm from "./LoginForm";
     5import { request, setAuthToken } from "../axios_helper";
     6import Buttons from './Buttons'
    47
    58export 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            {login: 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                login: 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
    657    render() {
    758        return (
    859            <div>
    9                 <WelcomeContent/>
    10                 <AuthContent/>
     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}/>}
    1164            </div>
    1265        )
Note: See TracChangeset for help on using the changeset viewer.