From: Stéphane Jacob Date: Mon, 19 Sep 2011 15:09:50 +0000 (+0200) Subject: Allows payments for non logged users. X-Git-Tag: xorg/1.1.4~162 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=6643b3f0c3bff229c0b12b373adf8445881f1879;p=platal.git Allows payments for non logged users. Signed-off-by: Stéphane Jacob --- diff --git a/modules/payment.php b/modules/payment.php index 03d9119..3c94da0 100644 --- a/modules/payment.php +++ b/modules/payment.php @@ -105,7 +105,7 @@ class PaymentModule extends PLModule function handlers() { return array( - 'payment' => $this->make_hook('payment', AUTH_COOKIE, 'user'), + 'payment' => $this->make_hook('payment', AUTH_PUBLIC, 'user'), 'payment/cyber2_return' => $this->make_hook('cyber2_return', AUTH_PUBLIC, 'user', NO_HTTPS), 'payment/paypal_return' => $this->make_hook('paypal_return', AUTH_PUBLIC, 'user', NO_HTTPS), '%grp/paiement' => $this->make_hook('xnet_payment', AUTH_PASSWD, 'user'), @@ -125,15 +125,20 @@ class PaymentModule extends PLModule function handler_payment($page, $ref = -1) { - $this->load('money.inc.php'); - $page->changeTpl('payment/payment.tpl'); $page->setTitle('Télépaiement'); + $this->load('money.inc.php'); $meth = new PayMethod(Env::i('methode', -1)); $pay = new Payment($ref); - if($pay->flags->hasflag('old')){ + if (!$pay->flags->hasflag('public') && (!S::user() || !S::logged())) { + $page->kill("Vous n'avez pas les permissions nécessaires pour accéder à cette page."); + } else { + $page->assign('public', true); + } + + if ($pay->flags->hasflag('old')) { $page->kill('La transaction selectionnée est périmée.'); } @@ -144,9 +149,22 @@ class PaymentModule extends PLModule } if (Post::has('op') && Post::v('op', 'select') == 'submit') { - $pay->init($val, $meth); - $pay->prepareform($pay); - } else { + if (S::logged()) { + $user = S::user(); + } else { + $user = User::getSilent(Post::t('login')); + } + + if (is_null($user)) { + $page->trigError("L'identifiant est erroné."); + $page->assign('login_error', true); + $page->assign('login', Post::t('login')); + } else { + $pay->init($val, $meth); + $pay->prepareform($user); + $page->assign('sex', $user->isFemale()); + } + } elseif (S::logged()) { $res = XDB::iterator('SELECT ts_confirmed, amount FROM payment_transactions WHERE uid = {?} AND ref = {?} @@ -196,7 +214,6 @@ class PaymentModule extends PLModule $page->assign('meth', $meth); $page->assign('pay', $pay); $page->assign('evtlink', $pay->event()); - $page->assign('sex', S::user()->isFemale()); } function handler_cyber2_return($page, $uid = null) diff --git a/modules/payment/money.inc.php b/modules/payment/money.inc.php index f91fb25..ecd49f5 100644 --- a/modules/payment/money.inc.php +++ b/modules/payment/money.inc.php @@ -67,9 +67,9 @@ class Payment $this->api = new $api($val); } - function prepareform() + function prepareform(User $user) { - return $this->api->prepareform($this); + return $this->api->prepareform($this, $user); } function event() diff --git a/modules/payment/money/bplccyberplus.inc.php b/modules/payment/money/bplccyberplus.inc.php index f0b40e4..e82fb8f 100644 --- a/modules/payment/money/bplccyberplus.inc.php +++ b/modules/payment/money/bplccyberplus.inc.php @@ -60,7 +60,7 @@ class BPLCCyberPlus return trim(preg_replace('/\s\s+/', ' ', preg_replace('/[^a-zA-Z0-9]/', ' ', $string))); } - function prepareform($pay) + function prepareform($pay, $user) { global $globals, $platal; $log = S::v('log'); @@ -79,9 +79,9 @@ class BPLCCyberPlus 'vads_return_mode' => 'NONE', 'vads_url_return' => $pay->url ? $pay->url : $globals->baseurl . '/' . $platal->ns); $this->infos['client'] = Array( - 'vads_cust_email' => S::user()->bestEmail(), + 'vads_cust_email' => $user->bestEmail(), 'vads_cust_id' => S::v('uid'), - 'vads_cust_name' => substr(self::replaceNonAlpha(replace_accent(S::user()->shortName())), 0, 127)); + 'vads_cust_name' => substr(self::replaceNonAlpha(replace_accent($user->shortName())), 0, 127)); $this->infos['commande'] = Array( 'vads_amount' => $this->val, 'vads_currency' => '978', # Euro diff --git a/modules/payment/money/paypal.inc.php b/modules/payment/money/paypal.inc.php index 521733a..aba2f9a 100644 --- a/modules/payment/money/paypal.inc.php +++ b/modules/payment/money/paypal.inc.php @@ -33,7 +33,7 @@ class PayPal $this->val_number = $val; } - function prepareform($pay) + function prepareform($pay, $user) { // Documentation: // https://www.paypal.com/developer @@ -43,7 +43,6 @@ class PayPal global $globals, $platal; $this->urlform = 'https://' . $globals->money->paypal_site . '/cgi-bin/webscr'; - $user = S::user(); $roboturl = str_replace("https://","http://",$globals->baseurl) . '/' . $platal->ns . "payment/paypal_return/" . S::v('uid') diff --git a/templates/payment/payment.tpl b/templates/payment/payment.tpl index cface37..07c849b 100644 --- a/templates/payment/payment.tpl +++ b/templates/payment/payment.tpl @@ -117,8 +117,14 @@ Si tu n'es pas encore inscrit à cet événement, n'oublie pas d'aller t' Montant - € + € + {if t($public)} + + Identifiant (prenom.nom.promo) + + + {/if} Commentaire diff --git a/upgrade/1.1.4/01_payments.sql b/upgrade/1.1.4/01_payments.sql index b33d220..49e0c91 100644 --- a/upgrade/1.1.4/01_payments.sql +++ b/upgrade/1.1.4/01_payments.sql @@ -1,3 +1,4 @@ ALTER TABLE payments MODIFY COLUMN flags SET('unique', 'old') NOT NULL DEFAULT ''; +ALTER TABLE payments MODIFY COLUMN flags SET('unique', 'old', 'public') NOT NULL DEFAULT ''; -- vim:set syntax=mysql: