diff --git a/include/Ajax.php b/include/Ajax.php index 9beb326..49adff1 100644 --- a/include/Ajax.php +++ b/include/Ajax.php @@ -81,7 +81,7 @@ class Ajax extends Responder { private function checkout_product() { $user = null; try { - $user = new User($_POST['user'], 'name'); + $user = $this->user_init($_POST['user'], null); } catch(Exception $e) { return new Failure(i18n('Invalid user ID.')); } diff --git a/include/CheckoutPage.php b/include/CheckoutPage.php index 2296f6f..7bfa219 100644 --- a/include/CheckoutPage.php +++ b/include/CheckoutPage.php @@ -20,57 +20,6 @@ class CheckoutPage extends Page { } } - protected function user_init($name, $email) { - $nameuser = null; - $emailuser = null; - if($name) { - try { - $nameuser = new User($name, 'name'); - } catch(Exception $ue) { - # The user wasn't found locally - try { - $this->ldap->get_user($name); - $nameuser = User::create_user($name); - } catch(Exception $le) { - $err = i18n("Username {name} not found.", - $name); - throw new Exception($err); - } - } - } - if($email) { - try { - $search = $email; - if(strpos($email, '@') === false) { - $search = $email .'@dsv.su.se'; - } - # Lookup email directly in ldap since we don't store it - $uid = $this->ldap->search_email($search); - } catch(Exception $le) { - $err = i18n('Email address {address} not found.', - $search); - throw new Exception($err); - } - try { - $emailuser = new User($uid, 'name'); - } catch(Exception $ue) { - # User wasn't found locally, so initialize a new user - $emailuser = User::create_user($uid); - } - } - if($nameuser && $emailuser) { - if($nameuser != $emailuser) { - $err = i18n('Username and email match different users.'); - throw new Exception($err); - } - return $nameuser; - } - if($nameuser) { - return $nameuser; - } - return $emailuser; - } - protected function render_body() { $username = $this->userstr; $email = $this->emailstr; diff --git a/include/Responder.php b/include/Responder.php index bbc9104..2787279 100644 --- a/include/Responder.php +++ b/include/Responder.php @@ -27,6 +27,57 @@ abstract class Responder { abstract public function render(); + final protected function user_init($name, $email) { + $nameuser = null; + $emailuser = null; + if($name) { + try { + $nameuser = new User($name, 'name'); + } catch(Exception $ue) { + # The user wasn't found locally + try { + $this->ldap->get_user($name); + $nameuser = User::create_user($name); + } catch(Exception $le) { + $err = i18n("Username {name} not found.", + $name); + throw new Exception($err); + } + } + } + if($email) { + try { + $search = $email; + if(strpos($email, '@') === false) { + $search = $email .'@dsv.su.se'; + } + # Lookup email directly in ldap since we don't store it + $uid = $this->ldap->search_email($search); + } catch(Exception $le) { + $err = i18n('Email address {address} not found.', + $search); + throw new Exception($err); + } + try { + $emailuser = new User($uid, 'name'); + } catch(Exception $ue) { + # User wasn't found locally, so initialize a new user + $emailuser = User::create_user($uid); + } + } + if($nameuser && $emailuser) { + if($nameuser != $emailuser) { + $err = i18n('Username and email match different users.'); + throw new Exception($err); + } + return $nameuser; + } + if($nameuser) { + return $nameuser; + } + return $emailuser; + } + final protected function escape_tags($tags) { foreach($tags as $key => $tag) { $tags[$key] = $this->escape_string(strtolower($tag));