xref: /plugin/davcal/vendor/sabre/dav/lib/DAV/Auth/Backend/PDO.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\DAV\Auth\Backend;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehler/**
6*a1a3b679SAndreas Boehler * This is an authentication backend that uses a database to manage passwords.
7*a1a3b679SAndreas Boehler *
8*a1a3b679SAndreas Boehler * @copyright Copyright (C) 2007-2015 fruux GmbH (https://fruux.com/).
9*a1a3b679SAndreas Boehler * @author Evert Pot (http://evertpot.com/)
10*a1a3b679SAndreas Boehler * @license http://sabre.io/license/ Modified BSD License
11*a1a3b679SAndreas Boehler */
12*a1a3b679SAndreas Boehlerclass PDO extends AbstractDigest {
13*a1a3b679SAndreas Boehler
14*a1a3b679SAndreas Boehler    /**
15*a1a3b679SAndreas Boehler     * Reference to PDO connection
16*a1a3b679SAndreas Boehler     *
17*a1a3b679SAndreas Boehler     * @var PDO
18*a1a3b679SAndreas Boehler     */
19*a1a3b679SAndreas Boehler    protected $pdo;
20*a1a3b679SAndreas Boehler
21*a1a3b679SAndreas Boehler    /**
22*a1a3b679SAndreas Boehler     * PDO table name we'll be using
23*a1a3b679SAndreas Boehler     *
24*a1a3b679SAndreas Boehler     * @var string
25*a1a3b679SAndreas Boehler     */
26*a1a3b679SAndreas Boehler    public $tableName = 'users';
27*a1a3b679SAndreas Boehler
28*a1a3b679SAndreas Boehler
29*a1a3b679SAndreas Boehler    /**
30*a1a3b679SAndreas Boehler     * Creates the backend object.
31*a1a3b679SAndreas Boehler     *
32*a1a3b679SAndreas Boehler     * If the filename argument is passed in, it will parse out the specified file fist.
33*a1a3b679SAndreas Boehler     *
34*a1a3b679SAndreas Boehler     * @param PDO $pdo
35*a1a3b679SAndreas Boehler     */
36*a1a3b679SAndreas Boehler    function __construct(\PDO $pdo) {
37*a1a3b679SAndreas Boehler
38*a1a3b679SAndreas Boehler        $this->pdo = $pdo;
39*a1a3b679SAndreas Boehler
40*a1a3b679SAndreas Boehler    }
41*a1a3b679SAndreas Boehler
42*a1a3b679SAndreas Boehler    /**
43*a1a3b679SAndreas Boehler     * Returns the digest hash for a user.
44*a1a3b679SAndreas Boehler     *
45*a1a3b679SAndreas Boehler     * @param string $realm
46*a1a3b679SAndreas Boehler     * @param string $username
47*a1a3b679SAndreas Boehler     * @return string|null
48*a1a3b679SAndreas Boehler     */
49*a1a3b679SAndreas Boehler    function getDigestHash($realm, $username) {
50*a1a3b679SAndreas Boehler
51*a1a3b679SAndreas Boehler        $stmt = $this->pdo->prepare('SELECT digesta1 FROM ' . $this->tableName . ' WHERE username = ?');
52*a1a3b679SAndreas Boehler        $stmt->execute([$username]);
53*a1a3b679SAndreas Boehler        return $stmt->fetchColumn() ?: null;
54*a1a3b679SAndreas Boehler
55*a1a3b679SAndreas Boehler    }
56*a1a3b679SAndreas Boehler
57*a1a3b679SAndreas Boehler}
58