]> git.mxchange.org Git - friendica.git/commitdiff
openid registration
authorFriendika <info@friendika.com>
Thu, 18 Nov 2010 04:35:50 +0000 (20:35 -0800)
committerFriendika <info@friendika.com>
Thu, 18 Nov 2010 04:35:50 +0000 (20:35 -0800)
mod/openid.php
mod/register.php
view/register.tpl
view/theme/default/style.css

index 6c1edd72e26b19bb1ebff9f2b50d8adc0125f875..443d839fa1b1863a3fd7a26d4bdbef3ccd47a78d 100644 (file)
@@ -11,6 +11,37 @@ function openid_content(&$a) {
 
                if($openid->validate()) {
 
+                       if(x($_SESSION,'register')) {
+                               unset($_SESSION['register']);
+                               $args = '';
+                               $attr = $openid->getAttributes();
+                               if(is_array($attr) && count($attr)) {
+                                       foreach($attr as $k => $v) {
+                                               if($k === 'namePerson/friendly')
+                                                       $nick = notags(trim($v));
+                                               if($k === 'namePerson/first')
+                                                       $first = notags(trim($v));
+                                               if($k === 'namePerson')
+                                                       $args .= '&username=' . notags(trim($v));
+                                               if($k === 'contact/email')
+                                                       $args .= '&email=' . notags(trim($v));
+                                       }
+                               }
+                               if($nick)
+                                       $args .= '&nickname=' . $nick;
+                               elseif($first)
+                                       $args .= '&nickname=' . $first;
+
+                               $args .= '&openid_url=' . notags(trim($_SESSION['openid']));
+                               if($a->config['register_policy'] != REGISTER_CLOSED)
+                                       goaway($a->get_baseurl() . '/register' . $args);
+                               else
+                                       goaway($a->get_baseurl());
+
+                               // NOTREACHED
+                       } 
+
+
                        $r = q("SELECT * FROM `user` WHERE `openid` = '%s' AND `blocked` = 0 AND `verified` = 1 LIMIT 1",
                                dbesc($_SESSION['openid'])
                        );
index 30666405c6a9866aba1f5c9d020c07025e8733b2..407bda73ee3fdbb2932809c466e85fa506e0259c 100644 (file)
@@ -36,8 +36,24 @@ function register_post(&$a) {
                $nickname = notags(trim($_POST['nickname']));
        if(x($_POST,'email'))
                $email = notags(trim($_POST['email']));
+       if(x($_POST,'openid_url'))
+               $openid_url = notags(trim($_POST['openid_url']));
+
 
        if((! x($username)) || (! x($email)) || (! x($nickname))) {
+               if($openid_url) {
+                       $_SESSION['register'] = 1;
+                       $_SESSION['openid'] = $openid_url;
+                       require_once('library/openid.php');
+                       $openid = new LightOpenID;
+                       $openid->identity = $openid_url;
+                       $openid->returnUrl = $a->get_baseurl() . '/openid'; 
+                       $openid->required = array('namePerson/friendly', 'contact/email', 'namePerson');
+                       $openid->optional = array('namePerson/first');
+                       goaway($openid->authUrl());
+                       // NOTREACHED   
+               }
+
                notice( t('Please enter the required information.') . EOL );
                return;
        }
@@ -118,12 +134,13 @@ function register_post(&$a) {
        $spkey = openssl_pkey_get_details($sres);
        $spubkey = $spkey["key"];
 
-       $r = q("INSERT INTO `user` ( `username`, `password`, `email`, `nickname`,
+       $r = q("INSERT INTO `user` ( `username`, `password`, `email`, `openid`, `nickname`,
                `pubkey`, `prvkey`, `spubkey`, `sprvkey`, `verified`, `blocked` )
-               VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d )",
+               VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d )",
                dbesc($username),
                dbesc($new_password_encoded),
                dbesc($email),
+               dbesc($openid_url),
                dbesc($nickname),
                dbesc($pubkey),
                dbesc($prvkey),
@@ -307,9 +324,10 @@ function register_content(&$a) {
                return;
        }
 
-       $username = ((x($_POST,'username')) ? $_POST['username'] : ((x($_GET,'username')) ? $_GET['username'] : ''));
-       $email    = ((x($_POST,'email'))    ? $_POST['email']    : ((x($_GET,'email'))    ? $_GET['email']    : ''));
-       $nickname = ((x($_POST,'nickname')) ? $_POST['nickname'] : ((x($_GET,'nickname')) ? $_GET['nickname'] : ''));
+       $username     = ((x($_POST,'username'))     ? $_POST['username']     : ((x($_GET,'username'))     ? $_GET['username'] : ''));
+       $email        = ((x($_POST,'email'))        ? $_POST['email']        : ((x($_GET,'email'))        ? $_GET['email']    : ''));
+       $openid_url   = ((x($_POST,'openid_url'))   ? $_POST['openid_url']   : ((x($_GET,'openid_url'))   ? $_GET['openid_url']   : ''));
+       $nickname     = ((x($_POST,'nickname'))     ? $_POST['nickname']     : ((x($_GET,'nickname'))     ? $_GET['nickname'] : ''));
 
        $o = load_view_file("view/register.tpl");
        $o = replace_macros($o, array(
@@ -317,6 +335,10 @@ function register_content(&$a) {
                '$registertext' =>((x($a->config,'register_text'))
                        ? '<div class="error-message">' . $a->config['register_text'] . '</div>'
                        : "" ),
+               '$fillwith'  => t('You may ' . "\x28" . 'optionally' . "\x29" . ' fill in this form via OpenID by supplying your OpenID and clicking ') . "'" . t('Register') . "'",
+               '$fillext'   => t('If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.'),
+               '$oidlabel'  => t('Your OpenID ' . "\x28" . 'optional' . "\x29" . ': '),
+               '$openid'    => $openid_url,
                '$namelabel' => t('Your Full Name ' . "\x28" . 'e.g. Joe Smith' . "\x29" . ': '),
                '$addrlabel' => t('Your Email Address: '),
                '$nickdesc'  => t('Choose a profile nickname. This must begin with a text character. Your global profile locator will then be \'<strong>nickname@$sitename</strong>\'.'),
index 0dcf19442a32b7342f083f3c69b2b5973adae6ca..10f7f0222cda513ee8cdc25ffe4d9a7119ec7856 100644 (file)
@@ -4,6 +4,17 @@
 
        $registertext
 
+
+       <p id="register-fill-desc">$fillwith</p>
+       <p id="register-fill-ext">$fillext</p>
+
+       <div id="register-openid-wrapper" >
+               <label for="register-openid" id="label-register-openid" >$oidlabel</label>
+               <input type="text" maxlength="60" size="32" name="openid_url" class="openid" id="register-openid" value="$openid" >
+       </div>
+       <div id="register-openid-end" ></div>
+
+
        <div id="register-name-wrapper" >
                <label for="register-name" id="label-register-name" >$namelabel</label>
                <input type="text" maxlength="60" size="32" name="username" id="register-name" value="$username" >
index 8b2f2310f52c533c6cd7d83f1c3dab0c9c67e1b8..de5c19ee32d5f985d9ab3470faddbb5777ee72ad 100644 (file)
@@ -47,6 +47,9 @@ input:hover {
    background-position: 0 50%;
    padding-left: 18px;
 }
+.openid:hover {
+       background-color: #0CBEFE !important;
+}
 
 option {
        background-color: #ECD6D2;
@@ -334,8 +337,11 @@ footer {
        margin-left: 20px;
        margin-right: 20px;
 }
+#register-fill-ext {
+       margin-bottom: 25px;
+}
 
-#label-register-name, #label-register-email, #label-register-nickname {
+#label-register-name, #label-register-email, #label-register-nickname, #label-register-openid {
        float: left;
        width: 350px;
        margin-top: 10px;
@@ -347,9 +353,16 @@ footer {
        width: 150px;
 }
 
-#register-name-end, #register-email-end, #register-nickname-end, #register-submit-end {
+#register-openid {
+       float: left;
+       margin-top: 10px;
+       width: 130px;
+}
+
+#register-name-end, #register-email-end, #register-nickname-end, #register-submit-end, #register-openid-end {
        clear: both;
 }
+
 #register-nickname-desc {
        margin-top: 30px;
        width: 650px;