Skip to content
Snippets Groups Projects
Select Git revision
  • 0fc5cd46ee15041c25eb09b7631cba92e8881192
  • master default
  • method_check
  • custom_prefix
  • package
  • cookies
  • v2.1.1
  • v2.1.0
  • v2.1.0-rc5
  • v2.1.0-rc4
  • v2.1.0-rc3
  • v2.1.0-rc2
  • v2.1.0-rc1
  • v2.0.7
  • v2.0.6
  • v2.0.5
  • v2.0.4
  • v2.0.3
  • v2.0.2
  • v2.0.1
  • v2.0.0
  • v1.2.8
  • v1.2.7
  • v1.2.6
  • v1.2.5
  • v1.2.4
26 results

doc.go

Blame
  • doc.go 19.31 KiB
    <?php
    
    namespace QuasselRestSearch;
    
    use PDO;
    
    require_once 'User.php';
    require_once 'Config.php';
    require_once 'helper/AuthHelper.php';
    require_once 'backends/BackendFactory.php';
    
    class Database
    {
        private $user;
    
        private $backend;
        private $enable_ranking;
    
        private function __construct(string $database_connector, string $username, string $password, string $type, array $options, bool $enable_ranking)
        {
            $this->backend = BackendFactory::create($type, new \PDO($database_connector, $username, $password), $options, $enable_ranking);
            $this->enable_ranking = $enable_ranking;
        }
    
        public static function createFromConfig(Config $config): Database
        {
            return Database::createFromOptions($config->database_connector, $config->username, $config->password, $config->backend, $config->database_options, $config->enable_ranking);
        }
    
        public static function createFromOptions(string $database_connector, string $username, string $password, string $type, array $options, bool $enable_ranking): Database
        {
            return new Database($database_connector, $username, $password, $type, $options, $enable_ranking);
        }
    
        public function authenticateFromHeader(string $header): bool
        {
            $parsedHeader = AuthHelper::parseAuthHeader($header);
            return $this->authenticate($parsedHeader['username'], $parsedHeader['password']);
        }
    
        public function authenticate(string $username, string $password): bool
        {
            if (!isset($username) || !isset($password)) {
                syslog(LOG_ERR, "Username or password not set");
                return false;
            }
    
            $stmt = $this->backend->findUser();
    
            $stmt->bindParam(":username", $username);
            $stmt->execute();
            $result = $stmt->fetch(\PDO::FETCH_ASSOC);
    
            if ($result === FALSE) {
                syslog(LOG_ERR, "Couldn’t find user " . $username);
                return false;
            }
    
            $user = new User($result);
    
            if (!AuthHelper::initialAuthenticateUser($password, $user->password, $user->hashversion)) {
                syslog(LOG_ERR, "Password does not match for user " . $username);
                return false;
            }
    
            $this->user = $user;
            return true;
        }
    
        private function apply_config(\PDOStatement $stmt)