Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
11 / 11
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
SanctumRefresh
100.00% covered (success)
100.00%
11 / 11
100.00% covered (success)
100.00%
2 / 2
7
100.00% covered (success)
100.00%
1 / 1
 usePersonalAccessTokenModel
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
6
 boot
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace Albet\SanctumRefresh;
4
5use Albet\SanctumRefresh\Exceptions\InvalidModelException;
6use Illuminate\Database\Eloquent\Model;
7use Laravel\Sanctum\PersonalAccessToken;
8use Laravel\Sanctum\Sanctum;
9use ReflectionClass;
10
11class SanctumRefresh
12{
13    // Use sanctum personal access token model as default.
14    public static string $model = PersonalAccessToken::class;
15
16    /**
17     * Use custom personal access token model
18     * This also alter sanctum personal access token.
19     *
20     * @throws InvalidModelException
21     */
22    public static function usePersonalAccessTokenModel(string|callable $model): void
23    {
24        if (class_exists($model)) {
25            $checkModel = new ReflectionClass($model);
26            if (
27                $checkModel->getParentClass() !== false &&
28                ($checkModel->getParentClass()->name === Model::class ||
29                    $checkModel->getParentClass()->name === PersonalAccessToken::class ||
30                    $checkModel->getParentClass()->name === \Albet\SanctumRefresh\Models\PersonalAccessToken::class)
31            ) {
32                Sanctum::usePersonalAccessTokenModel($model);
33                self::$model = $model;
34
35                return;
36            }
37        }
38
39        throw new InvalidModelException($model);
40    }
41
42    public static function boot(): void
43    {
44    }
45}