]> gitweb.fluxo.info Git - semanticscuttle.git/commitdiff
automatically register SSL client cert when user registers
authorChristian Weiske <cweiske@cweiske.de>
Mon, 9 May 2011 06:13:17 +0000 (08:13 +0200)
committerChristian Weiske <cweiske@cweiske.de>
Mon, 9 May 2011 06:13:17 +0000 (08:13 +0200)
src/SemanticScuttle/Service/User/SslClientCert.php
www/register.php

index 7b0c1eba572a2a7ba0b0171c6c0fe2638a92fee6..9e7b2c48504638a95f9882ea8c23caacf08d255f 100644 (file)
@@ -85,10 +85,32 @@ class SemanticScuttle_Service_User_SslClientCert extends SemanticScuttle_DbServi
      */
     public function registerCurrentCertificate($uId)
     {
-        //FIXME
+        $serial         = $_SERVER['SSL_CLIENT_M_SERIAL'];
+        $clientIssuerDn = $_SERVER['SSL_CLIENT_I_DN'];
+
+        $query = 'INSERT INTO ' . $this->getTableName()
+            . ' '. $this->db->sql_build_array(
+                'INSERT', array(
+                    'uId'               => $uId,
+                    'sslSerial'         => $serial,
+                    'sslClientIssuerDn' => $clientIssuerDn,
+                    'sslName'           => $_SERVER['SSL_CLIENT_S_DN_CN'],
+                    'sslEmail'          => $_SERVER['SSL_CLIENT_S_DN_Email']
+                )
+            );
+        if (!($dbresult = $this->db->sql_query($query))) {
+            message_die(
+                GENERAL_ERROR, 'Could not load user for client certificate',
+                '', __LINE__, __FILE__, $query, $this->db
+            );
+            return false;
+        }
+
+        return true;
     }
 
 
+
     /**
      * Takes values from the currently available SSL client certificate
      * and adds the available profile data to the user.
@@ -109,8 +131,9 @@ class SemanticScuttle_Service_User_SslClientCert extends SemanticScuttle_DbServi
         }
 
         if (count($arData)) {
+            $us = SemanticScuttle_Service_Factory::get('User');
             foreach ($arData as $column => $value) {
-                $userservice->_updateuser($uId, $column, $value);
+                $us->_updateuser($uId, $column, $value);
             }
         }
         return $arData;
index dce65bac5a96e0b0d27a2a916e101540e0243b46..d78ede3b0defca0257293a15746384cb538c4c4e 100644 (file)
@@ -72,15 +72,25 @@ if (POST_SUBMITTED != '') {
         $tplVars['error'] = T_('Antispam answer is not valid. Please try again.');
 
     // Register details
-    } elseif ($userservice->addUser($posteduser, POST_PASS, POST_MAIL) !== false) {
-        // Log in with new username
-        $login = $userservice->login($posteduser, POST_PASS);
-        if ($login) {
-            header('Location: '. createURL('bookmarks', $posteduser));
-        }
-        $tplVars['msg'] = T_('You have successfully registered. Enjoy!');
     } else {
-        $tplVars['error'] = T_('Registration failed. Please try again.');
+        $uId = $userservice->addUser($posteduser, POST_PASS, POST_MAIL);
+        if ($uId !== false) {
+            if (isset($_SERVER['SSL_CLIENT_VERIFY'])
+                && $_SERVER['SSL_CLIENT_VERIFY'] == 'SUCCESS'
+            ) {
+                $ssl = SemanticScuttle_Service_Factory::get('User_SslClientCert');
+                $ssl->registerCurrentCertificate($uId);
+                $ssl->updateProfileFromCurentCert($uId);
+            }
+            // Log in with new username
+            $login = $userservice->login($posteduser, POST_PASS);
+            if ($login) {
+                header('Location: '. createURL('bookmarks', $posteduser));
+            }
+            $tplVars['msg'] = T_('You have successfully registered. Enjoy!');
+        } else {
+            $tplVars['error'] = T_('Registration failed. Please try again.');
+        }
     }
 }