diff options
Diffstat (limited to 'src/SemanticScuttle')
| -rw-r--r-- | src/SemanticScuttle/Model/User/SslClientCert.php | 72 | ||||
| -rw-r--r-- | src/SemanticScuttle/Service/User/SslClientCert.php | 28 | ||||
| -rw-r--r-- | src/SemanticScuttle/header.php | 1 | 
3 files changed, 101 insertions, 0 deletions
| diff --git a/src/SemanticScuttle/Model/User/SslClientCert.php b/src/SemanticScuttle/Model/User/SslClientCert.php new file mode 100644 index 0000000..ab7b288 --- /dev/null +++ b/src/SemanticScuttle/Model/User/SslClientCert.php @@ -0,0 +1,72 @@ +<?php +/** + * SemanticScuttle - your social bookmark manager. + * + * PHP version 5. + * + * @category Bookmarking + * @package  SemanticScuttle + * @author   Christian Weiske <cweiske@cweiske.de> + * @license  AGPL http://www.gnu.org/licenses/agpl.html + * @link     http://sourceforge.net/projects/semanticscuttle + */ + +/** + * SSL client certificate model. Represents one single client certificate + * + * @category Bookmarking + * @package  SemanticScuttle + * @author   Christian Weiske <cweiske@cweiske.de> + * @license  AGPL http://www.gnu.org/licenses/agpl.html + * @link     http://sourceforge.net/projects/semanticscuttle + */ +class SemanticScuttle_Model_User_SslClientCert +{ +    public $id; +    public $uId; +    public $sslSerial; +    public $sslClientIssuerDn; +    public $sslName; +    public $sslEmail; + +    /** +     * Creates and returns a new object and fills it with +     * tha passed values from the database. +     * +     * @param array $arCertRow Database row array +     * +     * @return SemanticScuttle_Model_User_SslClientCert +     */ +    public static function fromDb($arCertRow) +    { +        $cert = new self(); +        foreach (get_object_vars($cert) as $variable => $dummy) { +            if (isset($arCertRow[$variable])) { +                $cert->$variable = $arCertRow[$variable]; +            } +        } +        return $cert; +    } + + + +    /** +     * Tells you if this certificate is the one the user is currently browsing +     * with. +     * +     * @return boolean True if this certificate is the current browser's +     */ +    public function isCurrent() +    { +        if (!isset($_SERVER['SSL_CLIENT_M_SERIAL']) +            || !isset($_SERVER['SSL_CLIENT_I_DN']) +        ) { +            return false; +        } + +        return $this->sslSerial == $_SERVER['SSL_CLIENT_M_SERIAL'] +            && $this->sslClientIssuerDn == $_SERVER['SSL_CLIENT_I_DN']; +    } + +} +?>
\ No newline at end of file diff --git a/src/SemanticScuttle/Service/User/SslClientCert.php b/src/SemanticScuttle/Service/User/SslClientCert.php index 9e7b2c4..3c69788 100644 --- a/src/SemanticScuttle/Service/User/SslClientCert.php +++ b/src/SemanticScuttle/Service/User/SslClientCert.php @@ -180,5 +180,33 @@ class SemanticScuttle_Service_User_SslClientCert extends SemanticScuttle_DbServi          return (int)$row['uId'];      } + +    /** +     * Fetches all registered certificates for the user from the database +     * and returns it. +     * +     * @return array Array with all certificates for the user. Empty if +     *               there are none, SemanticScuttle_Model_User_SslClientCert +     *               objects otherwise. +     */ +    public function getUserCerts($uId) +    { +        $query = 'SELECT * FROM ' . $this->getTableName() +            . ' ORDER BY sslSerial DESC'; +        if (!($dbresult = $this->db->sql_query($query))) { +            message_die( +                GENERAL_ERROR, 'Could not load SSL client certificates', +                '', __LINE__, __FILE__, $query, $this->db +            ); +            return array(); +        } + +        $certs = array(); +        while ($row = $this->db->sql_fetchrow($dbresult)) { +            $certs[] = SemanticScuttle_Model_User_SslClientCert::fromDb($row); +        } +        $this->db->sql_freeresult($dbresult); +        return $certs; +    }  }  ?>
\ No newline at end of file diff --git a/src/SemanticScuttle/header.php b/src/SemanticScuttle/header.php index d812124..c1c0fcd 100644 --- a/src/SemanticScuttle/header.php +++ b/src/SemanticScuttle/header.php @@ -84,6 +84,7 @@ require_once 'SemanticScuttle/Service/Factory.php';  require_once 'SemanticScuttle/functions.php';  require_once 'SemanticScuttle/Model/Bookmark.php';  require_once 'SemanticScuttle/Model/UserArray.php'; +require_once 'SemanticScuttle/Model/User/SslClientCert.php';  if (count($GLOBALS['serviceoverrides']) > 0      && !defined('UNIT_TEST_MODE') | 
