]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
fixed issues preventing account creation
authorcash <cash.costello@gmail.com>
Sat, 17 Dec 2011 20:55:57 +0000 (15:55 -0500)
committercash <cash.costello@gmail.com>
Sat, 17 Dec 2011 20:55:57 +0000 (15:55 -0500)
actions/openid_client/login.php
classes/ElggOpenIDConsumer.php
languages/en.php
lib/helpers.php
return.php
start.php

index 305ea3110b54f27b7de6501e2bac8edb0632f238..762f37f06e072b4c2a0d7dce84561db77b289b6e 100644 (file)
@@ -8,7 +8,7 @@ elgg_load_library('openid_consumer');
 $store = new Auth_OpenID_FileStore('/tmp');
 
 $consumer = new ElggOpenIDConsumer($store);
-$consumer->setProvider('google');
+$consumer->setProvider(get_input('provider'));
 $consumer->setReturnURL(elgg_get_site_url() . 'mod/openid_client/return.php');
 
 $html = $consumer->requestAuthentication();
index 6e6828e1c44642837070e2d427535142f1422a4c..864e47d41848dc5a21d95538be99ab98a0bef3da 100644 (file)
@@ -6,6 +6,7 @@
 class ElggOpenIDConsumer {
 
        protected $provider;
+       protected $username;
        protected $returnURL;
 
        protected $store;
@@ -35,6 +36,15 @@ class ElggOpenIDConsumer {
                $this->provider = $provider;
        }
 
+       /**
+        * Set the OpenID username
+        *
+        * @param string $username
+        */
+       public function setUsername($username) {
+               $this->username = $username;
+       }
+
        /**
         * Set the return URL
         *
@@ -119,11 +129,39 @@ class ElggOpenIDConsumer {
         */
        protected function getProviderURL() {
                $url = null;
-               switch ($this->provider) {
+               $provider = $this->provider;
+               $username = $this->username;
+               switch ($provider) {
                        case 'google':
                                $url = 'https://www.google.com/accounts/o8/id';
                                break;
+                       case 'yahoo':
+                               $url = 'https://me.yahoo.com/';
+                               break;
+                       case 'blogger':
+                               $url = "http://$username.blogspot.com/";
+                               break;
+                       case 'wordpress':
+                               $url = "";
+                               break;
+                       case 'aol':
+                               $url = "http://openid.aol.com/$username";
+                               break;
+                       case 'verisign':
+                               $url = "http://username.pip.verisignlabs.com/";
+                               break;
+                       case 'myopenid':
+                               $url = 'https://myopenid.com/';
+                               break;
+                       case 'myspace':
+                               $url = 'https://api.myspace.com/openid';
+                               break;
                        default:
+                               $params = array(
+                                       'provider' => $provider,
+                                       'username' => $username,
+                               );
+                               $url = elgg_trigger_plugin_hook('set', 'openid_client:url', $params);
                                break;
                }
 
@@ -199,7 +237,7 @@ class ElggOpenIDConsumer {
                $data = $this->extractUserData($sreg, $ax);
                $data['openid_identifier'] = $response->getDisplayIdentifier();
 
-               return data;
+               return $data;
        }
 
        /**
@@ -217,7 +255,7 @@ class ElggOpenIDConsumer {
                        $data['email'] = $sreg['email'];
                }
                if (isset($ax['http://axschema.org/contact/email'])) {
-                       $data['email'] = $ax['http://axschema.org/contact/email'];
+                       $data['email'] = $ax['http://axschema.org/contact/email'][0];
                }
 
                // display name
@@ -225,10 +263,10 @@ class ElggOpenIDConsumer {
                        $data['name'] = $sreg['fullname'];
                }
                if (isset($ax['http://axschema.org/namePerson/first'])) {
-                       $data['name'] = $ax['http://axschema.org/namePerson/first'];
+                       $data['name'] = $ax['http://axschema.org/namePerson/first'][0];
                }
                if (isset($ax['http://axschema.org/namePerson/last'])) {
-                       $data['name'] .= ' ' . $ax['http://axschema.org/namePerson/last'];
+                       $data['name'] .= ' ' . $ax['http://axschema.org/namePerson/last'][0];
                        $data['name'] = trim($data['name']);
                }
 
index df20c95f97b5ed404be11f0d2ca42b52bd2706e1..d68517b01d6e2581020db3217e56d109287cd479 100644 (file)
@@ -8,13 +8,14 @@ $english = array(
        'openid_client:login:header' => 'Log in with',\r
        'openid_client:or:header' => 'or',\r
        'openid_client:login:instructs' => 'Login in with %s',\r
-       'openid_client:server:google' => 'Google',\r
-       'openid_client:server:yahoo' => 'Yahoo',\r
-       'openid_client:server:blogger' => 'Blogger',\r
-       'openid_client:server:wordpress' => 'Wordpress',\r
+       'openid_client:provider:google' => 'Google',\r
+       'openid_client:provider:yahoo' => 'Yahoo',\r
+       'openid_client:provider:blogger' => 'Blogger',\r
+       'openid_client:provider:wordpress' => 'Wordpress',\r
 \r
        'openid_client:success:register' => 'Your account has been created.',\r
        'openid_client:error:bad_register' => 'Unable to create an account. Please contact a site administrator.',\r
+       'openid_client:error:bad_response' => 'Bad response from the OpenID server',\r
 );\r
 \r
 add_translation('en', $english);\r
index c7158235ab77a964cfa596d328d62048646354e2..765fc0a61aa2d99bd4e36040954c2596199313f4 100644 (file)
@@ -43,7 +43,7 @@ function openid_client_prepare_registration_vars(array $data) {
        if (isset($data['username'])) {
                $vars['username'] = $data['username'];
        } else if (isset($data['email'])) {
-               $vars['username'] = array_pop(explode('@', $data['email']));
+               $vars['username'] = array_shift(explode('@', $data['email']));
        } else {
                $vars['username'] = null;
        }
index 2ae21e21fb6f8ff4e684c97853354e1951467a80..e53d17d7e2f7804fb133e0f3e80d45dfdb78756d 100644 (file)
@@ -21,7 +21,8 @@ $url = elgg_get_site_url() . 'mod/openid_client/return.php';
 $consumer->setReturnURL($url);\r
 $data = $consumer->completeAuthentication();\r
 if (!$data || !$data['openid_identifier']) {\r
-       // @todo handle error\r
+       register_error(elgg_echo('openid_client:error:bad_response'));\r
+       forward();\r
 }\r
 \r
 // does this user exist\r
@@ -48,7 +49,7 @@ if ($users) {
        // register the new user\r
        $result = openid_client_registration_page_handler($data);\r
        if (!$result) {\r
-               register_error('openid_client:error:bad_register');\r
+               register_error(elgg_echo('openid_client:error:bad_register'));\r
                forward();\r
        }\r
 }\r
index bd80dde483fab552eb38fdcfdd2c6260d4d19499..afe12ae92b7408647f277366f37905307a351cf3 100644 (file)
--- a/start.php
+++ b/start.php
@@ -63,14 +63,14 @@ function openid_client_setup_menu($hook, $type, $menu, $params) {
        $items = elgg_trigger_plugin_hook('register', 'openid_login', null, $items);\r
 \r
        $priority = 100;\r
-       foreach ($items as $type => $servers) {\r
-               foreach ($servers as $server) {\r
-                       $server_name = elgg_echo("openid_client:server:$server");\r
+       foreach ($items as $type => $providers) {\r
+               foreach ($providers as $provider) {\r
+                       $provider_name = elgg_echo("openid_client:provider:$provider");\r
                        $menu[] = ElggMenuItem::factory(array(\r
-                               'name' => $server,\r
+                               'name' => $provider,\r
                                'text' => '<span></span>',\r
-                               'title' => elgg_echo('openid_client:login:instructs', array($server_name)),\r
-                               'href' => "action/openid_client/login?server=$server",\r
+                               'title' => elgg_echo('openid_client:login:instructs', array($provider_name)),\r
+                               'href' => "action/openid_client/login?provider=$provider",\r
                                'is_action' => true,\r
                                'section' => $type,\r
                                'priority' => $priority,\r