@@ -156,6 +156,7 @@ class UsersController extends AppController
156156 // Service handles all email complexity
157157 $emails->sendWelcome($user);
158158 $this->Flash->success('Registration successful!');
159+
159160 return $this->redirect(['action' => 'login']);
160161 }
161162 }
@@ -171,6 +172,9 @@ class UsersController extends AppController
171172 if ($user) {
172173 $token = $this->Users->generateResetToken($user);
173174 $emails->sendPasswordReset($user, $token);
175+ } else {
176+ // Generate dummy token to prevent timing attacks
177+ hash('sha256', $email . Security::randomBytes(32));
174178 }
175179
176180 // Always show success to prevent email enumeration
@@ -253,7 +257,7 @@ class OrdersController extends AppController
253257{
254258 public function checkout(PaymentService $payments)
255259 {
256- $order = $this->Orders->get ($this->request->getQuery('order_id'));
260+ $order = $this->Orders->getOrFail ($this->request->getQuery('order_id'));
257261
258262 $result = $payments->processOrder($order);
259263
@@ -353,7 +357,7 @@ class DocumentsController extends AppController
353357 'url' => $storage->url($path),
354358 ]);
355359
356- $this->Documents->save ($document);
360+ $this->Documents->saveOrFail ($document);
357361 $this->Flash->success('Document uploaded successfully');
358362 }
359363 }
0 commit comments