otptimize

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Aug 25, 2023 License: MIT Imports: 12 Imported by: 0

README

OTPtimize

OTPtimize is a Go package that helps in generating, sending, and validating OTP (One-Time Password). This package is designed to simplify the usage of OTP in your application with a focus on optimizing resource utilization.

Installation

You can install the OTPtimize package using the following command:

go get -u github.com/asidikrdn/otptimize

Usage

Here's an example of how to use the OTPtimize package:

Generate OTP
package main

import (
  "fmt"
  "github.com/asidikrdn/otptimize"
)

func main() {
  // Initialize connections
  mailConfig := otptimize.MailConfig{
    Host:     "<mail_server_host>",      // e.g : "smtp.gmail.com"
    Port:     "<mail_server_port>",      // e.g : 587
    Email:    "<your_email>",            // e.g : "your_email@mail.com"
    Password: "<your_email_password>",   // e.g : "asszsdweaqw2e"
  }
  redisConfig := otptimize.RedisConfig{
    Host:     "<redis_server_host>",     // e.g : "172.17.0.1"
    Port:     "<redis_server_port>",     // e.g : "6379"
    Password: "<redis_server_password>", // e.g : "1j2oda982jskxzi"
  }
  otptimize.ConnectionInit(mailConfig, redisConfig)

  // Generate and send OTP
  err := otptimize.GenerateAndSendOTP(6, 25, "MyApp", "John Doe", "sidikrudini16@gmail.com")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
}
Validate OTP
package main

import (
  "fmt"
  "github.com/asidikrdn/otptimize"
)

func main() {
  // Initialize connections
  mailConfig := otptimize.MailConfig{
    Host:     "<mail_server_host>",      // e.g : "smtp.gmail.com"
    Port:     "<mail_server_port>",      // e.g : 587
    Email:    "<your_email>",            // e.g : "your_email@mail.com"
    Password: "<your_email_password>",   // e.g : "asszsdweaqw2e"
  }
  redisConfig := otptimize.RedisConfig{
    Host:     "<redis_server_host>",     // e.g : "172.17.0.1"
    Port:     "<redis_server_port>",     // e.g : "6379"
    Password: "<redis_server_password>", // e.g : "1j2oda982jskxzi"
  }
  otptimize.ConnectionInit(mailConfig, redisConfig)

  // Validate OTP
  valid, err := otptimize.ValidateOTP("your_email@mail.com", "085481")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  if valid {
    fmt.Println("OTP Valid!")
  } else {
    fmt.Println("Invalid OTP!")
  }
}

Make sure to replace email and Redis configuration values according to your needs.

Documentation

ConnectionInit

The ConnectionInit function is used to initialize the connections required by the OTPtimize package. This function takes two parameters: mailConfig of type MailConfig and redisConfig of type RedisConfig. The mailConfig parameter contains configurations for connecting to the email server, such as host, port, sender's email, and password. The redisConfig parameter contains configurations for connecting to the Redis server, such as host, port, and password. This function needs to be called before using other functions within this package.

GenerateAndSendOTP

The GenerateAndSendOTP function is responsible for generating an OTP (One-Time Password), sending it to the specified email address, and storing it in the Redis server. This function accepts several parameters:

  • otpLength is the length of the OTP to be generated.
  • tokenExpirationMinutes is the duration in minutes for which the OTP will expire.
  • appName is the name of the application to be used in the OTP message.
  • targetName is the name of the OTP recipient.
  • targetEmail is the email address of the OTP recipient.

This function will generate an OTP, store it in the Redis server along with an expiration time calculated based on tokenExpirationMinutes, and then send the OTP to the specified email address.

ValidateOTP

The ValidateOTP function is responsible for validating the given OTP for a specific email address. This function accepts two parameters:

  • email is the email address to be validated.
  • otpToken is the OTP to be validated.

This function will check whether the provided OTP matches the OTP stored in the Redis server for the given email address. If they match, the function will return true. If they do not match or an error occurs, the function will return false along with the error that occurred.

Contribution

Contributions are welcome! You can contribute by submitting pull requests to this repository.

License

This project is licensed under the MIT License.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var MailConnection *gomail.Dialer

=============================================== GOMAIL =============================================== // email connection

View Source
var RedisClient *redis.Client

=============================================== REDIS =============================================== // redis connection

Functions

func ConnectionInit

func ConnectionInit(mailConfig MailConfig, redisConfig RedisConfig)

=============================================== CONNECTION INIT =============================================== //

func GenerateAndSendOTP

func GenerateAndSendOTP(otpLength int, tokenExpirationMinutes int, appName string, targetName string, targetEmail string) error

=============================================== GENERATE OTP AND SEND IT BY EMAIL =============================================== //

func ValidateOTP

func ValidateOTP(email string, otpToken string) (bool, error)

validating otp token =============================================== VALIDATE OTP =============================================== //

Types

type MailConfig

type MailConfig struct {
	Host     string
	Port     int
	Email    string
	Password string
}

=============================================== MAIL CONFIG =============================================== //

type RedisConfig

type RedisConfig struct {
	Host     string
	Port     string
	Password string
}

=============================================== REDIS CONFIG =============================================== //

Jump to

Keyboard shortcuts

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