Skip to content

Quick start

🔗 Register trait

To begin your User model should use the Laravel\Sanctum\HasApiTokens trait:

use Usmonaliyev\Redium\Traits\HasRediumTokens;

class User extends Authenticatable
{
    use HasRediumTokens, HasFactory, Notifiable;

    protected $fillable = [
        'id',
        'name',
        'email',
        'password',
    ];
}

You should add id to fillable property, it is important.

Please add your columns to fillable that you want to get when you use auth()->user() or Auth::user().

🛡️ Register guard

Register redium guard in your config/auth.php file:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'redium' => [
        'driver' => 'redium',
        'provider' => 'users',
    ],
],

🔑 Create new token

To create new token, you may use createToken method. API tokens are hashed using SHA-256 hashing before being stored in Redis database. You should display plainTextToken value to the user immediately after the token has been created:

Before creating token, make sure you have valid Redis server credentials in your .env file.

use Illuminate\Http\Request;

Route::post('/create-token', function (Request $request) {
    $user = User::query()->first();
    $token = $user->createToken('Name for token');

    return ['token' => $token->plainTextToken];
});

🔐 Protect your routes

Take plain token and send request with Authorization: Bearer $plainTextToken header.

To protect routes you should attach the redium authentication guard to your API routes.

use Illuminate\Http\Request;

Route::middleware('auth:redium')->get('/user', function (Request $request) {
    return $request->user();
});

If you want more, keep going...