Skip to content

Commit 8832727

Browse files
Fixes per feedback
1 parent 1e2ac41 commit 8832727

File tree

4 files changed

+31
-41
lines changed

4 files changed

+31
-41
lines changed

app/config/routing.yml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,6 @@ fos_user_change_password:
4646
resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
4747
prefix: /{_locale}/profile
4848

49-
# users:
50-
# resource: "@ApiBundle/Resources/config/user_routes.yml"
51-
# type: rest
52-
# prefix: /api
53-
# methods: GET|POST
54-
5549
NelmioApiDocBundle:
5650
resource: "@NelmioApiDocBundle/Resources/config/routing.yml"
5751
prefix: /api/doc

src/ApiBundle/Controller/Admin/UserController.php

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,18 @@ public function newAction(Request $request)
5151
$user = new User();
5252
$user->setRoles(['ROLE_USER', 'ROLE_API']);
5353
$form = $this->createForm(UserType::class, $user);
54+
$locale = $request->getLocale();
5455

5556
$form->handleRequest($request);
5657

5758
if ($form->isSubmitted() && $form->isValid()) {
5859
try {
59-
$this->validateUsername($form, $request, new User());
60-
$this->validatePassword($form, $request);
61-
$this->validateEmail($form, $request, new User());
62-
$this->validateFirstname($form, $request);
63-
$this->validateDob($form, $request);
64-
$this->validateRoles($form, $request);
60+
$this->validateUsername($form, $locale, new User());
61+
$this->validatePassword($form, $locale);
62+
$this->validateEmail($form, $locale, new User());
63+
$this->validateFirstname($form, $locale);
64+
$this->validateDob($form, $locale);
65+
$this->validateRoles($form, $locale);
6566

6667
// Everything ok, now proceed to create the user
6768
$userManager = $this->container->get('fos_user.user_manager');
@@ -131,17 +132,18 @@ public function editAction(User $user, Request $request)
131132

132133
$editForm = $this->createForm(UserType::class, $user);
133134
$deleteForm = $this->createDeleteForm($user);
135+
$locale = $request->getLocale();
134136

135137
$editForm->handleRequest($request);
136138

137139
if ($editForm->isSubmitted() && $editForm->isValid()) {
138140
try {
139-
$this->validateUsername($editForm, $request, $user);
140-
$this->validatePassword($editForm, $request);
141-
$this->validateEmail($editForm, $request, $user);
142-
$this->validateFirstname($editForm, $request);
143-
$this->validateDob($editForm, $request);
144-
$this->validateRoles($editForm, $request);
141+
$this->validateUsername($editForm, $locale, $user);
142+
$this->validatePassword($editForm, $locale);
143+
$this->validateEmail($editForm, $locale, $user);
144+
$this->validateFirstname($editForm, $locale);
145+
$this->validateDob($editForm, $locale);
146+
$this->validateRoles($editForm, $locale);
145147

146148
$user->setFirstname($editForm['firstname']->getData());
147149
$user->setLastname($editForm['lastname']->getData());
@@ -183,12 +185,12 @@ public function editAction(User $user, Request $request)
183185
/**
184186
* Validate username
185187
*/
186-
private function validateUsername(\Symfony\Component\Form\Form $form, Request $request, User $user) {
188+
private function validateUsername(\Symfony\Component\Form\Form $form, $locale, User $user) {
187189
$username = $form['username']->getData();
188190

189191
// Check if username is empty
190192
if (null == $username) {
191-
$this->logMessageAndFlash(400, 'danger', 'Empty username', $this->get('translator')->trans('api.show_error_username_missing', array(), 'messages', $request->getLocale()), $request->getLocale());
193+
$this->logMessageAndFlash(400, 'danger', 'Empty username', $this->get('translator')->trans('api.show_error_username_missing', array(), 'messages', $locale), $locale);
192194
}
193195

194196
// If the username belongs to same user, no need to further check
@@ -197,80 +199,80 @@ private function validateUsername(\Symfony\Component\Form\Form $form, Request $r
197199
/** @var $user UserInterface */
198200
$user = $this->container->get('fos_user.user_manager')->findUserByUsernameOrEmail($username);
199201
if (null != $user) {
200-
$this->logMessageAndFlash(400, 'danger', 'User already exists. Username: '.$user->getUsername(), $this->get('translator')->trans('api.show_error_username_taken', array(), 'messages', $request->getLocale()), $request->getLocale());
202+
$this->logMessageAndFlash(400, 'danger', 'User already exists. Username: '.$user->getUsername(), $this->get('translator')->trans('api.show_error_username_taken', array(), 'messages', $locale), $locale);
201203
}
202204
}
203205
}
204206

205207
/**
206208
* Validate password
207209
*/
208-
private function validatePassword(\Symfony\Component\Form\Form $form, Request $request) {
210+
private function validatePassword(\Symfony\Component\Form\Form $form, $locale) {
209211
$password = $form['password']->getData();
210212

211213
// Check if password is empty
212214
if (null == $password) {
213-
$this->logMessageAndFlash(400, 'danger', 'Invalid empty password', $this->get('translator')->trans('api.show_error_password', array(), 'messages', $request->getLocale()), $request->getLocale());
215+
$this->logMessageAndFlash(400, 'danger', 'Invalid empty password', $this->get('translator')->trans('api.show_error_password', array(), 'messages', $locale), $locale);
214216
}
215217
}
216218

217219
/**
218220
* Validate email
219221
*/
220-
private function validateEmail(\Symfony\Component\Form\Form $form, Request $request, User $user) {
222+
private function validateEmail(\Symfony\Component\Form\Form $form, $locale, User $user) {
221223
$email = $form['email']->getData();
222224

223225
// Check if email is valid
224226
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
225-
$this->logMessageAndFlash(400, 'danger', 'Invalid email: '.$email, $this->get('translator')->trans('api.show_error_email', array(), 'messages', $request->getLocale()), $request->getLocale());
227+
$this->logMessageAndFlash(400, 'danger', 'Invalid email: '.$email, $this->get('translator')->trans('api.show_error_email', array(), 'messages', $locale), $locale);
226228
}
227229

228230
// If the email belongs to same user, no need to further check
229231
if (!($user->getEmail() == $email )) {
230232
$user = $this->container->get('fos_user.user_manager')->findUserByUsernameOrEmail($email);
231233
if (null != $user) {
232-
$this->logMessageAndFlash(400, 'danger', 'Email '.$user->getEmail().' already taken by Username: '.$user->getUsername(), $this->get('translator')->trans('api.show_error_email_taken', array(), 'messages', $request->getLocale()), $request->getLocale());
234+
$this->logMessageAndFlash(400, 'danger', 'Email '.$user->getEmail().' already taken by Username: '.$user->getUsername(), $this->get('translator')->trans('api.show_error_email_taken', array(), 'messages', $locale), $locale);
233235
}
234236
}
235237
}
236238

237239
/**
238240
* Validate firstname
239241
*/
240-
private function validateFirstname(\Symfony\Component\Form\Form $form, Request $request) {
242+
private function validateFirstname(\Symfony\Component\Form\Form $form, $locale) {
241243
$firstname = $form['firstname']->getData();
242244

243245
// Check if firstname is empty. At least firstname is required.
244246
if (null == $firstname) {
245-
$this->logMessageAndFlash(400, 'danger', 'Invalid empty firstname', $this->get('translator')->trans('api.show_error_firstname', array(), 'messages', $request->getLocale()), $request->getLocale());
247+
$this->logMessageAndFlash(400, 'danger', 'Invalid empty firstname', $this->get('translator')->trans('api.show_error_firstname', array(), 'messages', $locale), $locale);
246248
}
247249

248250
}
249251

250252
/**
251253
* Validate dob
252254
*/
253-
private function validateDob(\Symfony\Component\Form\Form $form, Request $request) {
255+
private function validateDob(\Symfony\Component\Form\Form $form, $locale) {
254256
$dob = $form['dob']->getData();
255257

256258
// Check if dob is valid
257259
list($mm,$dd,$yyyy) = explode('/', $dob->format('m/d/Y') );
258260
if (!checkdate($mm,$dd,$yyyy)) {
259-
$this->logMessageAndFlash(400, 'danger', 'Invalid mm/dd/yyyy DOB: '.$dob, $this->get('translator')->trans('api.show_error_dob', array(), 'messages', $request->getLocale()), $request->getLocale());
261+
$this->logMessageAndFlash(400, 'danger', 'Invalid mm/dd/yyyy DOB: '.$dob, $this->get('translator')->trans('api.show_error_dob', array(), 'messages', $locale), $locale);
260262
}
261263
}
262264

263265
/**
264266
* Validate roles
265267
*/
266-
private function validateRoles(\Symfony\Component\Form\Form $form, Request $request) {
268+
private function validateRoles(\Symfony\Component\Form\Form $form, $locale) {
267269
$roles = $form['roles']->getData();
268270
$permittedRoles = ['ROLE_API', "ROLE_USER"];
269271

270272
foreach ($roles as $role) {
271273
// Check if role is valid
272274
if (!in_array($role, $permittedRoles) )
273-
$this->logMessageAndFlash(400, 'warning', 'Invalid role: '.$role, $this->get('translator')->trans('api.show_error_role'.' '.$role, array(), 'messages', $request->getLocale()), $request->getLocale());
275+
$this->logMessageAndFlash(400, 'warning', 'Invalid role: '.$role, $this->get('translator')->trans('api.show_error_role'.' '.$role, array(), 'messages', $locale), $locale);
274276
}
275277
}
276278

src/ApiBundle/Entity/User.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,8 @@ public function getDob()
8989

9090
public function setDob($dob)
9191
{
92-
if (is_string($dob)) { // from API
93-
$this->dob = new \DateTime($dob);
94-
} else { // From Web form
95-
$this->dob = $dob;
96-
}
92+
// $dob is string from API and datetime object from web
93+
$this->dob = is_string($dob) ? new \DateTime($dob) : $dob;
9794

9895
return $this;
9996
}
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
# # users_routes:
2-
# resource: "@ApiBundle/Controller/UserController.php"
3-
# type: rest
4-
# name_prefix: api_
1+

0 commit comments

Comments
 (0)