DatabaseTokenRepository.php 1.29 KB
Newer Older
Jens Segers's avatar
Jens Segers committed
1 2 3
<?php

namespace Jenssegers\Mongodb\Auth;
duxet's avatar
duxet committed
4

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

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

    /**
21
     * @inheritdoc
Jens Segers's avatar
Jens Segers committed
22 23 24
     */
    protected function tokenExpired($token)
    {
25
        // Convert UTCDateTime to a date string.
Jens Segers's avatar
Jens Segers committed
26
        if ($token['created_at'] instanceof UTCDateTime) {
27
            $date = $token['created_at']->toDateTime();
28
            $date->setTimezone(new DateTimeZone(date_default_timezone_get()));
Jens Segers's avatar
Jens Segers committed
29
            $token['created_at'] = $date->format('Y-m-d H:i:s');
Dmitry Borzyonok's avatar
Dmitry Borzyonok committed
30
        } elseif (is_array($token['created_at']) && isset($token['created_at']['date'])) {
Jens Segers's avatar
Jens Segers committed
31 32
            $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()));
33
            $token['created_at'] = $date->format('Y-m-d H:i:s');
Jens Segers's avatar
Jens Segers committed
34 35 36 37
        }

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