Fonctionnalités clés
- Rate limiting
- Expiration configurable
- Invalidation après première utilisation
- Lié à la session de l’utilisateur
- Invalidation après trop de tentatives échouées
- Messages d’erreur détaillés
- Le template mail personnalisable
- Logs auditables
Installation
Starter Kits
Laravel + React Starter Kit
Nouvelle application
Créez un nouveau projet Laravel en utilisant le starter kit OTPz + React avec la commande suivante :
1laravel new --using benbjurstrom/otpz-react-starter-kit otpz-react
Application existante
Vous pouvez voir un diff de toutes les modifications nécessaires pour intégrer OTPz avec le Starter Kit officiel Laravel + React ici :
https://github.com/laravel/react-starter-kit/compare/main...benbjurstrom:otpz-react-starter-kit:main
Laravel + Vue Starter Kit
Nouvelle application
Créez un nouveau projet Laravel en utilisant le starter kit OTPz + Vue avec la commande suivante :
1laravel new --using benbjurstrom/otpz-vue-starter-kit otpz-vue
Application existante
Vous pouvez voir un diff de toutes les modifications nécessaires pour intégrer OTPz avec le Starter Kit officiel Laravel + Vue ici :
https://github.com/laravel/vue-starter-kit/compare/main...benbjurstrom:otpz-vue-starter-kit:main
Laravel + Livewire Starter Kit
Nouvelle application
Créez un nouveau projet Laravel en utilisant le starter kit OTPz + Livewire avec la commande suivante :
1laravel new --using benbjurstrom/otpz-livewire-starter-kit otpz-livewire
Application existante
Vous pouvez voir un diff de toutes les modifications nécessaires pour intégrer OTPz avec le Starter Kit officiel Laravel + Livewire ici : https://github.com/laravel/livewire-starter-kit/compare/main...benbjurstrom:otpz-livewire-starter-kit:main
Installation Manuelle
Via composer
1composer require benbjurstrom/otpz
Publier et lancer les migrations
1php artisan vendor:publish --tag="otpz-migrations"2php artisan migrate
Ajoutez l’interface et le trait du package à votre modèle Authenticatable
1// app/Models/User.php 2namespace App\Models; 3 4//... 5use BenBjurstrom\Otpz\Models\Concerns\HasOtps; 6use BenBjurstrom\Otpz\Models\Concerns\Otpable; 7 8class User extends Authenticatable implements Otpable 9{10 use HasFactory, Notifiable, HasOtps;11 12 // ...13}
(Optionnel) Ajouter les routes suivantes
1// routes/auth.php2use BenBjurstrom\Otpz\Http\Controllers\GetOtpController;3use BenBjurstrom\Otpz\Http\Controllers\PostOtpController;4//...5Route::get('otpz/{id}', GetOtpController::class)6 ->name('otpz.show')->middleware('guest');7 8Route::post('otpz/{id}', PostOtpController::class)9 ->name('otpz.post')->middleware('guest');
(Optionnel) Publier les vues pour customiser le style
1php artisan vendor:publish --tag="otpz-views"
Ce package publie les vues suivantes :
1resources/2└── views/3 └── vendor/4 └── otpz/5 ├── otp.blade.php (for entering the OTP)6 ├── components/template.blade.php7 └── mail/8 ├── notification.blade.php (standard template)9 └── otpz.blade.php (custom template)
(Optionnel) Publier le fichier de configuration
1php artisan vendor:publish --tag="otpz-config"
En savoir plus
- Documentation officielle : https://github.com/benbjurstrom/otpz
- Cas d'utilisation (bientôt) : https://larafrique.com/login/otp