File tree Expand file tree Collapse file tree 2 files changed +18
-0
lines changed
app/controllers/spree/api Expand file tree Collapse file tree 2 files changed +18
-0
lines changed Original file line number Diff line number Diff line change @@ -112,12 +112,19 @@ def mine
112
112
def order_params
113
113
if params [ :order ]
114
114
normalize_params
115
+ prevent_customer_metadata_update
115
116
params . require ( :order ) . permit ( permitted_order_attributes )
116
117
else
117
118
{ }
118
119
end
119
120
end
120
121
122
+ def prevent_customer_metadata_update
123
+ return unless @order &.completed? && cannot? ( :admin , Spree ::Order )
124
+
125
+ params [ :order ] . delete ( :customer_metadata ) if params [ :order ]
126
+ end
127
+
121
128
def normalize_params
122
129
if params [ :order ] [ :payments ]
123
130
payments_params = params [ :order ] . delete ( :payments )
Original file line number Diff line number Diff line change @@ -128,6 +128,17 @@ module Spree::Api
128
128
129
129
expect ( json_response ) . not_to have_key ( 'admin_metadata' )
130
130
end
131
+
132
+ it "cannot update customer metadata if the order is complete" do
133
+ order = create ( :order )
134
+ order . completed_at = Time . current
135
+ order . state = 'complete'
136
+ order . save!
137
+
138
+ put spree . api_order_path ( order ) , params : { order : attributes_with_metadata }
139
+
140
+ expect ( json_response [ 'customer_metadata' ] ) . to eq ( { } )
141
+ end
131
142
end
132
143
133
144
context "when the current user can administrate the order" do
You can’t perform that action at this time.
0 commit comments