diff options
Diffstat (limited to 'models/Auth.old/OpenID/PostgreSQLStore.php')
| -rw-r--r-- | models/Auth.old/OpenID/PostgreSQLStore.php | 107 | 
1 files changed, 107 insertions, 0 deletions
diff --git a/models/Auth.old/OpenID/PostgreSQLStore.php b/models/Auth.old/OpenID/PostgreSQLStore.php new file mode 100644 index 000000000..c7d19f36a --- /dev/null +++ b/models/Auth.old/OpenID/PostgreSQLStore.php @@ -0,0 +1,107 @@ +<?php + +/** + * A PostgreSQL store. + * + * @package OpenID + */ + +/** + * Require the base class file. + */ +require_once "Auth/OpenID/SQLStore.php"; + +/** + * An SQL store that uses PostgreSQL as its backend. + * + * @package OpenID + */ +class Auth_OpenID_PostgreSQLStore extends Auth_OpenID_SQLStore { +    /** +     * @access private +     */ +    function setSQL() +    { +        $this->sql['nonce_table'] = +            "CREATE TABLE %s (server_url VARCHAR(2047), timestamp INTEGER, ". +            "salt CHAR(40), UNIQUE (server_url, timestamp, salt))"; + +        $this->sql['assoc_table'] = +            "CREATE TABLE %s (server_url VARCHAR(2047), handle VARCHAR(255), ". +            "secret BYTEA, issued INTEGER, lifetime INTEGER, ". +            "assoc_type VARCHAR(64), PRIMARY KEY (server_url, handle), ". +            "CONSTRAINT secret_length_constraint CHECK ". +            "(LENGTH(secret) <= 128))"; + +        $this->sql['set_assoc'] = +            array( +                  'insert_assoc' => "INSERT INTO %s (server_url, handle, ". +                  "secret, issued, lifetime, assoc_type) VALUES ". +                  "(?, ?, '!', ?, ?, ?)", +                  'update_assoc' => "UPDATE %s SET secret = '!', issued = ?, ". +                  "lifetime = ?, assoc_type = ? WHERE server_url = ? AND ". +                  "handle = ?" +                  ); + +        $this->sql['get_assocs'] = +            "SELECT handle, secret, issued, lifetime, assoc_type FROM %s ". +            "WHERE server_url = ?"; + +        $this->sql['get_assoc'] = +            "SELECT handle, secret, issued, lifetime, assoc_type FROM %s ". +            "WHERE server_url = ? AND handle = ?"; + +        $this->sql['remove_assoc'] = +            "DELETE FROM %s WHERE server_url = ? AND handle = ?"; + +        $this->sql['add_nonce'] = +                  "INSERT INTO %s (server_url, timestamp, salt) VALUES ". +                  "(?, ?, ?)" +                  ; + +        $this->sql['clean_nonce'] = +            "DELETE FROM %s WHERE timestamp < ?"; + +        $this->sql['clean_assoc'] = +            "DELETE FROM %s WHERE issued + lifetime < ?"; +    } + +    /** +     * @access private +     */ +    function _set_assoc($server_url, $handle, $secret, $issued, $lifetime, +                        $assoc_type) +    { +        $result = $this->_get_assoc($server_url, $handle); +        if ($result) { +            // Update the table since this associations already exists. +            $this->connection->query($this->sql['set_assoc']['update_assoc'], +                                     array($secret, $issued, $lifetime, +                                           $assoc_type, $server_url, $handle)); +        } else { +            // Insert a new record because this association wasn't +            // found. +            $this->connection->query($this->sql['set_assoc']['insert_assoc'], +                                     array($server_url, $handle, $secret, +                                           $issued, $lifetime, $assoc_type)); +        } +    } + +    /** +     * @access private +     */ +    function blobEncode($blob) +    { +        return $this->_octify($blob); +    } + +    /** +     * @access private +     */ +    function blobDecode($blob) +    { +        return $this->_unoctify($blob); +    } +} + +?>
\ No newline at end of file  | 
