The sudo package provides functionality for managing sudo-like operations, including user verification, token generation, and verification code validation.
To install the sudo package, use the following go get command:
go get -u github.com/9ssi7/sudoImport the sudo package into your code:
import "github.com/9ssi7/sudo"Create a sudo.Config instance to configure the sudo service:
config := sudo.Config{
Redis: // Your Redis service instance,
NotifySender: // Your NotifySender function,
Expire: // Optional: Set the expiration time for verification codes. Default is 5 minutes.
}
sudoService := sudo.New(config)Check verifies the validity of a given token.
cmd := sudo.CheckCommand{
UserId: "user123",
DeviceId: "device456",
Token: "your_token",
}
err := sudoService.Check(context.Background(), cmd)Start initiates the sudo process by generating a verification code and notifying the user.
cmd := sudo.StartCommand{
UserId: "user123",
DeviceId: "device456",
Phone: "+1234567890",
Email: "[email protected]",
Locale: "en_US",
}
token, err := sudoService.Start(context.Background(), cmd)Verify validates a user's input against the generated verification code.
cmd := sudo.VerifyCommand{
UserId: "user123",
DeviceId: "device456",
VerifyToken: "generated_verify_token",
Code: "user_input_code",
}
accessToken, err := sudoService.Verify(context.Background(), cmd)The package requires a notification sender function (NotifySender) to notify users during the sudo process.
notifyFunc := func(cmd sudo.NotifyCommand) {
// Implement your notification logic here
}
config.NotifySender = notifyFuncThe package provides the following error messages:
sudo_redis_fetch_failedsudo_redis_set_failedsudo_json_marshal_failedsudo_not_foundsudo_invalid_tokensudo_invalid_codesudo_expired_codesudo_exceed_try_countsudo_unknownsudo_verify_started
For a complete working examples, refer to the recipes repository.
This package is licensed under the Apache-2.0 License.