DatabaseTokenRepository.php 1.3 KB
Newer Older
duxet's avatar
duxet committed
1 2
<?php namespace Jenssegers\Mongodb\Auth;

David Schreck's avatar
David Schreck committed
3 4
use DateTime;
use DateTimeZone;
5 6
use Illuminate\Auth\Passwords\DatabaseTokenRepository as BaseDatabaseTokenRepository;
use MongoDB\BSON\UTCDateTime;
duxet's avatar
duxet committed
7

8
class DatabaseTokenRepository extends BaseDatabaseTokenRepository
Jens Segers's avatar
Jens Segers committed
9
{
Jens Segers's avatar
Jens Segers committed
10
    /**
11
     * @inheritdoc
Jens Segers's avatar
Jens Segers committed
12 13 14
     */
    protected function getPayload($email, $token)
    {
15
        return ['email' => $email, 'token' => $token, 'created_at' => new UTCDateTime(round(microtime(true) * 1000))];
Jens Segers's avatar
Jens Segers committed
16 17 18
    }

    /**
19
     * @inheritdoc
Jens Segers's avatar
Jens Segers committed
20 21 22
     */
    protected function tokenExpired($token)
    {
23
        // Convert UTCDateTime to a date string.
Jens Segers's avatar
Jens Segers committed
24
        if ($token['created_at'] instanceof UTCDateTime) {
25
            $date = $token['created_at']->toDateTime();
26
            $date->setTimezone(new DateTimeZone(date_default_timezone_get()));
Jens Segers's avatar
Jens Segers committed
27
            $token['created_at'] = $date->format('Y-m-d H:i:s');
Jens Segers's avatar
Jens Segers committed
28
        } elseif (is_array($token['created_at']) and isset($token['created_at']['date'])) {
Jens Segers's avatar
Jens Segers committed
29 30
            $date = new DateTime($token['created_at']['date'], new DateTimeZone(isset($token['created_at']['timezone']) ? $token['created_at']['timezone'] : 'UTC'));
            $date->setTimezone(new DateTimeZone(date_default_timezone_get()));
31
            $token['created_at'] = $date->format('Y-m-d H:i:s');
Jens Segers's avatar
Jens Segers committed
32 33 34 35
        }

        return parent::tokenExpired($token);
    }
duxet's avatar
duxet committed
36
}