aboutsummaryrefslogtreecommitdiff
path: root/app/class/Modelauthtoken.php
blob: 91a2a0545b11e9ab566c3f3f0241cfc7053825a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php

namespace Wcms;

use DateTimeImmutable;
use JamesMoss\Flywheel\Document;

class Modelauthtoken extends Modeldb
{

    const AUTHTOKEN_REPO_NAME = 'authtoken';
    const AUTHTOKEN_ID_LENGTH = 30;

    public function __construct()
    {
        parent::__construct();
        $this->storeinit(self::AUTHTOKEN_REPO_NAME);
    }

    /**
     * Add a Token in the database according to the Users datas
     * 
     * @param User $user
     */
    public function add(User $user)
    {
        $datas = [
            'user' => $user->id(),
            'ip' => $_SERVER['SERVER_ADDR'],
            'date' => new DateTimeImmutable(),
            'conservation' => $user->cookie(),
            'useragent' => $_SERVER['HTTP_USER_AGENT']
        ];
        $tokendata = new Document($datas);

        $exist = true;
        while ($exist !== false) {
            $id = bin2hex(random_bytes(self::AUTHTOKEN_ID_LENGTH));
            $exist = $this->repo->findById($id);
        }

        $tokendata->setId($id);
        return $this->repo->store($tokendata);

    }

    public function getbytoken(string $token)
    {
        return $this->repo->findById($token);
    }

    public function delete(string $token)
    {
        return $this->repo->delete($token);
    }

    /**
     * @param string $id user Id
     */
    public function listbyuser(string $id)
    {
        return $this->repo->query()->where('user', '==', $id)->orderBy('date')->execute();
    }

}






?>