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