Commit Graph

10242 Commits

Author SHA1 Message Date
Luis Ramos
327d6c43d9 Merge pull request #4084 from openfoodfoundation/dependabot/bundler/devise-3.5.10
[Security] Bump devise from 2.2.8 to 3.5.10
2020-08-01 15:55:19 +01:00
Luis Ramos
cc7363d9e7 Merge pull request #5824 from luisramos0/improve_checkout
Reset order state to cart in case the stripe SCA authorization step fails
2020-08-01 15:53:41 +01:00
Luis Ramos
b025d5a600 Merge pull request #5822 from luisramos0/improve_ocs_perf
Performance improvement of the outgoing products page when editing OCs
2020-07-31 16:07:16 +01:00
Luis Ramos
2aa6c70dc6 Remove select from relation
This relation is only used above for a call to empty? so we don't need to worry about the select part of the query, specially not introducing an expensive DISTINCT
2020-07-31 09:26:04 +01:00
Luis Ramos
d052a7b796 Verify the user is confirmed before returning a reset password token
Co-authored-by: Maikel <maikel@email.org.au>
2020-07-31 09:14:07 +01:00
Luis Ramos
7c498a573c Make shopfront redirect work when logging out by storing it outside session data 2020-07-31 09:05:42 +01:00
Luis Ramos
86afa6f413 Adapt to devise 3.2 and use after_confirmation callback to send welcome email 2020-07-31 09:05:42 +01:00
Luis Ramos
0f29806198 Adapt code to devise 3.2 where the reset_password_token stored in the db is a encrypted version of the token sent in the email
In this particular case, the user confirmations controller is redirecting to the reset password page but it doesnt know what is the raw reset_password_token

So we regenerate the reset password token so that it can know what's the raw value for the redirect

The method User#regenerate_reset_password_token is a proxy to the protected method in Devise::Recoverable
2020-07-31 09:05:42 +01:00
Luis Ramos
a2ae78bde9 Replay commit from spree_auth_devise that upgrades to devise 3
fe7941f674
2020-07-31 09:05:42 +01:00
Luis Ramos
26ca374a76 Adpat user mailer to devise v3 2020-07-31 09:05:42 +01:00
Luis Ramos
1e9b11d209 Merge pull request #5807 from romale/patch-5
Add Russian to list of momentJS locales
2020-07-30 19:01:38 +01:00
Luis Ramos
df465cf45b Merge pull request #5698 from rmklaus12/5575-backofficepay-missing-translation
Added translation key to locale/en.yml for backoffice admin payment
2020-07-30 19:01:11 +01:00
Luis Ramos
fbc7eea1a5 Merge pull request #5811 from jttyeung/master
Fix #5730 content header overlap with long product names
2020-07-30 17:53:09 +01:00
Luis Ramos
0359d103b2 Improve code comments on dodgy and/but critical checkout process method 2020-07-30 17:18:34 +01:00
Luis Ramos
2136eecd09 Avoid reloading the payment every time, so that in-memory data is not wiped out
When checkout fails and the payment states dont match (inside the if), in-memory data of the failed payment can be lost but updating the payment state is the fundamental part here so that further checkout attempts work. We may improve this update statement so that all the data of the failed payment is persisted
2020-07-29 22:50:30 +01:00
Luis Ramos
9e9e0d0bd8 Remove rescue_from and just add the rescue to the edit action, the update action has a different logic where there is a generic rescue StandardError after the GatewayError rescue 2020-07-29 22:50:25 +01:00
Luis Ramos
da4abf6617 Add a comment to explain the necessity of the first rescue in the update action 2020-07-29 22:50:20 +01:00
Luis Ramos
ad00971ca8 Improve readability and add bugsnag error (now in the checkout_failed method) when checkout_fails while handling stripe redirect 2020-07-29 22:50:18 +01:00
Pau Pérez Fabregat
e9787552c8 Merge pull request #5713 from Matt-Yorkley/taxon-icons
Remove taxon icons
2020-07-29 18:43:06 +02:00
Pau Perez
84178c637e Add missing momentjs languages to back-office 2020-07-29 13:02:46 +02:00
Pau Perez
9bf58a8258 Add missing Catalan, Arabic & Turkish for momentjs 2020-07-29 12:53:34 +02:00
Maikel Linke
fe0c04b650 Complete renaming of AdvanceOrderService to OrderWorkflow 2020-07-29 12:24:18 +10:00
Luis Ramos
07005594ff Move payments persistence code to order workflow service 2020-07-28 23:56:43 +01:00
Luis Ramos
ac5882e3e6 Refactor OrderWorkflow 2020-07-28 23:55:36 +01:00
Luis Ramos
9cbcf14485 Move shipping method id setting code to OrderWorkflow service 2020-07-28 23:50:47 +01:00
Luis Ramos
c3f99050fd Move advance_order_state from checkout_controller to OrderWorkflow service 2020-07-28 23:43:07 +01:00
Luis Ramos
26eee4631f Rename AdvanceOrderService to OrderWorkflow 2020-07-28 23:40:49 +01:00
Luis Ramos
734fce5ce7 Add code to persist payments after failed payments. The state machine
rollbacks the transactions, with this we keep record of what went wrong.
2020-07-28 23:29:49 +01:00
Luis Ramos
e99f0dc6b7 Rubocop autocorrect and easy rubocop issues 2020-07-28 23:29:49 +01:00
Luis Ramos
d8a96c9d34 Bring order checkout workflow and some of its specs from spree_core 2020-07-28 23:29:49 +01:00
Luis Ramos
ec0d06af54 Reuse update_failed method as the code needed is exactly the same 2020-07-25 19:39:46 +01:00
Luis Ramos
b23b707b5d Notify bugsnag and execute post checkout actions (reset to cart state) whenever there's a payment gateway exceeption raised 2020-07-25 19:39:46 +01:00
Luis Ramos
1bf946d124 Reused code in checkout controller, the reponse for the case when there is a stripe exception anywhere is the same as when the update action fails 2020-07-25 19:39:46 +01:00
Luis Ramos
5266d95910 Move method closer to related/similar methods 2020-07-25 19:39:46 +01:00
Luis Ramos
752d9e9bb8 Merge pull request #5806 from openfoodfoundation/bring-in-payment-model
Bring in payment model
2020-07-24 14:52:20 +01:00
Luis Ramos
32d45f6fe5 Merge pull request #5747 from mbudm/issue/5434
Make keyboard UI close on iOS when done searching
2020-07-24 13:25:39 +01:00
Pau Perez
97f551a2dd Replace literal with AR's 4 #not 2020-07-23 20:24:31 +02:00
Pau Perez
357037e429 Recalculate adjustments when invalidating payments
Switching from `#invalidate` to `#update_column` skipped both
validations and callbacks and thus, `#ensure_correct_adjustments` was no
longer called for older payments.
2020-07-23 20:24:31 +02:00
Pau Perez
e6943ce554 Fix simple Rubocop issues 2020-07-23 20:24:31 +02:00
Pau Perez
4d9fbb68d6 Add missing attribute to skip source validation 2020-07-23 20:24:31 +02:00
Pau Perez
813459ee38 Clarify method documentation 2020-07-23 20:24:31 +02:00
Pau Perez
c0f72f89f2 Handle #refund! as we do with #credit! 2020-07-23 20:24:31 +02:00
Pau Perez
0f0a704147 Skip source validation when applying credit
The original payment may not be valid because its credit card may be
expired. Stripe gives this as a valid scenario returning a success and
we should do too.

When creating the credit payment we end up validating all sources in
a chain as follows.

```
Payment being persisted -> source payment -> original credit card.
```

The source payment was valid when created (It would not be persisted
otherwise) but its source card may now be expired, and that's legit.

There was also an issue with the `#invalidate_old_payments` callback. It
was causing the original payment to be validated again and thus the
credit payment failed to be persisted due to the original credit card
being expired. Switching this callback to use `#update_column` skips
validations and so we don't validate the source payment. We only care
about the state there, so it should be fine.
2020-07-23 20:24:31 +02:00
Pau Perez
f2b28a198d Replace before_validation with custom validation
No reason to use a callback when custom validation methods can be
defined.
2020-07-23 20:24:31 +02:00
Pau Perez
59da07de66 Handle all errors when dealing with payment event
This basically catches ActiveRecord::RecordInvalid caused by an invalid
credit record, for instance, but also other situations we haven't
forseen.
2020-07-23 20:24:31 +02:00
Pau Perez
6ca6938df4 Merge branch 'master' into bring-in-payment-model
* master: (91 commits)
  Bump ddtrace from 0.37.0 to 0.38.0
  Add spec to cover SQL query issue with OCs where the only products from the coordinator inventory are renderer
  Remove unnecessary order statement, the relation will only be used for counting products
  Move select out of scope visible_for because it is breaking exchange_product queries and it's just not needed there. The only other use of this product's scope visible_for is the enterprise serializer so we add the select to it.
  Make OC advanced settings work by permitting the extra parameter
  Remove conflicting and duplicate route
  Bump bugsnag from 6.13.1 to 6.14.0
  Make charges update method update the first pending payment
  Move require_login_then_redirect_to to the only place where it is called
  Make broken spec fail reliably and set it pending
  Updating translations for config/locales/en_GB.yml
  Update all locales with the latest Transifex translations
  Doc defensive coding needed by pin payments
  Make method a little simple by extracting method
  Simplify spec, the 2 minutes wait is not necessary anylonger
  Make unauthorized in ControllerHelpers::Auth the same as in Spree::Admin::BaseController
  Move unauthorized view to HomeController only, all other calls to unauthorized will go through Auth which will redirect to the home controller IF the user is logged in or to login if user is not logged in
  Adapt specs to the move of unauthorized route from the spree routes to the main app routes
  Delete spree_user_signup which is from spree promotions code that we dont use
  Remove try_spree_current_user
  ...
2020-07-23 20:20:43 +02:00
Joanne Yeung
abc132d3db Remove trailing whitespace 2020-07-23 09:37:10 -06:00
Joanne Yeung
b16f486dcc Address missing semi-colon 2020-07-23 09:25:56 -06:00
Luis Ramos
6cc91d457e Merge pull request #5796 from coopdevs/remove-conlicting-spree-route
Remove conflicting and duplicate route
2020-07-23 14:29:12 +01:00
Luis Ramos
438aef1e7a Merge pull request #5798 from luisramos0/payment_fees_master
Make charges update method update the first pending payment
2020-07-23 14:23:03 +01:00