[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:
@@ -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',
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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']
|
||||
|
||||
Reference in New Issue
Block a user