Swift2FA is a secure and easy-to-use PHP library for implementing two-factor authentication. It supports various authentication methods, including:
- Authenticator apps (Google Authenticator and others)
- Email authentication via SMTP with PHPMailer
- SMS-based authentication using services like Twilio
- Simple integration process
- High-security standards
- Multiple authentication methods
- Built-in encryption for secret keys
- QR code generation
- Flexible time-step settings
- Email and SMS delivery options
composer require uthmandev/swift2fa
use Swift2FA\Swift2FA;
$swift2fa = new Swift2FA();
- Encrypting Keys
// Generate and encrypt a new secret key
$encryptedKey = $swift2fa->encryptKey();
- Decrypting Keys
// Decrypt a stored encrypted key
$decryptedKey = $swift2fa->decryptKey($encryptedKey);
- Generating TOTP
// Generate a time-based one-time password
$totpCode = $swift2fa->generateTOTP($secret, $timeStep = 30, $codeLength = 6);
- Validating TOTP
// Validate a user-provided TOTP code
$isValid = $swift2fa->TOTPValidate($userInput, $secret);
// Generate a QR code for authenticator apps
$qrCode = $swift2fa->generateQR($userEmail, $decryptedSecret);
// Generate an otpauth:// link
$authLink = $swift2fa->generatelink($userEmail, $decryptedSecret);
- Via Email
// Send TOTP via email
$swift2fa->Mail(
mailType: 'SMTP',
email: '[email protected]',
message: 'Your authentication code is: ' . $totpCode,
name: 'User Name',
subject: 'Authentication Code'
);
- Via SMS
// Send TOTP via SMS
$swift2fa->SMS(
phoneNumber: '+1234567890',
messageBody: 'Your authentication code is: ' . $totpCode,
name: 'User Name'
);
Create a .env
file with the following configurations:
# General Settings
APP_NAME=your_app_name
ENCRYPTION_KEY=your_secure_encryption_key
# Email (SMTP) Settings
HOST=smtp.gmail.com
USER_NAME=[email protected]
PASSWORD=your_gmail_app_password
PORT=465
SMTP_SECURE=ssl
# SMS (Twilio) Settings
TWILIO_SID=your_twilio_sid
TWILIO_AUTH_TOKEN=your_twilio_auth_token
TWILIO_PHONE_NUMBER=your_twilio_phone_number
-
Security
- Store encryption keys securely
- Restrict access to environment files
- Use HTTPS for all authentication operations
-
TOTP Validation
- Standard time step is 30 seconds
- Email TOTP might require longer time steps (e.g., 120 seconds)
- QR codes should be the primary method for adding TOTP to authenticator apps
-
Authentication Links
otpauth://
links won't work in browsers- Use QR codes for adding to authenticator apps
Contributions are welcome! To contribute:
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Developer: Uthman Oladele
- Website: dev-utman.vercel.app
- Email: [email protected]
If you find this project useful, please consider giving it a ⭐ star on GitHub!