PHPackages                             empuxa/laravel-pin-login - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. empuxa/laravel-pin-login

Abandoned → [empuxa/laravel-totp-login](/?search=empuxa%2Flaravel-totp-login)ArchivedLibrary[Authentication &amp; Authorization](/categories/authentication)

empuxa/laravel-pin-login
========================

Say goodbye to passwords and sign in via PIN instead.

v3.0.1(2y ago)25.6kMITPHPPHP ^8.1

Since Jun 26Pushed 2y agoCompare

[ Source](https://github.com/empuxa/laravel-pin-login)[ Packagist](https://packagist.org/packages/empuxa/laravel-pin-login)[ Docs](https://github.com/empuxa/laravel-pin-login)[ GitHub Sponsors](https://github.com/empuxa)[ RSS](/packages/empuxa-laravel-pin-login/feed)WikiDiscussions main Synced today

READMEChangelog (10)Dependencies (11)Versions (18)Used By (0)

Laravel PIN Login
=================

[](#laravel-pin-login)

> This package has been renamed. The successor can be found here:

[![Latest Version on Packagist](https://camo.githubusercontent.com/c4a3832fee2dd37a6d5827d720c6ea131129a603595ce4c88149576affec9b17/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f656d707578612f6c61726176656c2d70696e2d6c6f67696e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/empuxa/laravel-pin-login)[![Tests](https://camo.githubusercontent.com/2e7c63c504a28df99ea1dea605aa001ccb1969ade808fab38674b0837bfe5830/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f656d707578612f6c61726176656c2d70696e2d6c6f67696e2f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/empuxa/laravel-pin-login/actions/workflows/run-tests.yml)[![Total Downloads](https://camo.githubusercontent.com/88c3152b5385d79c0ef8262818a472e2664bc255158f69a639a7e803ddee37bc/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f656d707578612f6c61726176656c2d70696e2d6c6f67696e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/empuxa/laravel-pin-login)

[![Banner](https://camo.githubusercontent.com/8bf7d8fa87248b8c6e7cf3c8e23587247fa621aa0b61dd4a2ce62091c1d8b189/68747470733a2f2f62616e6e6572732e6265796f6e64636f2e64652f4c61726176656c25323050494e2532304c6f67696e2e706e673f7468656d653d6c69676874267061636b6167654d616e616765723d636f6d706f7365722b72657175697265267061636b6167654e616d653d656d7075786125324670696e2d6c6f67696e267061747465726e3d617263686974656374267374796c653d7374796c655f31266465736372697074696f6e3d476f6f646279652b70617373776f726473253231266d643d312673686f7757617465726d61726b3d3026666f6e7453697a653d313030707826696d616765733d68747470732533412532462532466c61726176656c2e636f6d253246696d672532466c6f676f6d61726b2e6d696e2e737667)](https://camo.githubusercontent.com/8bf7d8fa87248b8c6e7cf3c8e23587247fa621aa0b61dd4a2ce62091c1d8b189/68747470733a2f2f62616e6e6572732e6265796f6e64636f2e64652f4c61726176656c25323050494e2532304c6f67696e2e706e673f7468656d653d6c69676874267061636b6167654d616e616765723d636f6d706f7365722b72657175697265267061636b6167654e616d653d656d7075786125324670696e2d6c6f67696e267061747465726e3d617263686974656374267374796c653d7374796c655f31266465736372697074696f6e3d476f6f646279652b70617373776f726473253231266d643d312673686f7757617465726d61726b3d3026666f6e7453697a653d313030707826696d616765733d68747470732533412532462532466c61726176656c2e636f6d253246696d672532466c6f676f6d61726b2e6d696e2e737667)

Say goodbye to passwords and sign in via PIN instead! Laravel PIN Login is a convenient package that allows you to easily add a PIN login feature to your Laravel application.

Why Choose Laravel PIN Login?
-----------------------------

[](#why-choose-laravel-pin-login)

You might wonder why you should opt for a PIN 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 PIN.

Features
--------

[](#features)

- Simplified sign-in process using a PIN
- Compatibility with existing login methods
- Support for users without passwords or email addresses

[![How it works](docs/animation.gif)](docs/animation.gif)

Requirements
------------

[](#requirements)

In addition to Laravel v9.52 or newer, this package relies on [Alpine.js](https://alpinejs.dev/). If you're using [Laravel LiveWire](https://laravel-livewire.com/), 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
------------

[](#installation)

Install the package via composer:

```
composer require empuxa/laravel-pin-login
```

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

```
php artisan vendor:publish --provider="Empuxa\PinLogin\PinLoginServiceProvider"
```

Run the migrations:

```
php artisan migrate
```

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

Usage
-----

[](#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 PIN.
2. If the entered information is valid, a PIN 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 PIN to log in the user.

### Customizing the Views

[](#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/pin-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

[](#modifying-the-notification)

Within the copied views, you will come across a notification that's sent to the user. You may want to make adjustments to this notification to align it with your preferences and needs.

#### Different Notification Channels

[](#different-notification-channels)

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

### Custom User Model Scope

[](#custom-user-model-scope)

To apply a scope to your user model, add the following method to your model:

```
public static function pinLoginScope(): Builder
{
    return self::yourGlobalScope();
}
```

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [Marco Raddatz](https://github.com/marcoraddatz)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

31

—

LowBetter than 66% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity20

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 82.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~27 days

Recently: every ~20 days

Total

12

Last Release

807d ago

Major Versions

v1.3.0 → v2.0.02024-01-26

v2.0.2 → v3.0.02024-03-15

### Community

Maintainers

![](https://www.gravatar.com/avatar/9a2715a7b4e17b0ed07d23b300474f34d97d7abafbb602ec399f352a62f2e527?d=identicon)[marcoraddatz](/maintainers/marcoraddatz)

---

Top Contributors

[![marcoraddatz](https://avatars.githubusercontent.com/u/248815?v=4)](https://github.com/marcoraddatz "marcoraddatz (102 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (11 commits)")[![StyleCIBot](https://avatars.githubusercontent.com/u/11048387?v=4)](https://github.com/StyleCIBot "StyleCIBot (7 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (4 commits)")

---

Tags

Passwordlessempuxapin-login

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/empuxa-laravel-pin-login/health.svg)

```
[![Health](https://phpackages.com/badges/empuxa-laravel-pin-login/health.svg)](https://phpackages.com/packages/empuxa-laravel-pin-login)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M345](/packages/psalm-plugin-laravel)[laravel/cashier

Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.

2.6k29.9M146](/packages/laravel-cashier)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k15.1M131](/packages/laravel-pulse)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9762.4M131](/packages/roots-acorn)[pressbooks/pressbooks

Pressbooks is an open source book publishing tool built on a WordPress multisite platform. Pressbooks outputs books in multiple formats, including PDF, EPUB, web, and a variety of XML flavours, using a theming/templating system, driven by CSS.

45444.2k1](/packages/pressbooks-pressbooks)[moonshine/moonshine

Laravel administration panel

1.3k253.1k81](/packages/moonshine-moonshine)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
