Download the PHP package empuxa/laravel-totp-login without Composer

On this page you can find all versions of the php package empuxa/laravel-totp-login. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package laravel-totp-login

Laravel TOTP Login

Latest Version on Packagist Tests Total Downloads

Banner

Say goodbye to passwords and sign in via a time-based one-time password instead! Laravel TOTP Login is a convenient package that allows you to easily add a TOTP login feature to your Laravel application.

Why Choose Laravel TOTP Login?

You might wonder why you should opt for a TOTP login instead of a magic link solution. Well, this package is designed to complement the existing login methods in your application. It provides an alternative sign-in option for users who haven't set a password yet or don't have an email address. For instance, users who signed up with only a phone number can still enjoy the benefits of secure login through a TOTP.

Features

Requirements

In addition to Laravel v9.52 or newer, this package relies on Alpine.js. If you're using Laravel LiveWire, you are already good to go. Otherwise, ensure to include Alpine.js in your application. Also, you need to have a notifiable user model.

Installation

Install the package via composer:

Copy the vendor files and adjust the config file config/totp-login.php to your needs:

Adjust the config to your needs, then run the migrations:

That's it! You're ready to start using the TOTP login feature in your Laravel application.

Configuration

The package offers extensive configuration options in config/totp-login.php. Key settings include:

See the published config file for detailed explanations of all available options.

Usage

The sign-in process for this repository involves three steps:

  1. Enter the user's email address, phone number, or any other specified identifier, and request a TOTP.
  2. If the entered information is valid, a TOTP will be sent to the user. You may need to customize the notification channel based on the user model you are using.
  3. Enter the received TOTP to log in the user.

Routes

By default, the package registers the following routes under the /login prefix (you can change it in the config):

Customizing Routes

You can customize the route prefix in config/totp-login.php:

Manual Route Registration

If you need more control, you can disable automatic route registration and register routes manually in your routes/web.php:

Using Custom Identifiers

By default, the package uses email addresses as identifiers. However, you can use any column from your user model (phone numbers, usernames, etc.):

Make sure to update your validation rules accordingly:

Don't forget to update the notification afterward to send SMS instead of mails!

Superpin for Testing

During development and testing, you can enable a "superpin" that works for all users. While the superpin is always valid, the package still dispatches the notification, so you can use either the superpin or the actual code sent to the user for login.

Important: Superpins are automatically disabled in production environments and only work in environments specified in your config (default: local, testing). You can also specify individual user identifiers that can bypass environment restrictions for staging/demo purposes.

See config/totp-login.php for more superpin configuration options.

Customizing the Views

While the initial steps are relatively straightforward, it's now necessary to customize the views. These views have been designed to be as simple as possible (some might even consider them "ugly") and can be located in the resources/views/vendor/totp-login directory.

Why are they not visually appealing? Different applications adopt various layouts and frameworks. Since you have the most knowledge about your application, you can change the views to suit your specific requirements.

Modifying the Notification

The package publishes a default notification view at resources/views/vendor/totp-login/notification.blade.php. You may want to make adjustments to this notification to align it with your preferences and needs.

Different Notification Channels

If you plan on using SMS or similar as your preferred notification channel, you can create a custom notification class. The TOTP and the user's IP address will be passed to the constructor of this class. Finally, replace the default notification class within the config/totp-login.php file with your custom notification.

Custom User Model Scope

By default, the package looks up users without any additional filtering. However, you might need to restrict which users can use TOTP login. Common use cases include:

To apply a scope to your user model, add the totpLoginScope() method to your User model:

For example, if you're using soft deletes and want to exclude trashed users:

Or if you have a multi-tenant application:

Events

The package dispatches various events throughout the authentication process, allowing you to monitor and respond to authentication attempts, failures, and rate limiting violations.

Success Events

Failure Events

Identifier Phase

Code Phase

Rate Limit Events

Rate Limit Event Behavior

The package distinguishes between initial rate limit violations and persistent abuse:

  1. First rate limit hit: Fires CodeRateLimitExceeded or IdentifierRateLimitExceeded (package-specific) + Lockout (Laravel's standard event for rate limiting)
  2. Subsequent attempts: Fires CodeRateLimitContinued or IdentifierRateLimitContinued on each attempt (no Lockout event)

This allows you to:

Listening to Events

Using Event Subscriber (Recommended)

The recommended approach is to use an event subscriber with config keys. This way, if you customize the event classes in your config, your listeners will automatically use the correct events:

Register the subscriber in your EventServiceProvider:

Using Direct Event Classes

Alternatively, you can listen to events directly in your EventServiceProvider:

Customizing Events

All events are configurable in config/totp-login.php under the events key. You can replace the default event classes with your own custom implementations:

When using the event subscriber approach with config keys (recommended), your listeners will automatically use these custom event classes without any changes to your subscriber.

Testing

Changelog

Please see CHANGELOG for more information on what has changed recently.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.


All versions of laravel-totp-login with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
illuminate/contracts Version ^9.52|^10.0|^11.0|^12.0|^13.0
illuminate/events Version ^9.52|^10.0|^11.0|^12.0|^13.0
illuminate/notifications Version ^9.52|^10.0|^11.0|^12.0|^13.0
illuminate/routing Version ^9.52|^10.0|^11.0|^12.0|^13.0
illuminate/support Version ^9.52|^10.0|^11.0|^12.0|^13.0
illuminate/view Version ^9.52|^10.0|^11.0|^12.0|^13.0
spatie/laravel-package-tools Version ^1.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package empuxa/laravel-totp-login contains the following files

Loading the files please wait ...