PHPackages                             mikemclin/passport-custom-request-grant - 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. mikemclin/passport-custom-request-grant

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

mikemclin/passport-custom-request-grant
=======================================

Custom Request Grant for Laravel Passport

1.0.1(8y ago)343.6k↓50%17[1 issues](https://github.com/mikemclin/passport-custom-request-grant/issues)MITPHP

Since Sep 11Pushed 8y ago2 watchersCompare

[ Source](https://github.com/mikemclin/passport-custom-request-grant)[ Packagist](https://packagist.org/packages/mikemclin/passport-custom-request-grant)[ RSS](/packages/mikemclin-passport-custom-request-grant/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (5)Used By (0)

Install
-------

[](#install)

Install with composer... `composer require mikemclin/passport-custom-request-grant`

### Versions

[](#versions)

- Laravel 5.4 - Use version `^1.0`
- Laravel 5.3 - Use version `^0.1`

Setup
-----

[](#setup)

- Add `MikeMcLin\Passport\CustomRequestGrantProvider` to your list of providers **after** `Laravel\Passport\PassportServiceProvider`.
- Add `byPassportCustomRequest($request)` method to your `User` model (or whatever model you have configured to work with Passport).
    - The method should accept an `Illuminate\Http\Request` object.
    - You should authorize and retrieve user based on this request
    - If you find that the request met your requirement, return the User model.
    - If the request did not satisfy your requirement, return `null`

How to use
----------

[](#how-to-use)

- Make a **POST** request to `https://your-site.com/oauth/token`, just like you would a **Password** or **Refresh** grant.
- The POST body should contain `grant_type` = `custom_request`.
- The request will get routed to your `User::byPassportCustomRequest()` function, where you will determine if access should be granted or not.
- An `access_token` and `refresh_token` will be returned if successful.

### Example

[](#example)

Here is what a `User::byPassportCustomRequest()` method might look like...

```
/**
 * Verify and retrieve user by custom token request.
 *
 * @param \Illuminate\Http\Request $request
 *
 * @return \Illuminate\Database\Eloquent\Model|null
 * @throws \League\OAuth2\Server\Exception\OAuthServerException
 */
public function byPassportCustomRequest(Request $request)
{
    try {
        if ($request->get('sso_token')) {
            return $this->bySsoToken($request->get('sso_token'));
        }
    } catch (\Exception $e) {
        throw OAuthServerException::accessDenied($e->getMessage());
    }
    return null;
}
```

In this example, the app is able to authenticate a user based on an `sso_token` property from a submitted JSON payload. The `bySsoToken` is this app's way of doing that. It will return `null` or a user object. It also might throw exceptions explaining why the token is invalid. The `byPassportCustomRequest` catches any of those exceptions and converts them to appropriate OAuth exception type. If an `ssoToken` is not present on the request payload, then we return `null` which returns an **invalid\_credentials** error response:

```
{
  "error": "invalid_credentials",
  "message": "The user credentials were incorrect."
}
```

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance19

Infrequent updates — may be unmaintained

Popularity33

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 75% 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 ~147 days

Total

4

Last Release

3089d ago

Major Versions

0.1.1 → 1.0.02017-02-09

### Community

Maintainers

![](https://www.gravatar.com/avatar/51d520461cb8178303489e606806b6057e107083bf2fc30b2071583b574c2563?d=identicon)[mikemclin](/maintainers/mikemclin)

---

Top Contributors

[![mikemclin](https://avatars.githubusercontent.com/u/1570155?v=4)](https://github.com/mikemclin "mikemclin (9 commits)")[![jmancusi](https://avatars.githubusercontent.com/u/645563?v=4)](https://github.com/jmancusi "jmancusi (2 commits)")[![EricTendian](https://avatars.githubusercontent.com/u/498525?v=4)](https://github.com/EricTendian "EricTendian (1 commits)")

---

Tags

laravellumenoauthpassportgrant

### Embed Badge

![Health badge](/badges/mikemclin-passport-custom-request-grant/health.svg)

```
[![Health](https://phpackages.com/badges/mikemclin-passport-custom-request-grant/health.svg)](https://phpackages.com/packages/mikemclin-passport-custom-request-grant)
```

###  Alternatives

[coderello/laravel-passport-social-grant

Social Grant for Laravel Passport

179607.4k3](/packages/coderello-laravel-passport-social-grant)[danjdewhurst/laravel-passport-facebook-login

Facebook Token Request Grant for Laravel Passport

2824.4k](/packages/danjdewhurst-laravel-passport-facebook-login)[adaojunior/passport-social-grant

Social grant for Laravel Passport

116279.2k1](/packages/adaojunior-passport-social-grant)[wearedevtical/novassport

A Laravel Nova tool to manage API Authentication (Passport).

663.1k](/packages/wearedevtical-novassport)

PHPackages © 2026

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