Skip to content

Commit 523a677

Browse files
Profile pic validation before saving added
1 parent 04799ca commit 523a677

File tree

6 files changed

+45
-50
lines changed

6 files changed

+45
-50
lines changed

src/ApiBundle/Controller/Admin/UserController.php

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use Symfony\Component\HttpFoundation\File\UploadedFile;
1919
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
2020
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
21+
use Symfony\Component\Validator\Constraints as Assert;
2122

2223
/**
2324
* Controller used to manage user contents in the backend.
@@ -84,7 +85,7 @@ public function newAction(Request $request)
8485
// If a file has been uploaded
8586
if ( null != $file ) {
8687
// First validate uploaded image. If errors found, return to same page with flash errors
87-
$imageErrors = $this->validateImage($request);
88+
$imageErrors = $this->validateImage($file, $locale);
8889
if (!$imageErrors) {
8990
return $this->render('@ApiBundle/Resources/views/admin/user/new.html.twig', [
9091
'form' => $form->createView(),
@@ -106,7 +107,7 @@ public function newAction(Request $request)
106107

107108
$userManager->updateUser($user);
108109

109-
$this->logMessageAndFlash(200, 'success', 'User successfully created: ', $this->get('translator')->trans('flash.user_creatd_successfully'), $request->getLocale() );
110+
$this->logMessageAndFlash(200, 'success', 'User successfully created: ', $this->get('translator')->trans('flash.user_created_successfully'), $request->getLocale() );
110111

111112
return $this->redirectToRoute('admin_user_index');
112113
}
@@ -177,7 +178,7 @@ public function editAction(User $user, Request $request)
177178
// If a file has been uploaded
178179
if ( null != $file ) {
179180
// First validate uploaded image. If errors found, return to same page with flash errors
180-
$imageErrors = $this->validateImage($request);
181+
$imageErrors = $this->validateImage($file, $locale);
181182
if (!$imageErrors) {
182183
return $this->render('@ApiBundle/Resources/views/admin/user/edit.html.twig', [
183184
'user' => $user,
@@ -279,14 +280,8 @@ private function setUserProfileData(User $user, \Symfony\Component\Form\Form $fo
279280
$user->setRoles($form['roles']->getData());
280281
}
281282

282-
private function validateImage(Request $request)
283+
private function validateImage(UploadedFile $file, $locale)
283284
{
284-
$locale = $request->getLocale();
285-
286-
// $file stores the uploaded Image file
287-
/** @var Symfony\Component\HttpFoundation\File\UploadedFile $file */
288-
$file = $request->files->get('image');
289-
290285
$imageConstraint = new Assert\Image();
291286

292287
// all constraint "options" can be set this way
@@ -295,12 +290,12 @@ private function validateImage(Request $request)
295290
$imageConstraint->maxSize = 1024*1024;
296291
$imageConstraint->minWidth = 100;
297292
$imageConstraint->minHeight = 100;
298-
// $imageConstraint->payload->api_error = 'api.show_error_image';
293+
$imageConstraint->payload['api_error'] = 'api.show_error_image';
299294

300295
// use the validator to validate the value
301296
$errors = $this->get('validator')->validate($file, $imageConstraint );
302297

303-
if (0 != count($errors)) {
298+
if (count($errors)) {
304299
// this is *not* a valid image
305300
$errorArray = [];
306301
foreach ($errors as $error) {
@@ -310,7 +305,7 @@ private function validateImage(Request $request)
310305
"show_message" => $this->get('translator')->trans($constraint->payload['api_error'], array(), 'messages', $locale)
311306
);
312307
array_push($errorArray, $errorItem);
313-
$this->logMessageAndFlash(400, 'warning', $errorItem['error_description'], $this->get('translator')->trans('flash.image_error').' '.$errorItem['error_description'], $request->getLocale() );
308+
$this->logMessageAndFlash(400, 'warning', $errorItem['error_description'], $this->get('translator')->trans('flash.image_error').' '.$errorItem['error_description'], $locale );
314309
}
315310
return false;
316311
}

src/ApiBundle/Controller/AuthController.php

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -778,7 +778,7 @@ private function setUserPicData(Request $request, User $user)
778778
if ( null != $file ) {
779779
// First validate uploaded image. If errors found, return errors
780780
$imageErrors = $this->validateImage($request);
781-
if (!$imageErrors) {
781+
if ( $imageErrors ) {
782782
return $imageErrors;
783783
}
784784

@@ -813,35 +813,37 @@ private function validateImage(Request $request)
813813
$imageConstraint->maxSize = 1024*1024;
814814
$imageConstraint->minWidth = 100;
815815
$imageConstraint->minHeight = 100;
816-
// $imageConstraint->payload->api_error = 'api.show_error_image';
816+
$imageConstraint->payload['api_error'] = 'api.show_error_image';
817817

818818
// use the validator to validate the value
819819
$errors = $this->get('validator')->validate($file, $imageConstraint );
820820

821-
if (0 != count($errors)) {
822-
// this is *not* a valid image
823-
$errorArray = [];
824-
foreach ($errors as $error) {
825-
$constraint = $error->getConstraint();
826-
$errorItem = array(
827-
"error_description" => $error->getPropertyPath().': '.$error->getMessage().' '.$error->getInvalidValue(),
828-
"show_message" => $this->get('translator')->trans($constraint->payload['api_error'], array(), 'messages', $locale)
829-
);
830-
array_push($errorArray, $errorItem);
831-
$this->logMessage(400, $errorItem['error_description'] );
832-
}
821+
// If no errors, then return null
822+
if (!count($errors)) {
823+
return null;
824+
}
833825

834-
return new JsonResponse(array(
835-
"code" => 400,
836-
"error" => "Bad Request",
837-
"error_description" => $errorArray[0]['error_description'],
838-
"show_message" => $errorArray[0]['show_message'],
839-
'errors' => $errorArray
840-
));
841-
} else {
842-
// Null is returned to indicate no errors
843-
return null;
826+
$this->logMessage(400, 'Error count '.count($errors) );
827+
828+
// this is *not* a valid image
829+
$errorArray = [];
830+
foreach ($errors as $error) {
831+
$constraint = $error->getConstraint();
832+
$errorItem = array(
833+
"error_description" => $error->getPropertyPath().': '.$error->getMessage().' '.$error->getInvalidValue(),
834+
"show_message" => $this->get('translator')->trans($constraint->payload['api_error'], array(), 'messages', $locale)
835+
);
836+
array_push($errorArray, $errorItem);
837+
$this->logMessage(400, $errorItem['error_description'] );
844838
}
839+
840+
return new JsonResponse(array(
841+
"code" => 400,
842+
"error" => "Bad Request",
843+
"error_description" => $errorArray[0]['error_description'],
844+
"show_message" => $errorArray[0]['show_message'],
845+
'errors' => $errorArray
846+
));
845847
}
846848

847849
private function setUserProfileData(Request $request, User $user)
@@ -891,7 +893,7 @@ private function reportValidationErrors(User $user, $validationGroups, $locale)
891893
"error_description" => $errorArray[0]['error_description'],
892894
"show_message" => $errorArray[0]['show_message'],
893895
'errors' => $errorArray
894-
));
896+
));
895897
}
896898

897899
/**

src/ApiBundle/Controller/UserController.php

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
use Symfony\Component\HttpFoundation\File\UploadedFile;
2525

2626
use FOS\UserBundle\Model\UserInterface;
27+
use Symfony\Component\Validator\Constraints as Assert;
2728

2829
/**
2930
* Controller used to manage user contents in the backend.
@@ -73,7 +74,7 @@ public function newAction(Request $request)
7374
// If a file has been uploaded
7475
if ( null != $file ) {
7576
// First validate uploaded image. If errors found, return to same page with flash errors
76-
$imageErrors = $this->validateImage($request);
77+
$imageErrors = $this->validateImage($file, $locale);
7778
if (!$imageErrors) {
7879
return $this->render('@ApiBundle/Resources/views/user/new.html.twig', [
7980
'form' => $form->createView(),
@@ -186,7 +187,7 @@ public function editAction(User $user, Request $request)
186187
// If a file has been uploaded
187188
if ( null != $file ) {
188189
// First validate uploaded image. If errors found, return to same page with flash errors
189-
$imageErrors = $this->validateImage($request);
190+
$imageErrors = $this->validateImage($file, $locale);
190191
if (!$imageErrors) {
191192
return $this->render('@ApiBundle/Resources/views/user/edit.html.twig', [
192193
'user' => $user,
@@ -259,14 +260,8 @@ private function setUserProfileData(User $user, \Symfony\Component\Form\Form $fo
259260
$user->setEnabled(true);
260261
}
261262

262-
private function validateImage(Request $request)
263+
private function validateImage(UploadedFile $file, $locale)
263264
{
264-
$locale = $request->getLocale();
265-
266-
// $file stores the uploaded Image file
267-
/** @var Symfony\Component\HttpFoundation\File\UploadedFile $file */
268-
$file = $request->files->get('image');
269-
270265
$imageConstraint = new Assert\Image();
271266

272267
// all constraint "options" can be set this way
@@ -275,12 +270,12 @@ private function validateImage(Request $request)
275270
$imageConstraint->maxSize = 1024*1024;
276271
$imageConstraint->minWidth = 100;
277272
$imageConstraint->minHeight = 100;
278-
// $imageConstraint->payload->api_error = 'api.show_error_image';
273+
$imageConstraint->payload['api_error'] = 'api.show_error_image';
279274

280275
// use the validator to validate the value
281276
$errors = $this->get('validator')->validate($file, $imageConstraint );
282277

283-
if (0 != count($errors)) {
278+
if (count($errors)) {
284279
// this is *not* a valid image
285280
$errorArray = [];
286281
foreach ($errors as $error) {
@@ -290,7 +285,7 @@ private function validateImage(Request $request)
290285
"show_message" => $this->get('translator')->trans($constraint->payload['api_error'], array(), 'messages', $locale)
291286
);
292287
array_push($errorArray, $errorItem);
293-
$this->logMessageAndFlash(400, 'warning', $errorItem['error_description'], $this->get('translator')->trans('flash.image_error').' '.$errorItem['error_description'], $request->getLocale() );
288+
$this->logMessageAndFlash(400, 'warning', $errorItem['error_description'], $this->get('translator')->trans('flash.image_error').' '.$errorItem['error_description'], $locale );
294289
}
295290
return false;
296291
}

src/ApiBundle/Resources/translations/messages.en.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ flash:
127127
user_updated_successfully: User updated successfully!
128128
user_deleted_successfully: User deleted successfully!
129129
user_authentication_failed: User Authentication failed!
130+
image_error: Image Error!
130131
api:
131132
show_error_client_name: Sorry, Client Name cannot be empty!
132133
show_error_client_name_taken: Sorry, Client Name already taken!

src/ApiBundle/Resources/translations/messages.fr.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ flash:
115115
user_updated_successfully: Utilisateur mis à jour avec succès!
116116
user_deleted_successfully: L'utilisateur a été supprimé avec succès!
117117
user_authentication_failed: L'identification de l'utilisateur a échoué!
118+
image_error: Erreur d'image!
118119
api:
119120
show_error_client_name: Désolé, le nom du client ne peut pas être vide!
120121
show_error_client_name_taken: Désolé, Nom du client déjà pris!

src/ApiBundle/Resources/translations/messages.hi.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ flash:
115115
user_updated_successfully: प्रयोक्ता को सफलतापूर्वक अद्यतन!
116116
user_deleted_successfully: प्रयोक्ता को सफलतापूर्वक नष्ट कर दिया!
117117
user_authentication_failed: उपयोगकर्ता प्रमाणीकरण विफल रहा!
118+
image_error: छवि त्रुटि!
118119
api:
119120
show_error_client_name: क्षमा करें, क्लाइंट का नाम रिक्त नहीं हो सकता!
120121
show_error_client_name_taken: क्षमा करें, क्लाइंट का नाम पहले ही ले लिया!

0 commit comments

Comments
 (0)