Logging Users

Buka postman dan masukkan url http://localhost:3900/api/auth

pastikan data nya muncul seperti gambar di bawah

Lalu kita akan implement ke form login kita, buat file baru didalam folder services

AuthService.js

import http from './HttpService';

const apiEndpoint = 'http://localhost:3900/api/auth';

export function login(email, password) {
    return http.post(apiEndpoint, { email, password });
}

dan ubah LoginForm.jsx

import React, { Component } from "react";
import Joi from "joi-browser";
import Form from "./Common/Form";
import { login } from '../services/AuthService';

class LoginForm extends Form {
    state = {
        data : {
            username: '',
            password: ''
        },
        errors: {}
    };

    schema = {
        username: Joi.string().required().label("Username"),
        password: Joi.string().required().label("Password")
    };
    
    doSubmit = async () => {
        const { data } = this.state;
        await login(data.username, data.password);
    };

    render(){
        return (
            <>
                <div>
                    <h1>Login</h1>
                    <form onSubmit={this.handleSubmit} >
                        {this.renderInput('username', 'Username')}
                        {this.renderInput('password', 'Password', "password")}
                        {this.renderButton('Login')}
                    </form>
                </div>
            </>
        )
    }
}

export default LoginForm

Jika ingin menambahkan validasi

LoginForm.jsx

import React, { Component } from "react";
import Joi from "joi-browser";
import Form from "./Common/Form";
import { login } from '../services/AuthService';

class LoginForm extends Form {
    state = {
        data : {
            username: '',
            password: ''
        },
        errors: {}
    };

    schema = {
        username: Joi.string().required().label("Username"),
        password: Joi.string().required().label("Password")
    };
    
    doSubmit = async () => {
        try {
            const { data } = this.state;
            await login(data.username, data.password);
        } catch (error) {
            if (error.response && error.response.status === 400) {
                const errors = { ...this.state.errors };
                errors.username = error.response.data;
                this.setState({ errors });
            }
        }
    };

    render(){
        return (
            <>
                <div>
                    <h1>Login</h1>
                    <form onSubmit={this.handleSubmit} >
                        {this.renderInput('username', 'Username')}
                        {this.renderInput('password', 'Password', "password")}
                        {this.renderButton('Login')}
                    </form>
                </div>
            </>
        )
    }
}

export default LoginForm

Last updated

Was this helpful?