Skip to content

Commit afbc9e4

Browse files
Merge Conflict resolved
2 parents ad81fab + cee23db commit afbc9e4

File tree

7 files changed

+88
-35
lines changed

7 files changed

+88
-35
lines changed

src/ApiBundle/Controller/Admin/UserController.php

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,17 @@ public function indexAction()
5151
*/
5252
public function newAction(Request $request)
5353
{
54-
$user = new User();
54+
$userManager = $this->container->get('fos_user.user_manager');
55+
$user = $userManager->createUser();
5556
$user->setRoles(['ROLE_USER', 'ROLE_API']);
57+
5658
$form = $this->createForm(UserType::class, $user);
59+
5760
$locale = $request->getLocale();
5861

5962
$form->handleRequest($request);
6063

6164
if ($form->isSubmitted() && $form->isValid()) {
62-
$userManager = $this->container->get('fos_user.user_manager');
63-
$user = $userManager->createUser();
64-
6565
// $file stores the uploaded Image file
6666
/** @var Symfony\Component\HttpFoundation\File\UploadedFile $file */
6767
$file = $user->getImage();
@@ -85,7 +85,6 @@ public function newAction(Request $request)
8585

8686
$this->logMessageAndFlash(200, 'success', 'User successfully created: ', $this->get('translator')->trans('flash.user_creatd_successfully'), $request->getLocale() );
8787

88-
8988
return $this->redirectToRoute('admin_user_index');
9089
}
9190

@@ -215,7 +214,7 @@ private function setUserData(User $user, \Symfony\Component\Form\Form $form)
215214
$user->setDob($form['dob']->getData());
216215
$user->setEmail($form['email']->getData());
217216
$user->setUsername($form['username']->getData());
218-
$user->setPlainPassword($form['password']->getData());
217+
$user->setPlainPassword($form['plainPassword']->getData());
219218
$user->setRoles($form['roles']->getData());
220219
$user->setConfirmationToken(null);
221220
$user->setEnabled(true);

src/ApiBundle/Controller/AuthController.php

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,12 @@ public function postRegisterAction(Request $request)
240240
$request = $this->container->get('request');
241241
$userManager = $this->get('fos_user.user_manager');
242242

243+
// TODO: Why this validation is not working in Validation.yml for dob
244+
$timestamp = strtotime($request->request->get('dob'));
245+
if (!$timestamp) {
246+
$this->logAndThrowError(400, 'Date of Birth should be in MM/DD/YYYY format.', $this->get('translator')->trans('api.show_error_dob', array(), 'messages', $request->getLocale()), $request->getLocale());
247+
}
248+
243249
$user = $userManager->createUser();
244250

245251
// $file stores the uploaded Image file
@@ -270,7 +276,7 @@ public function postRegisterAction(Request $request)
270276

271277
// Validate user data
272278
$validator = $this->get('validator');
273-
$errors = $validator->validate($user);
279+
$errors = $validator->validate($user, null, array('Registration', 'profile_edit'));
274280

275281
if (count($errors) > 0) {
276282
return $this->reportValidationErrors($errors, $request->getLocale());
@@ -366,9 +372,17 @@ public function editPasswordAction()
366372
}
367373

368374
$user->setPlainPassword($password);
369-
$msg = 'Password changed successfully';
375+
376+
// Validate user data
377+
$validator = $this->get('validator');
378+
$errors = $validator->validate($user, null, array('profile_edit_password'));
379+
380+
if (count($errors) > 0) {
381+
return $this->reportValidationErrors($errors, $request->getLocale());
382+
}
370383

371384
$userManager->updateUser($user);
385+
$msg = 'Password changed successfully';
372386

373387
$this->logMessage(200, $msg.' for '.$user->getUsername());
374388

@@ -553,6 +567,12 @@ public function editProfileAction()
553567
$dob = array_key_exists('dob', $data) ? $data['dob'] : $user->getDob();
554568
$user->setDob($dob);
555569

570+
// TODO: Why this validation is not working in Validation.yml for dob
571+
$timestamp = strtotime($dob);
572+
if ($dob && !$timestamp) {
573+
$this->logAndThrowError(400, 'Date of Birth should be in MM/DD/YYYY format.', $this->get('translator')->trans('api.show_error_dob', array(), 'messages', $request->getLocale()), $request->getLocale());
574+
}
575+
556576
// Validate user data
557577
$validator = $this->get('validator');
558578
$errors = $validator->validate($user, null, array('profile_edit'));

src/ApiBundle/Form/UserType.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)
3232
->add('email', EmailType::class)
3333
->add('dob', DateType::class, array('widget' => 'single_text', 'format' => 'M/d/y'))
3434
->add('username', TextType::class)
35-
->add('password', TextType::class)
35+
->add('plainPassword', PasswordType::class, array('data' => ''))
3636
->add('roles', CollectionType::class, array(
3737
'entry_type' => ChoiceType::class,
3838
'entry_options' => array(
@@ -51,8 +51,9 @@ public function buildForm(FormBuilderInterface $builder, array $options)
5151
public function configureOptions(OptionsResolver $resolver)
5252
{
5353
$resolver->setDefaults(array(
54-
'data_class' => User::class,
55-
'csrf_protection' => true
54+
'data_class' => 'ApiBundle\Entity\User',
55+
'csrf_protection' => true,
56+
'validation_groups' => array('Registration', 'profile_edit')
5657
));
5758
}
5859

src/ApiBundle/Resources/config/config.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,7 @@ fos_rest:
4343

4444
fos_user:
4545
db_driver: orm
46-
firewall_name: main # Seems to be used when registering user/reseting password,
47-
# but since there is no "login", as so it seems to be useless in
48-
# our particular context, but still required by "FOSUserBundle"
46+
firewall_name: main
4947
user_class: ApiBundle\Entity\User
5048

5149
fos_oauth_server:

src/ApiBundle/Resources/config/validation.yml

Lines changed: 48 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,46 +14,65 @@ ApiBundle\Entity\User:
1414
properties:
1515
firstname:
1616
- NotBlank:
17-
groups: ['Default', 'profile_edit']
17+
groups: [profile_edit]
1818
message: "user.show_error_firstname"
1919
payload:
2020
api_error: 'api.show_error_firstname'
21+
dob:
22+
- Date:
23+
groups: [profile_edit]
24+
message: "user.show_error_dob"
25+
payload:
26+
api_error: 'api.show_error_dob'
2127
username:
22-
- Regex:
23-
pattern: '/^[a-z0-9_-]{3,16}$/'
24-
match: true
28+
- NotBlank:
29+
groups: [Registration, Profile]
2530
message: "user.show_error_username_policy"
2631
payload:
2732
api_error: 'api.show_error_username_policy'
28-
password:
2933
- Regex:
30-
pattern: '/^([a-zA-Z0-9@*#]{8,15})$/'
34+
groups: [Registration, Profile]
35+
pattern: '/^[a-z0-9_-]{3,16}$/'
3136
match: true
32-
message: "user.show_error_password_policy"
37+
message: "user.show_error_username_policy"
3338
payload:
34-
api_error: 'api.show_error_password_policy'
39+
api_error: 'api.show_error_username_policy'
3540
email:
36-
- Email:
41+
- NotBlank:
42+
groups: [Registration, Profile]
3743
message: "user.show_error_email"
44+
payload:
45+
api_error: 'api.show_error_email'
46+
- Email:
47+
groups: [Registration, Profile]
3848
checkMX: false
49+
message: "user.show_error_email"
3950
payload:
4051
api_error: 'api.show_error_email'
41-
dob:
42-
- Date:
43-
groups: ['Default', 'profile_edit']
44-
message: "user.show_error_dob"
52+
plainPassword:
53+
- NotBlank:
54+
groups: [profile_edit_password, Registration]
55+
message: "user.show_error_password_policy"
4556
payload:
46-
api_error: 'api.show_error_dob'
57+
api_error: 'api.show_error_password_policy'
58+
- Regex:
59+
groups: [profile_edit_password, Registration, Profile]
60+
pattern: '/^([a-zA-Z0-9@*#]{8,15})$/'
61+
match: true
62+
message: "user.show_error_password_policy"
63+
payload:
64+
api_error: 'api.show_error_password_policy'
4765
roles:
4866
- Choice:
67+
groups: [profile_roles]
4968
choices: ['ROLE_USER', 'ROLE_API']
5069
multiple: true
5170
message: "user.show_error_role"
5271
payload:
5372
api_error: 'api.show_error_role'
5473
image:
5574
- Image:
56-
groups: ['Default', 'profile_pic']
75+
groups: [profile_pic]
5776
mimeTypes: ["image/jpeg", "image/jpg", "image/gif", "image/png"]
5877
mimeTypesMessage: Please upload a valid Image (jpeg/jpg/gif/png only within 1024k size
5978
maxSize: 1024k
@@ -63,3 +82,17 @@ ApiBundle\Entity\User:
6382
maxHeight: 300
6483
payload:
6584
api_error: 'api.show_error_image'
85+
86+
FOS\UserBundle\Form\Model\ChangePassword:
87+
properties:
88+
new:
89+
- NotBlank:
90+
message: "user.show_error_password_policy"
91+
payload:
92+
api_error: 'api.show_error_password_policy'
93+
- Regex:
94+
pattern: '/^([a-zA-Z0-9@*#]{8,15})$/'
95+
match: true
96+
message: "user.show_error_password_policy"
97+
payload:
98+
api_error: 'api.show_error_password_policy'

src/ApiBundle/Resources/views/admin/user/edit.html.twig

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<h1>{{ 'title.edit_user'|trans({'%id%': user.id}) }}</h1>
77

88
{{ form_start(edit_form, { attr: attr|default({}) }) }}
9+
{{ form_errors(edit_form) }}
910
<table class="table">
1011
<tbody>
1112
<tr>
@@ -45,21 +46,21 @@
4546
<th scope="row">{{ 'label.user_email'|trans }}</th>
4647
<td>
4748
{{ form_errors(edit_form.email) }}
48-
{{ form_widget(edit_form.email) }}
49+
{{ form_widget(edit_form.email, { 'attr':{'readonly':'readonly'} }) }}
4950
</td>
5051
</tr>
5152
<tr>
5253
<th scope="row">{{ 'label.user_username'|trans }}</th>
5354
<td>
5455
{{ form_errors(edit_form.username) }}
55-
{{ form_widget(edit_form.username) }}
56+
{{ form_widget(edit_form.username, { 'attr':{'readonly':'readonly'} }) }}
5657
</td>
5758
</tr>
5859
<tr>
5960
<th scope="row">{{ 'label.user_password'|trans }}</th>
6061
<td>
61-
{{ form_errors(edit_form.password) }}
62-
{{ form_widget(edit_form.password) }}
62+
{{ form_errors(edit_form.plainPassword) }}
63+
{{ form_widget(edit_form.plainPassword) }}
6364
</td>
6465
</tr>
6566
<tr>

src/ApiBundle/Resources/views/admin/user/new.html.twig

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<h1>{{ 'title.user_new'|trans }}</h1>
77

88
{{ form_start(form, { attr: attr|default({}) }) }}
9+
{{ form_errors(form) }}
910
<table class="table">
1011
<tbody>
1112
<tr>
@@ -53,8 +54,8 @@
5354
<tr>
5455
<th scope="row">{{ 'label.user_password'|trans }}</th>
5556
<td>
56-
{{ form_errors(form.password) }}
57-
{{ form_widget(form.password) }}
57+
{{ form_errors(form.plainPassword) }}
58+
{{ form_widget(form.plainPassword) }}
5859
</td>
5960
</tr>
6061
<tr>

0 commit comments

Comments
 (0)