Creating one-time passwords | laravel-one-time-passwords | Spatie

 SPATIE

  Laravel One-Time Passwords
=============================

spatie.be/open-source

  [Docs](https://spatie.be/docs)  [Laravel-one-time-passwords](https://spatie.be/docs/laravel-one-time-passwords/v2)  Basic-usage  Creating one-time passwords

 Version   v2   v1

 Other versions for crawler [v2](https://spatie.be/docs/laravel-one-time-passwords/v2) [v1](https://spatie.be/docs/laravel-one-time-passwords/v1)

- [ Introduction ](https://spatie.be/docs/laravel-one-time-passwords/v2/introduction)
- [ Support us ](https://spatie.be/docs/laravel-one-time-passwords/v2/support-us)
- [ Installation &amp; setup ](https://spatie.be/docs/laravel-one-time-passwords/v2/installation-setup)
- [ Questions and issues ](https://spatie.be/docs/laravel-one-time-passwords/v2/questions-issues)
- [ Changelog ](https://spatie.be/docs/laravel-one-time-passwords/v2/changelog)
- [ About us ](https://spatie.be/docs/laravel-one-time-passwords/v2/about-us)

Basic usage
-----------

- [ Introducing one-time-passwords ](https://spatie.be/docs/laravel-one-time-passwords/v2/basic-usage/introducing-one-time-passwords)
- [ Creating one-time passwords ](https://spatie.be/docs/laravel-one-time-passwords/v2/basic-usage/creating-one-time-passwords)
- [ Configuring notifications ](https://spatie.be/docs/laravel-one-time-passwords/v2/basic-usage/configuring-notifications)
- [ Consuming one-time passwords ](https://spatie.be/docs/laravel-one-time-passwords/v2/basic-usage/consuming-one-time-passwords)
- [ Using the Livewire component ](https://spatie.be/docs/laravel-one-time-passwords/v2/basic-usage/using-the-livewire-component)

Configuring security
--------------------

- [ Introduction ](https://spatie.be/docs/laravel-one-time-passwords/v2/configuring-security/introduction)
- [ Enforcing origin ](https://spatie.be/docs/laravel-one-time-passwords/v2/configuring-security/enforcing-origin)
- [ Configuring password format ](https://spatie.be/docs/laravel-one-time-passwords/v2/configuring-security/configuring-password-format)
- [ Allowing multiple passwords ](https://spatie.be/docs/laravel-one-time-passwords/v2/configuring-security/allowing-multiple-passwords)
- [ Setting default expiration time ](https://spatie.be/docs/laravel-one-time-passwords/v2/configuring-security/setting-default-expiration-time)

Advanced usage
--------------

- [ Customizing actions ](https://spatie.be/docs/laravel-one-time-passwords/v2/advanced-usage/customizing-actions)
- [ Using your own model ](https://spatie.be/docs/laravel-one-time-passwords/v2/advanced-usage/using-your-own-model)
- [ Handling events ](https://spatie.be/docs/laravel-one-time-passwords/v2/advanced-usage/handling-events)

 Creating one-time passwords
===========================

###  On this page

1. [ Creating and sending a one-time password ](#content-creating-and-sending-a-one-time-password)
2. [ Only creating a one-time password ](#content-only-creating-a-one-time-password)

The package has methods to create and send one-time passwords. These methods will create a row in the `one_time_passwords` table.

By default, the one-time password will be six digits long, but you can [configure its format](/docs/laravel-one-time-passwords/v2/configuring-security/enforcing-origin). One-time passwords have a default expiry time of 2 minutes, but the expiration time [can be configured as well](/docs/laravel-one-time-passwords/v2/configuring-security/setting-default-expiration-time).

When creating a one-time password for the user, all older one-time passwords for that user will be deleted.

Creating and sending a one-time password
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

```
$user->sendOneTimePassword();
```

This will create a one-time password and send it to the user's email using the `OneTimePasswordNotification`-notification.

Only creating a one-time password
-----------------------------------------------------------------------------------------------------------------------------------------------------------

To create a one-time password without actually sending it to the user, you can call the `createOneTimePassword` method.

```
$oneTimePasswordModel = $user->createOneTimePassword();
```

This method will return an instance of a newly created `OneTimePassword` model.
