PHPackages                             supaapps/supaapps-guard - 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. supaapps/supaapps-guard

ActiveLibrary

supaapps/supaapps-guard
=======================

A JWT Auth driver, opinionated and tailed to work with supaapps-auth-server

v1.0.0(1y ago)01.9k↓100%[1 PRs](https://github.com/supaapps/supaapps-guard/pulls)MITPHPPHP ^8.1 || ^8.3 || ^8.4CI failing

Since Jan 27Pushed 1y ago1 watchersCompare

[ Source](https://github.com/supaapps/supaapps-guard)[ Packagist](https://packagist.org/packages/supaapps/supaapps-guard)[ RSS](/packages/supaapps-supaapps-guard/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (9)Versions (24)Used By (0)

Supaapps Auth Guard
====================

[](#supaapps-auth-guard-)

- [Installation](#installation)
    - [ENV vars](#env-vars)
    - [Add new custom guard](#add-new-custom-guard)
- [Usage example](#usage-example)
- [Testing](#testing)
    - [HTTP testing](#http-testing)

Installation
------------

[](#installation)

`composer require supaapps/supaapps-guard`

### ENV vars

[](#env-vars)

add env vars to your `.env`:

```
SUPAAPPS_GUARD_AUTH_SERVER_URL=http://example.com
SUPAAPPS_GUARD_AUTH_REALM_NAME=myapp
```

### Add new custom guard

[](#add-new-custom-guard)

On `config/auth.php` add the new guard

```
'guards' => [
    'jwt' => [
        'driver' => 'supaapps-guard',
        'provider' => 'users',
    ],
],
```

Also, set the default guard to `jwt`

```
'defaults' => [
    'guard' => 'jwt',
    ...
```

Usage example
-------------

[](#usage-example)

on `routes/api.php`, add following lines

```
Route::middleware('auth:jwt')->get('/user', function (Request $request) {
    return [
        $request->user(),
        auth()->firstName(),
        auth()->lastName(),
        auth()->email(),
        auth()->scopes(),
        auth()->scopesArray(),
    ];
});
```

*note*: `auth()` uses the default drive by default. If you didn't set the `jwt` as default driver then you need to call `auth('jwt')` on the previous usage example

Testing
-------

[](#testing)

You can generate JWT token for testing. It will be generated with [private\_key](./tests/public/private_key) from tests folder. And will be compared with `public_key` on same folder as well. **example**

```
use Tests\TestCase;
use Supaapps\Guard\Tests\Concerns\GenerateJwtToken;

class CustomTest extends TestCase
{
    use GenerateJwtToken;

    public function testThatIAmActingAsUser(): void
    {
        $user = User::factory()->create();

        $this->withAccessTokenFor($user);

        $this->assertTrue(auth('jwt')->check());
        $this->assertTrue($user->id, auth('jwt')->id());
    }
}
```

### HTTP testing

[](#http-testing)

`withAccessTokenFor` method is adding the `Bearer` token to `headers` which are sent by http tests. But you need to specify the server url somewhere on your tests. eg. `tests/CreatesApplication`:

```
