auth

package module
v0.0.0-...-dae6bb4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 19, 2025 License: MIT Imports: 15 Imported by: 0

README

Kreasimaju Auth

Go Go Report Card Version

Package autentikasi Go untuk aplikasi modern dengan dukungan lokal, OTP, dan OAuth.

Fitur

  • 🔒 Autentikasi lokal (email/password)
  • 📱 Autentikasi dengan OTP (email, SMS, WhatsApp)
  • 🌐 Autentikasi OAuth (Google, GitHub, dll.)
  • 🔑 Manajemen token JWT
  • 📞 Dukungan nomor telepon internasional
  • 🔄 Manajemen reset password
  • 🛡️ Validasi data robust

Instalasi

go get github.com/kreasimaju/auth

Konfigurasi

Buat file konfigurasi (JSON, YAML, atau ENV) dan muat saat inisialisasi:

import "github.com/kreasimaju/auth"

func main() {
	// Muat konfigurasi dari file
	config, err := auth.LoadConfig("config.json")
	if err != nil {
		panic(err)
	}

	// Inisialisasi autentikasi
	err = auth.Init(config)
	if err != nil {
		panic(err)
	}

	// Siap digunakan!
}

Contoh konfigurasi JSON:

{
  "database": {
    "type": "mysql",
    "host": "localhost",
    "port": 3306,
    "username": "root",
    "password": "password",
    "database": "auth_db",
    "auto_migrate": true
  },
  "providers": {
    "google": {
      "enabled": true,
      "client_id": "your-client-id",
      "client_secret": "your-client-secret",
      "callback_url": "http://localhost:8080/auth/google/callback",
      "scopes": ["email", "profile"]
    },
    "local": true,
    "otp_auth": true
  },
  "jwt": {
    "secret": "your-jwt-secret",
    "expires_in": 86400
  },
  "otp": {
    "enabled": true,
    "default_type": "email",
    "length": 6,
    "expires_in": 300
  }
}

Penggunaan Dasar

Autentikasi Lokal
// Registrasi pengguna baru
user, err := auth.RegisterLocal("user@example.com", "password123", "John", "Doe", "081234567890", "ID")

// Login
user, err := auth.Login("user@example.com", "password123")

// Generate JWT token
token, err := auth.GenerateToken(user)
Autentikasi OTP
// Meminta OTP untuk login
otpCode, err := auth.RequestOTPLogin("user@example.com", "email", "ID")

// Memverifikasi OTP
user, err := auth.VerifyOTPLogin("user@example.com", "email", "123456", "ID")
Autentikasi OAuth
// Redirect URL untuk autentikasi Google
url := auth.GetGoogleAuthURL("state")

// Proses callback dari Google
user, err := auth.HandleGoogleCallback(code)

API Web

Package ini menyediakan handler HTTP siap pakai untuk Echo framework:

import (
	"github.com/kreasimaju/auth"
	"github.com/labstack/echo/v4"
)

func main() {
	// Inisialisasi Echo
	e := echo.New()

	// Daftarkan route autentikasi
	auth.RegisterRoutes(e.Group("/auth"))

	// Jalankan server
	e.Start(":8080")
}

Ini akan menyediakan endpoint berikut:

  • POST /auth/register - Registrasi pengguna
  • POST /auth/login - Login pengguna
  • POST /auth/otp/request - Request OTP
  • POST /auth/otp/verify - Verifikasi OTP
  • GET /auth/oauth/google - Login dengan Google
  • Dan lainnya...

Untuk dokumentasi API lengkap, lihat API Documentation.

Integrasi Provider SMS

Package ini mendukung integrasi dengan berbagai provider SMS, seperti:

  • Twilio
  • Vonage (Nexmo)
  • Zenziva (Indonesia)
  • Infobip
  • Dan lainnya

Untuk panduan integrasi lebih lanjut, lihat Panduan Integrasi SMS.

Build dari Source

Anda dapat membangun package ini langsung dari source:

# Clone repository
git clone https://github.com/kreasimaju/auth.git
cd auth

# Setup dependensi
make setup

# Jalankan pengujian
make test

# Build
make build

Pengembangan

Kontribusi sangat dipersilakan! Untuk memulai pengembangan:

# Fork repository dan clone
git clone https://github.com/YOUR-USERNAME/auth.git
cd auth

# Setup
make setup

# Lakukan perubahan yang diinginkan...

# Format kode
make fmt

# Jalankan linter
make lint

# Jalankan pengujian
make test

# Buat pull request

Versi

Lihat riwayat Rilis untuk daftar perubahan dan versi.

Lisensi

Package ini dilisensikan di bawah MIT License.

Documentation

Overview

Package auth menyediakan solusi autentikasi lengkap untuk aplikasi Go.

Package ini mendukung berbagai metode autentikasi termasuk lokal (email/password), OTP (email, SMS, WhatsApp), dan OAuth (Google, GitHub, dll).

Fitur Utama:

  • Autentikasi lokal dengan email dan password
  • Autentikasi dengan OTP melalui email, SMS, atau WhatsApp
  • Autentikasi OAuth (Google, GitHub, dll.)
  • Dukungan JWT untuk otorisasi
  • Format nomor telepon internasional
  • Manajemen reset password
  • Middleware untuk perlindungan rute

Inisialisasi:

// Muat konfigurasi dari file
config, err := auth.LoadConfig("config.json")
if err != nil {
	panic(err)
}

// Inisialisasi autentikasi
err = auth.Init(config)
if err != nil {
	panic(err)
}

Autentikasi Lokal:

// Registrasi pengguna baru
user, err := auth.RegisterLocal("user@example.com", "password123", "John", "Doe", "081234567890", "ID")

// Login
user, err := auth.Login("user@example.com", "password123")

Autentikasi OTP:

// Meminta OTP untuk login
otpCode, err := auth.RequestOTPLogin("user@example.com", "email", "ID")

// Memverifikasi OTP
user, err := auth.VerifyOTPLogin("user@example.com", "email", "123456", "ID")

Autentikasi OAuth:

// Redirect URL untuk autentikasi Google
url := auth.GetGoogleAuthURL("state")

// Proses callback dari Google
user, err := auth.HandleGoogleCallback(code)

Integrasi dengan Web Framework (Echo):

e := echo.New()

// Daftarkan route autentikasi
auth.RegisterRoutes(e.Group("/auth"))

e.Start(":8080")

Untuk dokumentasi lebih lanjut kunjungi repository: https://github.com/kreasimaju/auth

Index

Constants

This section is empty.

Variables

View Source
var Version = "dev"

Version adalah versi saat ini dari package auth. Diperbarui saat build menggunakan ldflags.

Functions

func FiberMiddleware

func FiberMiddleware() fiber.Handler

FiberMiddleware mengembalikan handler middleware otentikasi untuk Fiber

func FiberRoleMiddleware

func FiberRoleMiddleware(roles ...string) fiber.Handler

FiberRoleMiddleware mengembalikan handler middleware peran untuk Fiber

func FindUserByEmail

func FindUserByEmail(email string) (*models.User, error)

FindUserByEmail mencari pengguna berdasarkan email

func FindUserByPhone

func FindUserByPhone(phone string) (*models.User, error)

FindUserByPhone mencari pengguna berdasarkan nomor telepon

func GenerateOTP

func GenerateOTP(userID uint, otpType, target, purpose string) (*models.OTPCode, error)

GenerateOTP membuat kode OTP baru

func GetConfig

func GetConfig() config.Config

GetConfig mengembalikan konfigurasi saat ini

func GetVersion

func GetVersion() string

GetVersion mengembalikan versi saat ini dari package auth.

func GinMiddleware

func GinMiddleware() gin.HandlerFunc

GinMiddleware mengembalikan handler middleware otentikasi untuk Gin

func GinRoleMiddleware

func GinRoleMiddleware(roles ...string) gin.HandlerFunc

GinRoleMiddleware mengembalikan handler middleware peran untuk Gin

func GoogleLoginURL

func GoogleLoginURL(state string) string

GoogleLoginURL mengembalikan URL untuk login Google

func HandleGoogleCallback

func HandleGoogleCallback(code string) (*models.User, error)

HandleGoogleCallback menangani callback dari Google OAuth

func Init

func Init(cfg config.Config) error

Init menginisialisasi package auth dengan konfigurasi yang diberikan

func Login

func Login(email, password string) (*models.User, error)

Login melakukan autentikasi pengguna dengan email dan password

func LoginLocal

func LoginLocal(identifier, password string) (*models.User, error)

LoginLocal melakukan autentikasi pengguna dengan email/phone dan password

func Middleware

func Middleware() echo.MiddlewareFunc

Middleware mengembalikan handler middleware otentikasi untuk Echo

func RegisterLocal

func RegisterLocal(email, password, firstName, lastName, phone, defaultRegion string) (*models.User, error)

RegisterLocal mendaftarkan pengguna dengan email dan password

func RegisterRoutes

func RegisterRoutes(e *echo.Echo)

RegisterRoutes mendaftarkan rute otentikasi untuk Echo

func RequestOTPLogin

func RequestOTPLogin(contact, otpType, defaultRegion string) (*models.OTPCode, error)

RequestOTPLogin meminta OTP untuk login

func RoleMiddleware

func RoleMiddleware(roles ...string) echo.MiddlewareFunc

RoleMiddleware mengembalikan handler middleware peran untuk Echo

func SendOTP

func SendOTP(otpCode *models.OTPCode) error

SendOTP mengirim kode OTP melalui channel yang dipilih

func VerifyOTP

func VerifyOTP(userID uint, code, otpType, purpose string) (bool, error)

VerifyOTP memverifikasi kode OTP

func VerifyOTPLogin

func VerifyOTPLogin(contact, otpType, code, defaultRegion string) (*models.User, error)

VerifyOTPLogin memverifikasi OTP untuk login

Types

This section is empty.

Directories

Path Synopsis
echo command
fiber command
gin command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL