DatabaseTokenRepository.php 1.27 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 18 19 20 21
        return [
            'email' => $email,
            'token' => $this->hasher->make($token),
            'created_at' => new UTCDateTime(time() * 1000),
        ];
Jens Segers's avatar
Jens Segers committed
22 23 24
    }

    /**
25
     * @inheritdoc
Jens Segers's avatar
Jens Segers committed
26
     */
Le The Hoang's avatar
Le The Hoang committed
27
    protected function tokenExpired($createdAt)
Jens Segers's avatar
Jens Segers committed
28
    {
29
        // Convert UTCDateTime to a date string.
Le The Hoang's avatar
Le The Hoang committed
30 31
        if ($createdAt instanceof UTCDateTime) {
            $date = $createdAt->toDateTime();
32
            $date->setTimezone(new DateTimeZone(date_default_timezone_get()));
Le The Hoang's avatar
Le The Hoang committed
33
            $createdAt = $date->format('Y-m-d H:i:s');
Simon Schaufelberger's avatar
Simon Schaufelberger committed
34
        } elseif (is_array($createdAt) && isset($createdAt['date'])) {
Le The Hoang's avatar
Le The Hoang committed
35
            $date = new DateTime($createdAt['date'], new DateTimeZone(isset($createdAt['timezone']) ? $createdAt['timezone'] : 'UTC'));
Jens Segers's avatar
Jens Segers committed
36
            $date->setTimezone(new DateTimeZone(date_default_timezone_get()));
Le The Hoang's avatar
Le The Hoang committed
37
            $createdAt = $date->format('Y-m-d H:i:s');
Jens Segers's avatar
Jens Segers committed
38 39
        }

Le The Hoang's avatar
Le The Hoang committed
40
        return parent::tokenExpired($createdAt);
Jens Segers's avatar
Jens Segers committed
41
    }
duxet's avatar
duxet committed
42
}