[FIX] payment_*: always read callback_eval as superuser

The callback_eval field has a groups parameter of
base.group_system. Without this patch everyone not part of that group
ends up with an access right error when the system attempts to read
that field.

Previously this was not a problem because all code reading
callback_eval was executed with the superuser already. New code has
been introduced however that does not do this (eg. paying with a
payment.token from the backend).

opw-741181
This commit is contained in:
Joren Van Onder
2017-05-08 19:09:02 -07:00
parent 648e0e2335
commit a23e04aef7
3 changed files with 10 additions and 10 deletions
+4 -4
View File
@@ -285,15 +285,15 @@ class TxAuthorize(models.Model):
'acquirer_reference': tree.get('x_trans_id'),
'date_validate': fields.Datetime.now(),
})
if self.callback_eval and init_state != 'authorized':
safe_eval(self.callback_eval, {'self': self})
if self.sudo().callback_eval and init_state != 'authorized':
safe_eval(self.sudo().callback_eval, {'self': self})
if tree.get('x_type').lower() == 'auth_only':
self.write({
'state': 'authorized',
'acquirer_reference': tree.get('x_trans_id'),
})
if self.callback_eval:
safe_eval(self.callback_eval, {'self': self})
if self.sudo().callback_eval:
safe_eval(self.sudo().callback_eval, {'self': self})
if tree.get('x_type').lower() == 'void':
self.write({
'state': 'cancel',
+4 -4
View File
@@ -304,8 +304,8 @@ class PaymentTxOgone(models.Model):
})
vals.update(payment_token_id=pm.id)
self.write(vals)
if self.callback_eval:
safe_eval(self.callback_eval, {'self': self})
if self.sudo().callback_eval:
safe_eval(self.sudo().callback_eval, {'self': self})
return True
elif status in self._ogone_cancel_tx_status:
self.write({
@@ -410,8 +410,8 @@ class PaymentTxOgone(models.Model):
'name': tree.get('CARDNO'),
})
self.write({'payment_token_id': pm.id})
if self.callback_eval:
safe_eval(self.callback_eval, {'self': self})
if self.sudo().callback_eval:
safe_eval(self.sudo().callback_eval, {'self': self})
return True
elif status in self._ogone_cancel_tx_status:
self.write({
+2 -2
View File
@@ -140,8 +140,8 @@ class PaymentTransactionStripe(models.Model):
'date_validate': fields.datetime.now(),
'acquirer_reference': tree.get('id'),
})
if self.callback_eval:
safe_eval(self.callback_eval, {'self': self})
if self.sudo().callback_eval:
safe_eval(self.sudo().callback_eval, {'self': self})
return True
else:
error = tree['error']['message']