Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
88.89% covered (warning)
88.89%
8 / 9
100.00% covered (success)
100.00%
1 / 1
CRAP
n/a
0 / 0
Albet\SanctumRefresh\checkRefreshToken
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
7
1<?php
2
3namespace Albet\SanctumRefresh;
4
5use Albet\SanctumRefresh\Models\RefreshToken;
6use Carbon\Carbon;
7
8if (!function_exists(__NAMESPACE__ . '\checkRefreshToken')) {
9    function checkRefreshToken(string $token): bool
10    {
11        if (!str_contains($token, '|')) return false;
12
13        $chunks = explode('|', $token, 2);
14
15        [$tokenId, $userToken] = $chunks;
16
17        if (trim($userToken) === '' || trim($tokenId) === '') return false;
18
19        $token = RefreshToken::find((int) $tokenId);
20
21        // Check if token exists and valid
22        if (!$token || !hash_equals($token->token, hash('sha256', $userToken))) return false;
23
24        // Check if token is expired
25        if (Carbon::parse($token->expires_at)->lt(now())) return false;
26
27        return true;
28    }
29}