Logo

dev-resources.site

for different kinds of informations.

Membangun Aplikasi Verifikasi Kode Autentikasi dengan Twilio Menggunakan Go dan Remix

Published at
11/3/2024
Categories
remix
go
twilio
authentication
Author
dioarafi
Categories
4 categories in total
remix
open
go
open
twilio
open
authentication
open
Author
8 person written this
dioarafi
open
Membangun Aplikasi Verifikasi Kode Autentikasi dengan Twilio Menggunakan Go dan Remix

Pendahuluan

Keamanan digital menjadi salah satu aspek paling krusial dalam pengembangan aplikasi saat ini. Salah satu metode yang populer untuk memastikan identitas pengguna adalah melalui pengiriman kode autentikasi, atau One-Time Password (OTP). Dalam artikel ini, saya akan membahas cara membangun aplikasi verifikasi kode autentikasi menggunakan Go untuk backend dan Remix, Redux, serta Axios untuk frontend. Mari kita mulai!

Persiapan

Sebelum kita mulai, Anda perlu meng-clone repository proyek ini dari GitLab. Jalankan perintah berikut di terminal Anda:

git clone [email protected]:dioarafi1/easyoauth.git

gitlab

Setelah repository ter-clone, buka direktori proyek.

Arsitektur Proyek

Proyek ini terdiri dari dua bagian utama:

  1. Backend: Dikenal karena kemampuannya yang efisien, Go akan digunakan untuk menangani logika pengiriman dan verifikasi kode autentikasi melalui API Twilio.

  2. Frontend: Dengan Remix, kita akan membangun antarmuka pengguna yang responsif, menggunakan Redux untuk manajemen state dan Axios untuk komunikasi dengan backend.

Struktur Proyek

Struktur direktori proyek ini adalah sebagai berikut:

your_project/
β”œβ”€β”€ client/
β”‚   β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ package.json
β”‚   └── remix.config.js
β”œβ”€β”€ server/
β”‚   β”œβ”€β”€ internal/
β”‚   β”œβ”€β”€ main.go
β”‚   └── routes/
Enter fullscreen mode Exit fullscreen mode

Backend: Menggunakan Go dan Twilio

Instalasi

Untuk memulai, pastikan Anda sudah menginstal Go di sistem Anda. Setelah itu, Anda perlu menginstal SDK Twilio dengan menjalankan perintah berikut:

go get github.com/twilio/twilio-go
Enter fullscreen mode Exit fullscreen mode

Konfigurasi Kredensial

Selanjutnya, Anda perlu menambahkan kredensial akun Twilio Anda. Buka file client.go di dalam folder twilio dan tambahkan informasi berikut:

const (
    accountSid = "YOUR_TWILIO_ACCOUNT_SID"
    authToken  = "YOUR_TWILIO_AUTH_TOKEN"
    verifySID  = "YOUR_TWILIO_VERIFY_SID"
)
Enter fullscreen mode Exit fullscreen mode

Endpoint API

Backend Anda akan menyediakan dua endpoint utama:

1. Mengirim Kode Autentikasi

URL: http://localhost:3000/auth/send-code

Method: POST

Request Body:

{
    "to": "+62",
    "channel": "sms"
}
Enter fullscreen mode Exit fullscreen mode

2. Memverifikasi Kode Autentikasi

URL: http://localhost:3000/auth/verify-code

Method: POST

Request Body:

{
    "to": "+62",
    "code": "553183"
}
Enter fullscreen mode Exit fullscreen mode

Penanganan Kesalahan

Sistem API ini dirancang untuk memberikan respons yang jelas jika terjadi kesalahan. Beberapa kode kesalahan yang mungkin muncul antara lain:

400 Bad Request: Jika input tidak valid.

401 Unauthorized: Jika kode verifikasi yang diberikan tidak valid.

500 Internal Server Error: Jika terjadi kesalahan pada server.

Frontend: Membangun Antarmuka dengan Remix

Instalasi

Untuk membangun antarmuka pengguna, kita akan menggunakan Remix. Pertama, pastikan Anda berada di dalam direktori klien dan jalankan perintah berikut untuk menginstal dependensi:

npm install remix @reduxjs/toolkit react-redux axios
Enter fullscreen mode Exit fullscreen mode

Komponen AuthForm

Salah satu komponen kunci dalam aplikasi ini adalah AuthForm, yang memungkinkan pengguna memasukkan nomor telepon dan kode verifikasi.

import React, { useState } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { sendAuthCode, verifyAuthCode } from '../../redux/authSlice';

const AuthForm = () => {
  const [phone, setPhone] = useState('');
  const [code, setCode] = useState('');
  const dispatch = useDispatch();
  const { message, error } = useSelector((state) => state.auth);

  const handleSendCode = () => {
    dispatch(sendAuthCode({ phone }));
  };

  const handleVerifyCode = () => {
    dispatch(verifyAuthCode({ phone, code }));
  };

  return (
    <div>
      <h2>Authentication</h2>
      <input
        type="text"
        value={phone}
        onChange={(e) => setPhone(e.target.value)}
        placeholder="Nomor Telepon"
      />
      <button onClick={handleSendCode}>Kirim Kode</button>
      <input
        type="text"
        value={code}
        onChange={(e) => setCode(e.target.value)}
        placeholder="Kode Verifikasi"
      />
      <button onClick={handleVerifyCode}>Verifikasi Kode</button>
      {message && <p>{message}</p>}
      {error && <p style={{ color: 'red' }}>{error}</p>}
    </div>
  );
};

export default AuthForm;
Enter fullscreen mode Exit fullscreen mode

Menjalankan Aplikasi Klien

Setelah semua konfigurasi selesai, jalankan aplikasi klien dengan perintah berikut:

npm run dev
Enter fullscreen mode Exit fullscreen mode

Aplikasi akan tersedia di http://localhost:3000

Kesimpulan

Dengan mengikuti langkah-langkah yang telah dijelaskan, Anda kini telah berhasil membangun aplikasi verifikasi kode autentikasi menggunakan Go dan Remix. Aplikasi ini tidak hanya aman tetapi juga menyediakan pengalaman pengguna yang baik melalui antarmuka yang responsif dan interaktif.

Sumber Daya Tambahan

Dokumentasi API Twilio

SDK Twilio untuk Go

Panduan Pengiriman SMS dengan Twilio

Dokumentasi Remix

Dengan pengetahuan ini, Anda dapat melanjutkan untuk mengembangkan aplikasi lebih lanjut, menyesuaikannya dengan kebutuhan spesifik Anda, dan meningkatkan pengalaman pengguna secara keseluruhan. Semoga berhasil!

remix Article's
30 articles in total
Favicon
How to disable a link in React Router 7 / Remix
Favicon
Verifying Your Shopify App Embed is Actually Enabled with Remix: A Step-by-Step Guide
Favicon
Headless e-commerce structure
Favicon
πŸš€ OpenAI's Transition from Next.js to Remix: A Strategic Move in Web Development 🌐
Favicon
# Key New Features in React Router 7: Embracing the Remix Future
Favicon
React Router V7: A Crash Course
Favicon
Stop Running to Next.js β€” Remix is the Future of React, and Here’s Why You’re Missing Out
Favicon
Introducing React Page Tracker: Simplify Navigation Tracking
Favicon
Create an Admin Panel for your project in 5Β minutes
Favicon
Remix Drizzle Auth Template
Favicon
I used GitHub as a CMS
Favicon
Remix vs. Next.js: Why Choose Remix?
Favicon
Choosing Remix as a Server-Side Rendering (SSR) Framework
Favicon
Next.js vs Remix: Which Framework is Better?
Favicon
Using PostHog in Remix Loaders and Actions on Cloudflare Pages
Favicon
Creating a marketplace with Stripe Connect: The onboarding process
Favicon
In-Depth Analysis of Next.js, Gatsby, and Remix
Favicon
Implementing RSS feed with Remix
Favicon
Cloudflare + Remix + PostgreSQL with Prisma Accelerate's Self Hosting
Favicon
Membangun Aplikasi Verifikasi Kode Autentikasi dengan Twilio Menggunakan Go dan Remix
Favicon
Google Analytics (GA4) implementation with React - Remix example
Favicon
Day 3 of Brylnt: Next.js vs Remix
Favicon
𝐌𝐚𝐧𝐭𝐒𝐧𝐞 𝐁𝐨𝐚𝐫𝐝𝐬 πŸš€
Favicon
How to Integrate Mixpanel with Remix?
Favicon
Remix, React, the Discogs API & filtermusikk.no
Favicon
How to navigate between Shopify app
Favicon
Framer Motion useAnimation()
Favicon
An Introduction to Remix
Favicon
Remix vs Next.js: Which Framework Should You Choose?
Favicon
Remix vs Next.js: Which Framework Should You Choose?

Featured ones: