]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/finishopenidlogin.php
forgot to return on invalid nickname
[quix0rs-gnu-social.git] / actions / finishopenidlogin.php
index 825f1d959dc27700170bddb6fbde33ec437f7ddb..02d8fff9814a88fd0006fec53bdf844ad666d439 100644 (file)
@@ -29,6 +29,11 @@ class FinishopenidloginAction extends Action {
                        common_user_error(_t('Already logged in.'));
                } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                        if ($this->arg('create')) {
+                               if (!$this->boolean('license')) {
+                                       $this->show_form(_t('You can\'t register if you don\'t agree to the license.'),
+                                                                        $this->trimmed('newname'));
+                                       return;
+                               }
                                $this->create_new_user();
                        } else if ($this->arg('connect')) {
                                $this->connect_user();
@@ -42,8 +47,7 @@ class FinishopenidloginAction extends Action {
                }
        }
 
-       function show_form($error=NULL, $username=NULL) {
-               common_show_header(_t('OpenID Account Setup'));
+       function show_top($error=NULL) {
                if ($error) {
                        common_element('div', array('class' => 'error'), $error);
                } else {
@@ -54,7 +58,13 @@ class FinishopenidloginAction extends Action {
                                                   _t(' so we must connect your OpenID to a local account. ' .
                                                          ' You can either create a new account, or connect with ' .
                                                          ' your existing account, if you have one.'));
-               }
+               }               
+       }
+       
+       function show_form($error=NULL, $username=NULL) {
+               common_show_header(_t('OpenID Account Setup'), NULL, $error,
+                                                  array($this, 'show_top'));
+
                common_element_start('form', array('method' => 'POST',
                                                                                   'id' => 'account_connect',
                                                                                   'action' => common_local_url('finishopenidlogin')));
@@ -65,6 +75,16 @@ class FinishopenidloginAction extends Action {
                common_input('newname', _t('New nickname'),
                                         ($username) ? $username : '',
                                         _t('1-64 lowercase letters or numbers, no punctuation or spaces'));
+               common_element_start('p');
+               common_element('input', array('type' => 'checkbox',
+                                                                         'id' => 'license',
+                                                                         'name' => 'license',
+                                                                         'value' => 'true'));
+               common_text(_t('My text and files are available under '));
+               common_element('a', array(href => common_config('license', 'url')),
+                                          common_config('license', 'title'));
+               common_text(_t(' except this private data: password, email address, IM address, phone number.'));
+               common_element_end('p');
                common_submit('create', _t('Create'));
                common_element('h2', NULL,
                                           'Connect existing account');
@@ -104,10 +124,11 @@ class FinishopenidloginAction extends Action {
                                $sreg = $sreg_resp->contents();
                        }
 
-                       $user = $this->get_user($canonical);
+                       $user = oid_get_user($canonical);
                        
                        if ($user) {
-                               $this->update_user($user, $sreg);
+                               oid_set_last($display);
+                               oid_update_user($user, $sreg);
                                common_set_user($user->nickname);
                                $this->go_home($user->nickname);
                        } else {
@@ -123,55 +144,6 @@ class FinishopenidloginAction extends Action {
                common_show_footer();
        }
        
-       function get_user($canonical) {
-               $user = NULL;
-               $oid = User_openid::staticGet('canonical', $canonical);
-               if ($oid) {
-                       $user = User::staticGet('id', $oid->user_id);
-               }
-               return $user;
-       }
-
-       function update_user($user, $sreg) {
-               
-               $profile = $user->getProfile();
-
-               $orig_profile = clone($profile);
-               
-               if ($sreg['fullname'] && strlen($sreg['fullname']) <= 255) {
-                       $profile->fullname = $sreg['fullname'];
-               }
-               
-               if ($sreg['country']) {
-                       if ($sreg['postcode']) {
-                               # XXX: use postcode to get city and region
-                               # XXX: also, store postcode somewhere -- it's valuable!
-                               $profile->location = $sreg['postcode'] . ', ' . $sreg['country'];
-                       } else {
-                               $profile->location = $sreg['country'];
-                       }
-               }
-
-               # XXX save language if it's passed
-               # XXX save timezone if it's passed
-               
-               if (!$profile->update($orig_profile)) {
-                       common_server_error(_t('Error saving the profile.'));
-                       return;
-               }
-
-               $orig_user = clone($user);
-               
-               if ($sreg['email'] && Validate::email($sreg['email'], true)) {
-                       $user->email = $sreg['email'];
-               }
-               
-               if (!$user->update($orig_user)) {
-                       common_server_error(_t('Error saving the user.'));
-                       return;
-               }
-       }
-       
        function save_values($display, $canonical, $sreg) {
                common_ensure_session();
                $_SESSION['openid_display'] = $display;
@@ -195,6 +167,11 @@ class FinishopenidloginAction extends Action {
                        $this->show_form(_t('Nickname must have only letters and numbers and no spaces.'));
                        return;
                }
+
+               if (!User::allowed_nickname($nickname)) {
+                       $this->show_form(_t('Nickname not allowed.'));
+                       return;
+               }
                
                if (User::staticGet('nickname', $nickname)) {
                        $this->show_form(_t('Nickname already in use. Try another one.'));
@@ -210,7 +187,7 @@ class FinishopenidloginAction extends Action {
                
                # Possible race condition... let's be paranoid
                
-               $other = $this->get_user($canonical);
+               $other = oid_get_user($canonical);
                
                if ($other) {
                        common_server_error(_t('Creating new account for OpenID that already has a user.'));
@@ -238,6 +215,8 @@ class FinishopenidloginAction extends Action {
                # XXX save language if it's passed
                # XXX save timezone if it's passed
                
+               $profile->profileurl = common_profile_url($nickname);
+                 
                $profile->created = DB_DataObject_Cast::dateTime(); # current time
                
                $id = $profile->insert();
@@ -249,7 +228,7 @@ class FinishopenidloginAction extends Action {
                $user = new User();
                $user->id = $id;
                $user->nickname = $nickname;
-               $user->uri = common_mint_tag('user:'.$id);
+               $user->uri = common_user_uri($user);
                
                if ($sreg['email'] && Validate::email($sreg['email'], true)) {
                        $user->email = $sreg['email'];
@@ -264,22 +243,17 @@ class FinishopenidloginAction extends Action {
                        $profile->delete();
                }
 
-               $oid = new User_openid();
-               $oid->display = $display;
-               $oid->canonical = $canonical;
-               $oid->user_id = $id;
-               $oid->created = DB_DataObject_Cast::dateTime();
+               $result = oid_link_user($user->id, $canonical, $display);
                
-               $result = $oid->insert();
-
                if (!$result) {
                        # Try to clean up...
                        $user->delete();
                        $profile->delete();
                }
                
+               oid_set_last($display);
                common_set_user($user->nickname);
-               common_redirect(common_local_url('showstream', array('nickname' => $user->nickname));
+               common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)));
        }
        
        function connect_user() {
@@ -303,18 +277,15 @@ class FinishopenidloginAction extends Action {
                        return;
                }
                
-               $oid = new User_openid();
-               $oid->display = $display;
-               $oid->canonical = $canonical;
-               $oid->user_id = $user->id;
-               $oid->created = DB_DataObject_Cast::dateTime();
+               $result = oid_link_user($user->id, $canonical, $display);
                
-               if (!$oid->insert()) {
-                       common_server_error(_t('Error connecting OpenID.'));
+               if (!$result) {
+                       common_server_error(_t('Error connecting user to OpenID.'));
                        return;
                }
                
-               $this->update_user($user, $sreg);
+               oid_update_user($user, $sreg);
+               oid_set_last($display);
                common_set_user($user->nickname);
                $this->go_home($user->nickname);
        }
@@ -371,6 +342,9 @@ class FinishopenidloginAction extends Action {
                                                                                  'max_length' => 64,
                                                                                  'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) {
                        return false;
+               }       
+       if (!User::allowed_nickname($str)) {
+                       return false;
                }
                if (User::staticGet('nickname', $str)) {
                        return false;