Sécurisez Laravel avec des mots de passe à usage unique

OTPZ est un package Laravel qui fournit des mots de passe à usage unique (OTP) sécurisés comme premier facteur pour les applications Laravel. Les utilisateurs saisissent leur adresse e-mail et reçoivent un code à usage unique pour se connecter.

Larafrique
28/08/2025
Sécurisez Laravel avec des mots de passe à usage unique

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.php
2use 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.php
7 └── 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

Sommaire